OpenGL与3D开发-绘制3D图形

绘制3D图形


使用OpenGL ES绘制3D图形的方法与绘制2D图形的步骤大致相同,只是绘制3D图形需要定义更多的顶点数据,而且3D图形需要绘制更多的三角形。

1、立方体

立方体有6个面(12个三角形),左、右、前、后、上、下。共有8个顶点,每个面有4个顶点

在这里插入图片描述

2、圆形

圆其实也可以看成以圆心为中心点的三角形扇,如下图所示:
在这里插入图片描述

看到圆的内部是一个正多边形,当正多边形的边数(或三角形的个数)足够多的话,我们肉眼看起来就变成了一个圆。

圆心坐标是很容易确定的,这里我们假设圆心坐标为(x , y ),然后设圆的半径为 r 接下来我们需要计算的就是周边的点的坐标,

我们很容易计算出来A点的坐标 :

A点的横坐标为: x + r * cos θ(西塔)

A点的纵坐标为: y + r * sin θ

我们将圆分成 n 份的话,就可以得到每一份的角度的值 ,即 θ的值。通过一个for循环我们就可以很容易的得到所有点的坐标。

3、球形

当正多边形的边数够多,看起来非常像一个圆!于是,我们相同觉得,当正多面体的边数够多,看起来非常像一个球!但是利用正多面体来分割一个球算起来比較麻烦,假设用经纬线的纵横分割方法,算起来要简单非常多!

在这里插入图片描述

左右两条经线,上下两条纬线构成一个正方形(近似)。而正方形能够看做是两个三角形构成。这样的分割方法,看起来清晰非常多,纵横经纬两层循环遍历全部顶点。

3.1、球面顶点坐标计算

首先,确认两个遍历方向:

第一层:从Y轴负方向開始,角度不断添加直到Y轴正方向。(时钟6点->5点->4点->3点->2点->1点->12点)

第二层:固定Y值,以Y轴为旋转轴,360度旋转。就可以遍历全部顶点。

例如以下图。a角递增。b角做一个360度变化。

在这里插入图片描述

如上图。随意球面上的点。三维坐标 (x0, y0, z0) 计算(球面方程):(R为球半径)

x0 = R * cos(a) * sin(b);

y0 = R * sin(a);

z0 = R * cos(a) * cos(b);
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值