|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.08.2012, 00:04 | #1 |
Форумчанин
Регистрация: 15.11.2008
Сообщений: 577
|
Ускорение программы С++
Вот задача вот прямо здесь. Если коротко то нужно проверить принадлежность точки прямоугольнику.
У входного файла есть много строк типа Код:
36 69 87 85 4 точки прямоугольника. Ну вот моя программа Код:
Суть программы такова. сначала запольняеться динамический массив данных. потом идет работа по строкам сама идея в том чтоб поделить прямоугольник на 4 триугольника и пощитать их площадь и если она совпадет с площадю прямоугольника тогда точка принадлежыт прямоугольнику. Теперь больше конкретики inline float round(float r) - округление inline float lenght длина отрезка по 2 точкам inline float rectangle_square площадь прямоуголькика по 3 точкам inline float triangle_square площадь треугольника какаято хитрая формула ну вот и все если знаете как ето ускорить напишите пожалуйста или посоветуйте какойто профайлер, я понимаю что ето не та задача где ето действительно нужно но посмотреть можно. p.s. писал без транслейтера и спеллчекера поетому не сильно удивляйтесь моей неграмотности в русском языке. |
16.08.2012, 01:19 | #2 |
Форумчанин
Регистрация: 09.10.2010
Сообщений: 217
|
Можно попробовать "вращать стеку координат":
1) найти угол между Ох и любой стороной (используя арктангенс) 2) повернуть точки на найденный угол, для прямоугольника достаточно всего две противоположных (а т.к. координаты даны последовательно, то это не трудно). 3) сравнить координаты точки с этими двумя точками. Должно быть быстрее, да и проще =) И я не очень понял функцию round. Вроде самая простая реализация это Код:
Вот иллюстрация кода: Код:
Ёж птица гордая, пока не пнешь не полетит.
Последний раз редактировалось Ezhuk; 16.08.2012 в 01:57. |
16.08.2012, 01:54 | #3 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Структуры можно вернуть, на производительности это не скажется, зато читабельней будет. А вот необходимость заводить массив в дин. памяти сомнительна. Достаточно иметь переменные для всех пяти координат, ведь после того, как выясняется попал дачник на свою площадку или нет, информация об этом конкретном дачнике и его площадке боле не нужна и её можно затереть данными о следующем дачнике. Уберите одну размерность у массива и ввод данных производите в том же цикле, где и обработку
|
16.08.2012, 13:46 | #4 |
Форумчанин
Регистрация: 15.11.2008
Сообщений: 577
|
Переписывать заново программу уже не было сил, и не было необходимости. Я сделал советы которые сказал netrino и этого хватило чтобы сдать эту программу.
Код:
|
16.08.2012, 13:57 | #5 |
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ускорение макроса | ymnuhj | Microsoft Office Excel | 5 | 12.05.2012 00:48 |
Ускорение функций | nXs | Общие вопросы Delphi | 8 | 28.02.2012 18:52 |
ускорение виндовс | voland123454321 | Windows | 22 | 04.09.2010 12:16 |
ускорение компа | Dark Energy | Компьютерное железо | 4 | 14.07.2008 20:15 |
Ускорение работы с БД | za4ot | БД в Delphi | 6 | 11.07.2008 19:05 |