glClipPlane剪裁平面
glClipPlane裁剪平面
(2012-02-21 12:49:18)
标签:
半平面裁剪线框球体表示杂谈 |
分类: OPENGL |
- 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)表示裁剪掉后半平面
裁剪平面的代码例子
示例3-5是经过两个裁剪平面裁剪的线框球体,裁去了3/4体积,如图3-23所示。
图3-23 裁剪后的线框球体 |
示例程序3-5 经过两个裁剪平面裁剪的线框球体:clip.c
- void init(void)
- {
- glClearColor(0.0,0.0,0.0,0.0);
- glShadeModel(GL_FLAT);
- }
- void display(void)
- {
- GLdouble eqn [4]={0.0,1.0,0.0,0.0};
- GLdouble eqn2 [4] ={1.0,0.0,0.0,0.0};
- glClear(GL_COLOR_BUFFER_BIT);
- glColor3f(1.0,1.0,1.0);
- glPushMatrix();
- glTranslatef(0.0,0.0,-5.0);
- glClipPlane(GL_CLIP_PLANE0,eqn);
- glEnable(GL_CLIP_PLANE0);
- glClipPlane(GL_CLIP_PLANE1,eqn2);
- glEnable(GL_CLIP_PLANE1);
- glRotatef(90.0,1.0,0.0,0.0);
- glutWireSphere(1.0,20,16);
- glPopMatrix();
- glFlush();
- }
- void reshape(int w,int h)
- {
- glViewport(0,0,(GLsizei)w,(GLsizei)h);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluPerspective(60.0,(GLfloat)w/(GLfloat)h,1.0,20.0);
- glMatrixMode(GL_MODELVIEW);
- }
- int main(int argc,char**argv)
- {
- glutInit(&argc,argv);
- glutInitDisplayMode(GLUT_SINGLE |GLUT_RGB);
- glutInitWindowSize(500,500);
- glutInitWindowPosition(100,100);
- glutCreateWindow(argv [0]);
- init();
- glutDisplayFunc(display);
- glutReshapeFunc(reshape);
- glutMainLoop();
- return 0;
- }
glClipPlane剪裁平面相关推荐
- OpenCASCADE:使用扩展数据交换 XDE之剪裁平面
OpenCASCADE:使用扩展数据交换 XDE之剪裁平面 剪裁平面 剪裁平面 在 XDE 文档中,剪切平面由类XCAFDoc_ClippingPlaneTool管理.它的工作原理与 ShapeToo ...
- OpenGL ES学习(8)——剪裁测试认识
本文介绍常见测试和任意剪裁平面:剪裁测试.Alpha测试.模板测试和任意剪裁平面. 1.1 剪裁测试 剪裁测试,用来在渲染场景时限制绘制区域,实现同时在屏幕上绘制主视角与次视角场景. 1.1.1 剪裁 ...
- Computer Graphics Through OpenGL From Theory to Experiments - 学习笔记2 Tricks of the Trade opengl基础
一个 OpenGL 工具箱 顶点数组及其绘制命令 // // squareAnnulus1.cpp // // 该程序绘制一个方形环作为三角形条带 // 顶点使用 glVertex3f() 指定,颜色 ...
- NeHe OpenGL教程 第二十六课:反射
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- Python计算机视觉——照相机模型与增强现实
Python计算机视觉--照相机模型与增强现实 文章目录 Python计算机视觉--照相机模型与增强现实 1 针孔照相机模型 1.1 照相机矩阵 1.2 三维点的投影 1.3 照相机矩阵的分解 1.4 ...
- [置顶] 自己动手实现OpenGL-OpenGL原来如此简单(三)
上一篇自己动手写opengl 由于时间原因停止了更新,现在继续. 1. 首先我们定义以下变量 public static class DisplayInfo{ Canvas canvas; int h ...
- 自己动手实现OpenGL-OpenGL原来如此简单(三)
上一篇自己动手写opengl 由于时间原因停止了更新,现在继续. 1. 首先我们定义以下变量 public static class DisplayInfo{Canvas canvas;int hei ...
- AutoCAD 命令参考手册
Auto CAD 命令参考手册 3D 创建三维多边形网格对象 3DARRAY 创建三维阵列 3DCLIP 启用交互式三维视图并打开"调整剪裁平面"窗口 3DCORBIT 启 ...
- DirectX 视口学习
什么是viewport? 假设你站在一个密封的房子里,这个房子只有一个很小的窗口,你站在窗口前面,通过这个窗口你可以观察到外面的世界,那么这个窗口就相当于一个视口,而外面的世界就是3D中的场景. 视口 ...
最新文章
- 闲来无事,总结 Xcode常用快捷键
- 【跃迁之路】【552天】程序员高效学习方法论探索系列(实验阶段309-2018.08.11)...
- c语言中int*point 其中point是指针变量名,2012年计算机等级二级C语言章节习题及答案(9)...
- 机器人学习--路径规划--A*算法实现
- 同步屏障CyclicBarrier
- 数据挖掘的11大算法及python实现(个人笔记整理,非教学用)
- java 二进制反码_Java学习第五篇:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题...
- 【模板】最大权闭合图
- C++安全方向(三)3.4 使用哈希列表验证文件的完整性
- 狗狗币协议发布新版本Dogecoin Core 1.14.3
- windows资源监控
- eclipse注释中插入当前时间
- 写一个案例,搞得不要不要的。尴尬了。
- 获取矩阵元素的方法 4种方法 B(1,2) B(9) B(sub2ind(size(B),3,4))
- C++ string , int 之间相互转换
- 它又又又来了,Fastjson 最新高危漏洞来袭!快升级吧
- matlab 简单低通滤波器,简单低通滤波器设计及matlab仿真.doc
- 对话窗口、面板滚动视图、标签切换视图;QDialog、QScroollArea、
- 【2021-07-21】钞汇标志是什么?对钞汇标志的理解
- 滑块验证成功后,对勾对号显示为根号
热门文章
- 红帽Linux7怎么修改网卡名称,新安装的Centos 7系统怎么将网卡名称改为eth0?
- JAVA中vector是否存在数据_如何找出std :: vector中是否存在项目?
- python对象的三个属性_Python 对象属性的访问
- mysql5.6 pt-query-digest_pt-query-digest安装及分析
- a标签传值到另一个页面_vue-router页面传值及接收值
- python paramiko长连接_【Python】 SSH连接的paramiko
- cannot load php5,Cannot load php5apache2_4.dll into server解决办法
- camunda流程定义表无数据_创建流程实例时 act_ru_identitylink 表中没有出现相关的人员数据...
- python的安装包下载_科学网—[转载]python常用的安装包下载 - 林清莹的博文
- 平台型时间信号强度曲线_哥测的不是BET,是氮气等温吸脱附曲线