Покрытие любой поверхности спиралевидными кривыми

У меня вопрос о реализуемости идеи. У меня есть поверхность (которая может быть параметризована или неявно определена уравнением F(x,y,z) = 0), и я хочу нарисовать некоторую спираль, которая соответствует поверхности, буквально спираль на поверхности. Каким будет процесс для достижения этого? У меня есть основная идея, вдохновленная методами ray-маршрутинга: у меня есть поверхность (имеющая конечную площадь), затем я «рисую» вокруг нее большую спиральную кривую и уменьшаю радиус спирали. Если спираль пересекает поверхность, то я сохраняю эту точку и, наконец, получаю набор точек, которые рисуют спираль на поверхности... Не стесняйтесь задавать мне вопросы по задаче. Спасибо за внимание. Томас


person Thomas E    schedule 26.06.2019    source источник
comment
Взгляните на этот проект.   -  person Nico Schertler    schedule 26.06.2019
comment
Именно то, что я искал! благодарю вас   -  person Thomas E    schedule 27.06.2019


Ответы (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 — свободный. Эта идея очень близка вашему методу "уменьшения радиуса" и соответствует центральной проекции.

person Yves Daoust    schedule 26.06.2019
comment
Мне нравится идея экструзии! Я попробую это спасибо за ваш ответ! - person Thomas E; 27.06.2019