现在我正在尝试在OpenGL中创建一个螺旋线,并且我已成功创建了一条带有线的螺旋线。但这并不是那么详细......所以我做了一些谷歌搜索,并认为我可以用三角形代替。
所以我想知道,如果我们把我的螺旋作为一个例子,如果这个建议意味着计算我的螺旋三角形的所有位置,或者它是否意味着我应该使用一些3D程序,如... blender,Maya等。创建模型并将它们导入OpenGL?
答案 0 :(得分:2)
我假设您使用的是parametric equation for your helix:
x(t) = r*cos(t)
y(t) = r*sin(t)
z(t) = c*t
然后您正在对t
进行采样并将连续点与线连接。
形成网格(色带或管)的下一步是为每个样本创建Frenet Frame。导数(x'(t),y'(t),z'(t))
(速度分量V
)
会给你一个轴,而二阶导数(x''(t),y''(t),z''(t))
会给你另一个轴(加速度分量A
)。执行交叉积以获得第三个轴并对轴向量进行正交化以使坐标系附加到点。
如果您使用&#34管对造型进行建模,"然后在此坐标系中定义管的横截面并连接相应的横截面点以形成网格:
如果您只是使用色带,则更容易 - 只需使用A轴作为横截面并连接该点以形成网格:
派生矢量V
是
x'(t) = r*sin(t)
y'(t) = -r*cos(t)
z'(t) = c
二阶导数向量A
是
x''(t) = -r*cos(t)
y''(t) = -r*sin(t)
z''(t) = 0
要对坐标系进行正交化的数学运算:
normalize(A)
AxV = cross(A,V)
normalize(AxV)
V = cross(AxV,A)