glClipPlane裁剪平面

(2012-02-21 12:49:18)

转载▼
标签:

半平面

裁剪

线框

球体

表示

杂谈

分类: OPENGL
  1. 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

  1. void init(void)
  2. {
  3. glClearColor(0.0,0.0,0.0,0.0);
  4. glShadeModel(GL_FLAT);
  5. }
  6. void display(void)
  7. {
  8. GLdouble eqn [4]={0.0,1.0,0.0,0.0};
  9. GLdouble eqn2 [4] ={1.0,0.0,0.0,0.0};
  10. glClear(GL_COLOR_BUFFER_BIT);
  11. glColor3f(1.0,1.0,1.0);
  12. glPushMatrix();
  13. glTranslatef(0.0,0.0,-5.0);
  14. glClipPlane(GL_CLIP_PLANE0,eqn);
  15. glEnable(GL_CLIP_PLANE0);
  16. glClipPlane(GL_CLIP_PLANE1,eqn2);
  17. glEnable(GL_CLIP_PLANE1);
  18. glRotatef(90.0,1.0,0.0,0.0);
  19. glutWireSphere(1.0,20,16);
  20. glPopMatrix();
  21. glFlush();
  22. }
  23. void reshape(int w,int h)
  24. {
  25. glViewport(0,0,(GLsizei)w,(GLsizei)h);
  26. glMatrixMode(GL_PROJECTION);
  27. glLoadIdentity();
  28. gluPerspective(60.0,(GLfloat)w/(GLfloat)h,1.0,20.0);
  29. glMatrixMode(GL_MODELVIEW);
  30. }
  31. int main(int argc,char**argv)
  32. {
  33. glutInit(&argc,argv);
  34. glutInitDisplayMode(GLUT_SINGLE |GLUT_RGB);
  35. glutInitWindowSize(500,500);
  36. glutInitWindowPosition(100,100);
  37. glutCreateWindow(argv [0]);
  38. init();
  39. glutDisplayFunc(display);
  40. glutReshapeFunc(reshape);
  41. glutMainLoop();
  42. return 0;
  43. }

glClipPlane剪裁平面相关推荐

  1. OpenCASCADE:使用扩展数据交换 XDE之剪裁平面

    OpenCASCADE:使用扩展数据交换 XDE之剪裁平面 剪裁平面 剪裁平面 在 XDE 文档中,剪切平面由类XCAFDoc_ClippingPlaneTool管理.它的工作原理与 ShapeToo ...

  2. OpenGL ES学习(8)——剪裁测试认识

    本文介绍常见测试和任意剪裁平面:剪裁测试.Alpha测试.模板测试和任意剪裁平面. 1.1 剪裁测试 剪裁测试,用来在渲染场景时限制绘制区域,实现同时在屏幕上绘制主视角与次视角场景. 1.1.1 剪裁 ...

  3. Computer Graphics Through OpenGL From Theory to Experiments - 学习笔记2 Tricks of the Trade opengl基础

    一个 OpenGL 工具箱 顶点数组及其绘制命令 // // squareAnnulus1.cpp // // 该程序绘制一个方形环作为三角形条带 // 顶点使用 glVertex3f() 指定,颜色 ...

  4. NeHe OpenGL教程 第二十六课:反射

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  5. Python计算机视觉——照相机模型与增强现实

    Python计算机视觉--照相机模型与增强现实 文章目录 Python计算机视觉--照相机模型与增强现实 1 针孔照相机模型 1.1 照相机矩阵 1.2 三维点的投影 1.3 照相机矩阵的分解 1.4 ...

  6. [置顶] 自己动手实现OpenGL-OpenGL原来如此简单(三)

    上一篇自己动手写opengl 由于时间原因停止了更新,现在继续. 1. 首先我们定义以下变量 public static class DisplayInfo{ Canvas canvas; int h ...

  7. 自己动手实现OpenGL-OpenGL原来如此简单(三)

    上一篇自己动手写opengl 由于时间原因停止了更新,现在继续. 1. 首先我们定义以下变量 public static class DisplayInfo{Canvas canvas;int hei ...

  8. AutoCAD 命令参考手册

    Auto CAD 命令参考手册 3D 创建三维多边形网格对象 3DARRAY 创建三维阵列 3DCLIP   启用交互式三维视图并打开"调整剪裁平面"窗口 3DCORBIT   启 ...

  9. DirectX 视口学习

    什么是viewport? 假设你站在一个密封的房子里,这个房子只有一个很小的窗口,你站在窗口前面,通过这个窗口你可以观察到外面的世界,那么这个窗口就相当于一个视口,而外面的世界就是3D中的场景. 视口 ...

最新文章

  1. 闲来无事,总结 Xcode常用快捷键
  2. 【跃迁之路】【552天】程序员高效学习方法论探索系列(实验阶段309-2018.08.11)...
  3. c语言中int*point 其中point是指针变量名,2012年计算机等级二级C语言章节习题及答案(9)...
  4. 机器人学习--路径规划--A*算法实现
  5. 同步屏障CyclicBarrier
  6. 数据挖掘的11大算法及python实现(个人笔记整理,非教学用)
  7. java 二进制反码_Java学习第五篇:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题...
  8. 【模板】最大权闭合图
  9. C++安全方向(三)3.4 使用哈希列表验证文件的完整性
  10. 狗狗币协议发布新版本Dogecoin Core 1.14.3
  11. windows资源监控
  12. eclipse注释中插入当前时间
  13. 写一个案例,搞得不要不要的。尴尬了。
  14. 获取矩阵元素的方法 4种方法 B(1,2) B(9) B(sub2ind(size(B),3,4))
  15. C++ string , int 之间相互转换
  16. 它又又又来了,Fastjson 最新高危漏洞来袭!快升级吧
  17. matlab 简单低通滤波器,简单低通滤波器设计及matlab仿真.doc
  18. 对话窗口、面板滚动视图、标签切换视图;QDialog、QScroollArea、
  19. 【2021-07-21】钞汇标志是什么?对钞汇标志的理解
  20. 滑块验证成功后,对勾对号显示为根号

热门文章

  1. 红帽Linux7怎么修改网卡名称,新安装的Centos 7系统怎么将网卡名称改为eth0?
  2. JAVA中vector是否存在数据_如何找出std :: vector中是否存在项目?
  3. python对象的三个属性_Python 对象属性的访问
  4. mysql5.6 pt-query-digest_pt-query-digest安装及分析
  5. a标签传值到另一个页面_vue-router页面传值及接收值
  6. python paramiko长连接_【Python】 SSH连接的paramiko
  7. cannot load php5,Cannot load php5apache2_4.dll into server解决办法
  8. camunda流程定义表无数据_创建流程实例时 act_ru_identitylink 表中没有出现相关的人员数据...
  9. python的安装包下载_科学网—[转载]python常用的安装包下载 - 林清莹的博文
  10. 平台型时间信号强度曲线_哥测的不是BET,是氮气等温吸脱附曲线