我正在使用Computer Graphics Through OpenGL by Sumanta Guha教自己计算机图形学。当谈到其中一个练习时,我似乎遇到了一个小阻碍。
它要求读者用n个线圈“填充”环形螺旋。这意味着渲染一个环形螺旋形状的3D管道,环形螺旋绕n次。我能够设计环形螺旋曲线的参数方程,但是在解决3D管道的参数方程时遇到数学问题。
环形螺旋曲线的参数方程如下:
缠绕的圆环具有内半径(“圆环”中心的孔)R和外半径r。
给定参数t,范围为[-PI,PI]
x = (R + r*cos(n*t)) * cos(t)
y = (R + r*cos(n*t)) * sin(t)
z = r*sin(n*t)
显然,我们需要另一个参数和实际管道的另一个半径。
有关如何开始解决此问题的任何想法?我已经把头撞了一下,但是还是没能。
谢谢!
答案 0 :(得分:1)
对于螺旋上的每个点p(t)
,您需要创建一个顶点圆。对于p(t+d)
的一些小值,通过查找d
来计算曲线的切线。规范化向量p(t)->p(t+d)
- 这是管道顶点所在平面的法线。
将矢量从p(t)
投影到此平面上的原点。圆中的第一个顶点应位于此投影上,其余顶点围绕平面法线旋转。这将为每个圆提供一致的方向,以便您可以将顶点拼接成三角形。