微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

delphi – OpenGL:如何将2D形状车削成3D?

我有一个OpenGL程序(用Delphi编写),允许用户绘制多边形.我想围绕轴(例如,Y asix)自动旋转(车床)并获得3D形状.

我怎样才能做到这一点?

解决方法

为简单起见,您可以强制至少一个点位于旋转轴上.您可以通过向所有x值添加/减去相同的值,并对多边形中的点的所有y值使用相同的值来轻松完成此操作.它将保留原始形状.

其余的并不是那么难.选择一个相当小的角度,比如一度或两度,并在围绕轴旋转时计算出多边形顶点的坐标.然后用三角形扇形和三角形条加入点.

围绕轴旋转点只是基本的毕达哥拉斯.在0度旋转时,您在2-d坐标处具有点,在第三维中具有值0.

让我们假设这些点在X和Y中,我们围绕Y旋转.原始的’X’坐标代表斜边.在1度旋转,我们有:

sin(1) = z/hypotenuse
cos(1) = x/hypotenuse

(假设基于程度的触发功能)

将点(x,y)围绕Y轴旋转角度T以产生3d点(x’,y’,z’):

y' = y
x' = x * cos(T)
z' = x * sin(T)

因此,对于多边形边缘上的每个点,您将生成一个以旋转轴为中心的360点圆.

现在做一个像这样的3d形状:

>使用您的中心点和第一个旋转点阵列创建GL’三角形扇形’
>对于每个连续的数组,使用数组中的点和前一个数组中的点创建一个三角形条
>通过创建另一个以中心点为中心的三角形扇并使用最后一个阵列中的点完成

有一点需要注意的是,通常,我使用的三角函数的种类以弧度为单位测量角度,而OpenGL使用度数.要将度数转换为弧度,公式为:

degrees = radians / pi * 180

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐