Существуют разные способы понять «рисование кривой спирали» на поверхности. Кстати, я не уверен, что вы используете правильный термин, поскольку спираль является пружинной кривой и совсем не плоская. Вместо этого я буду предполагать некоторую плоскую кривую, описанную неявным C(x,y)=0
или параметрическим x=Xc(t),y=Yc(t)
представлением.
Один из подходов заключается в использовании параметризации поверхности (u,v)
, как в текстурном отображении, x=Xs(u,v), y=Ys(u, v), z=Zs(u, v)
. Например, для сферы (u,v)
может соответствовать угловым координатам в сферической системе. В этом случае достаточно отобразить x=u, y=v
, и будет прямое соответствие между точками кривой и точками поверхности.
Другой подход заключается в "выдавливании" кривой в направлении z
для формирования цилиндрической поверхности и пересечения цилиндра с поверхностью. В этом случае вы формируете систему
S(x, y, z)= 0
C(x, y)= 0
где z
свободен, и решить для (x, y)
как функцию z
. (Вы также можете использовать параметрические уравнения, есть разные комбинации.) Фактически вы выполняете параллельную проекцию кривой.
Вместо цилиндра вы также можете думать о конической поверхности, выбрав точку вершины, скажем, начало координат и учитывая точки (zx, zy, az)
, где a
- коэффициент «апертуры», а z
- бесплатно , Эта идея очень близка к вашему методу «уменьшения радиуса» и соответствует центральной проекции.