如何在OpenGL中创建一个带三角形的偶数球?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在OpenGL中创建一个带三角形的偶数球?相关的知识,希望对你有一定的参考价值。

是否有公式生成一组三角坐标,其顶点位于球体上?

我可能正在寻找与gluSphere类似的东西。然而,我需要用特定的颜色为不同的三角形着色,这样我似乎无法使用gluSphere

另外:我确实理解gluSphere沿着具有相同经度和格度的线绘制边缘,这使得三角形在极点处的尺寸与它们在赤道处的尺寸相比较小。现在,如果这样的公式将生成三角形,使得它们的大小差异最小化,那将是很好的。

答案

从单位二十面体开始。然后应用三角形的多个均匀细分,将结果顶点距离归一化到原点。

另一答案

计算法线和紫外线图。

幸运的是,在球体上计算法线有一个惊人的技巧。如果你考虑一下,球体上的法线实际上只不过是从球体中心到这一点的方向!此外,如果你认为它,这意味着法线在字面上等于这一点!即,它是相同的向量! - 正常情况下,不要忘记将长度标准化。

你可以赢得那一个的赌注:“是否有一个形状,所有法线碰巧恰好......等于顶点?”乍一看,你会想,这是不可能的,没有这种巧合的形状可能存在。但当然答案只是“一个半径为一的球体!”嘿!

关于紫外线。假设你以“明显”的方式投射到2D,a "rectangle-style" map projection,它在球体上相对容易。在这种情况下,u和v基本上只是任何点的经度/纬度,归一化为0,1。

希望能帮助到你!

这是历史悠久的经典网页,精美地解释了如何构建一个icosphere .. http://blog.andreaskahler.com/2009/06/creating-icosphere-mesh-in-code.html

以上是关于如何在OpenGL中创建一个带三角形的偶数球?的主要内容,如果未能解决你的问题,请参考以下文章

带三角形带的圆圈

在OpenGL中实现边界球碰撞

如何使用 c++ 和 opengl 在 mac 中创建窗口?

如何在 OpenGL 中创建调试标记?

在 OpenGL 中创建屏幕截图不起作用

如何在openGL中旋转图像?