Для гиперболы алгоритм придумала, в будущем планирую издать книгу , в которой его и опубликую.
Теперь дело за параболой.
Вот думаю в каком виде взять уравнение: каноническое
![y^2=2px y^2=2px](https://dxdy-04.korotkov.co.uk/f/f/d/d/fdd739796f1fb2853d2ef6df821dbe5c82.png)
или квадратное
![y=ax^2+bx+c y=ax^2+bx+c](https://dxdy-04.korotkov.co.uk/f/7/0/5/705c45f4dc3c7bbca769d1e18fb824ef82.png)
.
Склоняюсь к каноническому, потому что вершина в (0,0).
Наверное, все аналогично. Но если возникнут трудности приду порассуждать сюда.
Добавлено спустя 45 минут 44 секунды:
Парабола
Собственно пришла..
Начальная точка в вершине координат. Из каждого пикселя могу двигаться либо вверх, либо вправо, либо по диагонали (вверх-вправо). Т.е. нач точка - (x,y). Следущими могут быть (x,y+1), (x+1,y), (x+1,y+1).
Каноническое уравнение
Нахожу отклонения:
горизонтальное отклонение:
вертикальное отклонение:
диагональное отклонение:
Начальное отклонение при подстановке (0,0) получается
Если
![S_{d}<=0 S_{d}<=0](https://dxdy-02.korotkov.co.uk/f/1/0/a/10a85218a089acd5cd68dae76533796d82.png)
, то следующий пиксель либо диагональный, либо правый. В противном случае - либо верхний, либо диагональный.
В первом случае проверяем отклонение
![\Delta=|S_d|-|S_h| \Delta=|S_d|-|S_h|](https://dxdy-02.korotkov.co.uk/f/5/c/9/5c94a395685ea45a953762eabaf9fc4b82.png)
. Если
![\Delta<=0 \Delta<=0](https://dxdy-03.korotkov.co.uk/f/e/f/0/ef0ccc28d7e5236318132aab274030dc82.png)
, то пиксель диагональный, если
![\Delta>0 \Delta>0](https://dxdy-04.korotkov.co.uk/f/3/e/a/3ea7fefa1f6fc0d907e126d1ee5acc3482.png)
, то пиксель правый.
Во втором случае если
![\Delta=|S_v|-|S_d|<=0 \Delta=|S_v|-|S_d|<=0](https://dxdy-03.korotkov.co.uk/f/a/e/b/aeb407e3d1c8fbf7442887c9ec915d6682.png)
, то пиксель верхний, в противном случае - верхний.
Ну и считаю отклонения
![S_d S_d](https://dxdy-01.korotkov.co.uk/f/4/3/c/43c87442b26d684a7e3bef8b1e099b5582.png)
для всех случаев.
![S_{d}=S_d-2p S_{d}=S_d-2p](https://dxdy-01.korotkov.co.uk/f/8/0/e/80e00c7b84b3bfe9bbe6b0118625985c82.png)
для (x+1,y)
![S_{d}=S_d-2p+2y+1 S_{d}=S_d-2p+2y+1](https://dxdy-01.korotkov.co.uk/f/8/8/d/88db16f18ed5b7d99fa1f446a3e60e2e82.png)
для (x+1,y+1)
![S_{d}=S_d+2y+1 S_{d}=S_d+2y+1](https://dxdy-03.korotkov.co.uk/f/2/1/2/212cb826f35dcae50c8b77af5198baa782.png)
для (x,y+1)
И все-таки рисует не так. Наверное, в чем-то ошибка. Хотя не исключено, что все в корне не верно.