2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Алгоритмы Брезенхема для гиперболы и параболы
Сообщение02.04.2008, 20:32 
Гипербола и парабола представлены в канонических видах.
Буду очень благодарна за литературу.
И не менее благодарна за подсказки.

 
 
 
 
Сообщение21.05.2008, 23:34 
Подскажите пожалуйста - с какой точки следует начинать построение гиперболы.
Я брала точку (a,0) и алгоритм строила по принципу алгоритма для эллипса, т.е. разбивала дугу на две части относительно величины угла между вектором нормали в точке и осью OX.
Вообще сомневаюсь, что нормаль при построении гиперболы дает нужный эффект.

 
 
 
 Спасибо, что меня читаете.
Сообщение24.05.2008, 23:25 
Для гиперболы алгоритм придумала, в будущем планирую издать книгу , в которой его и опубликую.
Теперь дело за параболой.
Вот думаю в каком виде взять уравнение: каноническое y^2=2px или квадратное y=ax^2+bx+c.
Склоняюсь к каноническому, потому что вершина в (0,0).
Наверное, все аналогично. Но если возникнут трудности приду порассуждать сюда.

Добавлено спустя 45 минут 44 секунды:

Парабола

Собственно пришла..
Начальная точка в вершине координат. Из каждого пикселя могу двигаться либо вверх, либо вправо, либо по диагонали (вверх-вправо). Т.е. нач точка - (x,y). Следущими могут быть (x,y+1), (x+1,y), (x+1,y+1).
Каноническое уравнение y^2-2px=0
Нахожу отклонения:
горизонтальное отклонение: S_{h}=y^2-2p(x+1)
вертикальное отклонение: S_v=(y+1)^2-2px
диагональное отклонение: S_d=(y+1)^2-2p(x+1)

Начальное отклонение при подстановке (0,0) получается S_{d}=(0+1)^2-2p(0+1)=1-2p
Если S_{d}<=0, то следующий пиксель либо диагональный, либо правый. В противном случае - либо верхний, либо диагональный.
В первом случае проверяем отклонение \Delta=|S_d|-|S_h|. Если \Delta<=0, то пиксель диагональный, если \Delta>0, то пиксель правый.
Во втором случае если \Delta=|S_v|-|S_d|<=0, то пиксель верхний, в противном случае - верхний.
Ну и считаю отклонения S_d для всех случаев.
S_{d}=S_d-2p для (x+1,y)
S_{d}=S_d-2p+2y+1 для (x+1,y+1)
S_{d}=S_d+2y+1 для (x,y+1)

И все-таки рисует не так. Наверное, в чем-то ошибка. Хотя не исключено, что все в корне не верно.

 
 
 
 
Сообщение25.05.2008, 02:48 
Нашла ошибку. Случаи в зависимости от S_d надо поменять местами.

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group