Покрытие любой поверхности спиралевидными кривыми - PullRequest
0 голосов
/ 26 июня 2019

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

1 Ответ

0 голосов
/ 26 июня 2019

Существуют разные способы понять «рисование кривой спирали» на поверхности. Кстати, я не уверен, что вы используете правильный термин, поскольку спираль является пружинной кривой и совсем не плоская. Вместо этого я буду предполагать некоторую плоскую кривую, описанную неявным 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 - бесплатно , Эта идея очень близка к вашему методу «уменьшения радиуса» и соответствует центральной проекции.

...