Как я могу манипулировать уравнениями для алгоритма средней точки эллипса
Мой вопрос состоит в том, как и какую математику я использую, чтобы управлять уравнением эллипса, чтобы сформировать алгоритм средней точки и попытаться создать эллипс. Я получил код, но не понимаю математику, которая лежит в основе рисования эллипса на экране. Мне интересно, могут ли некоторые с опытом рассказать мне математические шаги, такие как вычитание с обеих сторон чего-то в этом направлении. Я не хочу полиномиальный метод, который решает для y и рисует первую половину, а затем еще один проход, чтобы нарисовать вторую половину. Я понимаю, что большая часть этого метода ищет математику, связанную с манипулированием уравнением. Далее по линиям ищем математические шаги, которые манипулируют уравнением, которое я затем могу использовать для формирования алгоритма.
1 ответ
Я вижу середину эллипса следующим образом:
dx,dy
абсолютные изменения не относительные!!!
Так что обрабатывайте красные и синие кривые отдельно. Красная часть имеет |slope|<=1
что означает, что для каждого x
Изменение увеличения / уменьшения на одну ось - до одного изменения / увеличения / уменьшения оси y.
Итак, для красной кривой:
Я бы использовал неявное уравнение, поэтому точка внутри эллипса, если (x/a)^2 + (y/b)^2<=1
, если вы перенесете это в целое число, умножив на (a*a*b*b)
Вы получите термин, который я использую ниже этого...
- установить начальную точку
(0,b)
сделать цикл, где на каждом проходе
- точка (x,y) визуализируется и все ее зеркала
x
увеличивается на каждый проходy
уменьшается только в том случае, если(b*b*x*x+a*a*y*y>a*a*b*b)
что означает ваш новый(x,y)
точка находится вне эллипса.- если после
y
изменение еще(b*b*x*x+a*a*y*y>a*a*b*b)
остановитесь, потому что вы достигли средней точки (зеленая линия).
Синяя кривая
почти идентичны, вы просто начинаете с (a,0)
и всегда увеличивать y
ось вместо x
...
Если вы оптимизируете условия для инкрементальных изменений, вместо полной перерасчета (умножения) в x,y
изменить вы получите алгоритм Брезенхема эллипса.