Овалы, эллипсы

From
Alex Astafiev (2:5000/228.16)
To
Alexei Duzhiy
Date
2003-01-17T05:09:56Z
Area
RU.ALGORITHMS
А что ты слышал про распределенные вычисления folding@home, дорогой Alexei?

 AD> Привет, All!
 AD>
 AD> Подскажите алгоритмы рисования сабжей, работающие быстрее тупого
 AD> построения графиков их уравнений, позволяющие быстро найти на
 AD> отрисованных сабжах точку, соответствующую заданному углу от оси.

проще всего рисовать subj след образом:

(псевдо-язык)

step = 2*PI/count;

for(i=0;   i<2*PI;    i+=step)
{
 xx = radius*cos(i)
 yy = radius*sin(i)  //здесь можно cos(i + (PI/2)  )

 (x,y,1) = (xx,yy)*(2d_matrix)
 plot(x,y)
}

здесь я не стал расписывать как получить гомогенную 2d_matrix матрицу
трансформации (поворота и растяжения в одном лице).
матрица эта вида
cosf  sinf   0
-sinf  cosf  0
0       0      1


соединив точки линиями, ты получишь хорошую аппроксимацию фигуры.

вычислив обратную матрицу un_transofrm (она будет существовать всегда)
и умножив ее на координаты тестируемой точки ты получишь исходные координаты
точки.

для count есть эмпирический выбор (приближенно)
count=sqrt(radius)

---
 * Origin: Фидонет - сеть друзей. Будьте дружественнее! (2:5000/228.16)