OpenGL三维绘图学习4裁剪(画半球体)

图像变换

使用opengl一定要建立一个观念,所有的变化都是矩阵变换,可以变换,也就可以还原。即push和pop matrix

示例

GLdouble eqn [4]={0.0,0.0,-1.0,0.0};
glClipPlane(GL_CLIP_PLANE0,eqn);
glEnable(GL_CLIP_PLANE0);
glutSolidSphere(headR,slices,slices);
//截完了之后,再撤消,防止对其他部分产生影响。该实验的代码,我都没有用push和pop但是实际上这个功能一看就知道很强大。
glDisable(GL_CLIP_PLANE0);

代码说明

void glClipPlane(GLenum plane, const GLdouble *equation);

定义一个裁剪平面。equation参数指向平面方程Ax + By + Cz + D = 0的4个系数。

equation=(0,-1,0,0),前三个参数(0,-1,0)可以理解为法线向下,只有向下的,即Y<0的才能显示,最后一个参数0表示从z=0平面开始。这样就是裁剪掉上半平面。

equation=(0,1,0,0)表示裁剪掉下半平面,

equation=(1,0,0,0)表示裁剪掉左半平面,

equation=(-1,0,0,0)表示裁剪掉右半平面,

equation=(0,0,-1,0)表示裁剪掉前半平面,

equation=(0,0,1,0)表示裁剪掉后半平面

注意

由于世界坐标系与我们头脑中的坐标系不同,所以这里的x,y,z也要相应改变。用的时候写几个例子看看效果就知道了。

切割的效果看入门的那篇博客中的视频即可。

opengl三维绘图入门系列:

OpenGL三维绘图学习1入门
OPENGL三维绘图学习2画常见立体图形
OPENGL三维绘图学习3键盘监听
OPENGL三维绘图学习4裁剪(画半球体)

Reference

图形学OpenGL 切割球体

文章版权归 FindHao 所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明作者 FindHao 和本文原始地址:
https://www.findhao.net/easycoding/1218

你可能喜欢:(相似内容推荐和广告都使用了谷歌的推荐系统,需要对本站取消广告屏蔽才能显示。感谢点击↓广告支持博主~)

Find

新浪微博(FindHaoX86)QQ群:不安分的Coder(375670127) 不安分的Coder

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*