opengl - 在 OpenGL 中沿折线路径创建管

标签 opengl math 3d geometry

我想沿着由点列表定义的路径绘制管道。

我的想法是,我基本上可以围绕我的每个点绘制圆圈,然后使用 GL_QUAD_STRIP 将圆圈(或者更确切地说,圆圈上的点)连接在一起。

所以,我在圆圈上创建点的代码是这样的:

        point_of_circle[0] = pathVertices[i][0] + TUBE_RADIUS * cos(j/TUBE_SEGMENTS * 2*M_PI));
        point_of_circle[1] = pathVertices[i][1] + TUBE_RADIUS * sin(j/TUBE_SEGMENTS * 2*M_PI));
        point_of_circle[2] = pathVertices[i][2];

其中 i 是路径顶点的索引(即我想要绘制管道的原始点之一),j 是的索引正在创建的圆的当前点(从 0 到 TUBE_SEGMENTS)。

现在,问题是如果我以这种方式创建圆圈,它们总是以相同的方式定向(圆圈彼此“平行”,就像我一直做的那样 point_of_circle[2] = pathVertices[i][2]),这不是我想要的,因为这样结构看起来不像是一个合适的 pipe 。

我想我可以做的是计算与我正在绘制的路径相切的向量。然后,我需要根据计算的切线以某种方式使圆面向正确的方向。

例如,如果计算的切线是0,0,1,代码应该保持原样。但是,如果将切线计算为其他任何东西,则应旋转圆。

例如,如果计算的切线是 0,1,0,则整个圆的 y 坐标应该相同,如果您沿着 z 轴看,您应该只看到圆的水平段。

如果切线是 1,0,0,如果沿 z 轴看,您应该会看到圆的垂直线段。

我如何编写代码来根据计算的切线正确创建圆?我希望我的解释足够清楚,我是 OpenGL 和大部分 3D 数学的初学者。

最佳答案

总是有 GLE Tubing and Extrusion Library如果你不重新发明轮子。

关于opengl - 在 OpenGL 中沿折线路径创建管,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11193524/

相关文章:

c++ - 使用纹理的 alpha channel 作为边界贴图

c - 实现 BigInteger

graphics - 3DSMax 中的 GLSL 着色器

ios - 我如何使用 GLKMatrix4 将此实现转换为使用 CATransform3D

r - lm()的输出与R中回归平面方程之间的联系

opengl - ffmpeg 和 opengl

c - 缩放 glBitmap() 绘图?

iphone - 在 iPhone 和 Mac 上共享 OpenGL 代码

java - 欧几里得距离计算某物是否靠近某物

java - 我们如何计算正多边形内最大圆的直径?