У меня вопрос о реализуемости идеи. У меня есть поверхность (которая может быть параметризована или неявно определена уравнением F(x,y,z) = 0), и я хочу нарисовать некоторую спираль, которая соответствует поверхности, буквально спираль на поверхности. Каким будет процесс для достижения этого? У меня есть основная идея, вдохновленная методами ray-маршрутинга: у меня есть поверхность (имеющая конечную площадь), затем я «рисую» вокруг нее большую спиральную кривую и уменьшаю радиус спирали. Если спираль пересекает поверхность, то я сохраняю эту точку и, наконец, получаю набор точек, которые рисуют спираль на поверхности... Не стесняйтесь задавать мне вопросы по задаче. Спасибо за внимание. Томас
Покрытие любой поверхности спиралевидными кривыми
Ответы (1)
Существуют разные способы понимания «рисования спиральной кривой» на поверхности. Между прочим, я не уверен, что вы используете правильный термин, поскольку спираль представляет собой пружинообразную кривую и совсем не плоскую. Вместо этого я предположу некоторую плоскую кривую, описываемую неявным 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
— свободный. Эта идея очень близка вашему методу "уменьшения радиуса" и соответствует центральной проекции.