Как я могу манипулировать уравнениями для алгоритма средней точки эллипса

Мой вопрос состоит в том, как и какую математику я использую, чтобы управлять уравнением эллипса, чтобы сформировать алгоритм средней точки и попытаться создать эллипс. Я получил код, но не понимаю математику, которая лежит в основе рисования эллипса на экране. Мне интересно, могут ли некоторые с опытом рассказать мне математические шаги, такие как вычитание с обеих сторон чего-то в этом направлении. Я не хочу полиномиальный метод, который решает для y и рисует первую половину, а затем еще один проход, чтобы нарисовать вторую половину. Я понимаю, что большая часть этого метода ищет математику, связанную с манипулированием уравнением. Далее по линиям ищем математические шаги, которые манипулируют уравнением, которое я затем могу использовать для формирования алгоритма.

1 ответ

Я вижу середину эллипса следующим образом:

середина эллипса

dx,dy абсолютные изменения не относительные!!!

Так что обрабатывайте красные и синие кривые отдельно. Красная часть имеет |slope|<=1 что означает, что для каждого x Изменение увеличения / уменьшения на одну ось - до одного изменения / увеличения / уменьшения оси y.

Итак, для красной кривой:

Я бы использовал неявное уравнение, поэтому точка внутри эллипса, если (x/a)^2 + (y/b)^2<=1, если вы перенесете это в целое число, умножив на (a*a*b*b) Вы получите термин, который я использую ниже этого...

  1. установить начальную точку(0,b)
  2. сделать цикл, где на каждом проходе

    • точка (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 изменить вы получите алгоритм Брезенхема эллипса.

Другие вопросы по тегам