openGL 坐标系(2)

本文详细介绍了一个使用OpenGL进行图形渲染的例子,其中包括如何设置渲染上下文、使用不同的矩阵进行几何体变换,以及如何通过调整视口大小来改变渲染效果。具体探讨了正交矩阵的应用以及视图变换的过程。
导读:
  2//注意这个矩阵是正交的,没有正交就用,好像有放缩作用
  GLfloat Tmat1[16] = { NUM, NUM, 0.0, 0.0,
  -NUM, NUM, 0.0, 0.0,
  0.0, 0.0, 1.0, 0.0,
  0.0, 0.0, 0.0, 1.0};
  GLfloat Tmat2[16] = { 1.0, 0.0, 0.0, 0.0,
  0.0, 1.0, 0.0, 0.0,
  0.0, 0.0, 1.0, 0.0,
  1.0, 0.0, 0.0, 1.0,
  };
  7void setupRC(void) 8{ 9 glClearColor(0.0f, 0.0f, 0.0f, 1.0f);10 glShadeModel(GL_FLAT);11}
  12
  13void RenderScene(void)14{15 printf("RenderScene/n"); 16glClear(GL_COLOR_BUFFER_BIT);17glColor3f(0.0f, 1.0f, 1.0f);18 glMatrixMode(GL_MODELVIEW);19 glLoadIdentity();20 gluLookAt(0.0, 0.0, 5.0, // view point
  21 0.0, 0.0, 0.0, // focus point
  22 0.0, 1.0, 0.0); // up vector
  23
  24   glutSolidCube(0.5); // 原点的参考位置
  25 glMultMatrixf(Tmatr1); //这个矩阵的动作和下面的两个变换是一样的。
  glMultMatrixf(Tmatr2);26// glRotatef(45.0, 0.0, 0.0, 1.0);27// glTranslatef(3.0, 0.0, 0.0);
  28 glutSolidCube(1.0);29
  30 glutSwapBuffers();31}
  32
  33void ChangeSize(int w, int h)34{35 printf("ChangeSize/n"); // 从这里看出,是先调用ChangeSize()的36 GLfloat nRange = 10.0f
  37
  38 if(h == 0)39 h = 1
  40 GLfloat fRatio = (GLfloat)w / (GLfloat)h;41
  42 glMatrixMode(GL_PROJECTION);43 glLoadIdentity();44
  45 if(w <= h)46 glOrtho(-nRange, nRange, -nRange / fRatio, nRange / fRatio, 1.0, nRange);47 else
  48 glOrtho(-nRange * fRatio, nRange * fRatio, -nRange, nRange, 1.0, nRange);49
  50 glViewport(0, 0, w ,h);51
  52 glMatrixMode(GL_MODELVIEW);53 glLoadIdentity();54}
  55
  56int main(int argc, char* argv[])57{58 glutInit(&argc, argv);59 glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);60 glutInitWindowSize(800, 600);61 glutCreateWindow("example");62
  63 glutReshapeFunc(ChangeSize);64 glutDisplayFunc(RenderScene);65
  66 setupRC();67
  68 glutMainLoop();69
  70 std::cout << "Hello world!" << std::endl;71 return 0

本文转自
http://blog.sina.com.cn/s/blog_4a1aa6d801009fi8.html
【激光质量检测】利用丝杆与步进电机的组合装置带动光源的移动,完成对光源使用切片法测量其光束质量的目的研究(Matlab代码实现)内容概要:本文研究了利用丝杆与步进电机的组合装置带动光源移动,结合切片法实现对激光光源光束质量的精确测量方法,并提供了基于Matlab的代码实现方案。该系统通过机械装置精确控制光源位置,采集不同截面的光强分布数据,进而分析光束的聚焦特性、发散角、光斑尺寸等关键质量参数,适用于高精度光学检测场景。研究重点在于硬件控制与图像处理算法的协同设计,实现了自动化、高重复性的光束质量评估流程。; 适合人群:具备一定光学基础知识和Matlab编程能力的科研人员或工程技术人员,尤其适合从事激光应用、光电检测、精密仪器开发等相关领域的研究生及研发工程师。; 使用场景及目标:①实现对连续或脉冲激光器输出光束的质量评估;②为激光加工、医疗激光、通信激光等应用场景提供可靠的光束分析手段;③通过Matlab仿真与实际控制对接,验证切片法测量方案的有效性与精度。; 阅读建议:建议读者结合机械控制原理与光学测量理论同步理解文档内容,重点关注步进电机控制逻辑与切片数据处理算法的衔接部分,实际应用时需校准装置并优化采样间距以提高测量精度。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值