![]() |
|
|
![]()
|
|
| maxi91m |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 191 Регистрация: 14.1.2007 Где: Нижний Новгород Репутация: нет Всего: нет |
Написал программу распозвнования выражений,
Строю графики различных функций, но для построения делаю много итераций из за чего график рисуется медленно, кто может подскажет как ускорить. Вот так я вывожу
Если мало итераций то пропуски for(double i=-10;i<10;i+=0.01)//вот при таких условиях --------------------
|
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 1 Всего: 106 |
это обычная проблема при построении такого рода графиков,
статический шаг по одной оси в любом случае не дает полную картину, это только увеличивает число "пустых расчетов", которые сливаются в одну точку, можешь даже сам посчитать число таких повторов: оно будет быстро расти при уменьшении шага, при том, что детализация будет по прежнему сильно отставать, а тормоза - увеличиваться если у тебя строятся произвольные графики, то здесь расчет координат "простым проходом луча" не поможет, смотри алгоритмы по растеризации, принцип оптимизации может быть такой: если разница ординат между двумя последними итерациями меньше единицы, то нужно перевести последующие расчеты графика в область абсцисс, и так крутить расчеты, пока график не будет построен, только учти возможность зацикливания на зеркальных участках кривой вобщем, это не техническая, а алгоритмическая проблема, технически тут можно добиться точности/скорости только на некоторых видах функций Добавлено через 10 минут и 4 секунды
конечно, это с учетом шага = 1 Добавлено через 14 минут и 39 секунд больше ) -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| maxi91m |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 191 Регистрация: 14.1.2007 Где: Нижний Новгород Репутация: нет Всего: нет |
Это уже будет увесистая программа посчет алгоритмов, да и при замени осей я так думаю придется переходить к обратной функции, ну или как- то еще измудряться.
А можно как нибуть строить ввиде прямых которые будут соеденять 2 точки, пред идущею и новую? Как еще можно туда подкрутить что то вроде осей с цифирками? --------------------
|
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 1 Всего: 106 |
конечно можно,
просто замени DrawRectangle на DrawLine либо на LineTo и т.п., при использовании LineTo, поставь один вызов MoveTo на первую точку перед циклом только пропуски от этого ни куда не исчезнут, график на этих участках как был дырявым так и останется -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| maxi91m |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 191 Регистрация: 14.1.2007 Где: Нижний Новгород Репутация: нет Всего: нет |
А почему не исчезнут то, прямая тогда же станет целостной кривой?
--------------------
|
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 1 Всего: 106 |
да, но крутые повороты эта прямая будет срезать точно так же, как и точечный вариант
только это будет нагляднее -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| maxi91m |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 191 Регистрация: 14.1.2007 Где: Нижний Новгород Репутация: нет Всего: нет |
А может где есть уже реализованные методы отрисовки таких функций? Где уже все утчтено.
--------------------
|
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 1 Всего: 106 |
обрати внимание на эту тему: http://forum.vingrad.ru/forum/topic-278955...анных-окно.html
сплайны - как раз то, что подходит для таких непредсказуемых функций -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |