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

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

概述我有一个OpenGL程序(用Delphi编写),允许用户绘制多边形.我想围绕轴(例如,Y asix)自动旋转(车床)并获得3D形状. 我怎样才能做到这一点? 为简单起见,您可以强制至少一个点位于旋转轴上.您可以通过向所有x值添加/减去相同的值,并对多边形中的点的所有y值使用相同的值来轻松完成此 *** 作.它将保留原始形状. 其余的并不是那么难.选择一个相当小的角度,比如一度或两度,并在围绕轴旋转时计算出 我有一个OpenGL程序(用Delphi编写),允许用户绘制多边形.我想围绕轴(例如,Y asix)自动旋转(车床)并获得3D形状.

我怎样才能做到这一点?

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

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

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

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

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

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

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

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

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

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

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

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

degrees = radians / pi * 180
总结

以上是内存溢出为你收集整理的delphi – OpenGL:如何将2D形状车削成3D?全部内容,希望文章能够帮你解决delphi – OpenGL:如何将2D形状车削成3D?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1261327.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存