OPENGL学习项目--立体正方形的实时三维模型
2022/1/19 6:09:05
本文主要是介绍OPENGL学习项目--立体正方形的实时三维模型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
实现一个能够跟随鼠标切换视角,进行动态消隐的正方体,能够帮助更好的实现立体三维几何在二维当中的实现。
系统主要涉及在二维平面中三维图形的绘制、图形的旋转、图形的平移、图形的缩放和图形的消隐算法。
1.正方体的三维呈现
首先将顶点标号,通过设置顶点的xyz坐标数组,将各个顶点的坐标对应起来。
x[8] = { a+o, a+o, 0+o, 0+o, a+o, a+o, 0+o, 0+o };
y[8] = { 0+o, a+o, a+o, 0+o, 0+o, a+o, a+o, 0+o };
z[8] = { a+o, a+o, a+o, a+o, 0+o, 0+o, 0+o, 0+o };
(关于+o的原因在后面会提到)
通过点面矩阵,将同一个面的所有点聚集起来,放入一个矩阵中,给六个面标上序号。
f[6] = { 0,1,2,3,4,5 }; //面的号码
fp[6][5] = { {0,1,2,3,0},{1,0,4,5,1},{4,0,3,7,4},{2,1,5,6,2}, {6,7,3,2,6},{6,5,4,7,6} }; //面的顶点序
2. 图形的旋转
利用 mouseDown 鼠标触发事件触发图形旋转,鼠标启动,摄像机可以进行坐标和角度的转换,利用:
glRotatef(xrot, 1.0f, 0.0f, 0.0f);
glRotatef(1.0f, yrot, 0.0f, 0.0f);//设置物体如何旋转的方式参数为旋转角度
函数获取旋转角度。
3. 图形的平移
x[8] = { a+o, a+o, 0+o, 0+o, a+o, a+o, 0+o, 0+o };
在最初初始化坐标时,利用‘可修改的变量o’对数组进行赋值,在触发键盘事件时修改o的值,重新画图,即可得到初始坐标变换的图像,即完成了图像的平移。
4. 图形的缩放
x[8] = { a+o, a+o, 0+o, 0+o, a+o, a+o, 0+o, 0+o };
在最初初始化坐标时,利用可修改的变量a对数组进行赋值,在触发键盘事件时修改a的值,重新画图,即可得到放大/缩小的图像,即完成了图像的缩放。
5. 图形的实时动态消隐
根据课上所学的知识:
(1)后向面总是看不见的;
(2)不会仅由于后向面的遮挡,而使别的棱成为不可见;
(3)可以把这些后向面全部去掉,并不影响消隐结果。
计算正方在当前视角下的视点向量S和正方体各个面的法向量(V)
①若V·S<0,称该多边形为前向面。② 若V·S>0,称该多边形为后向面。
这篇关于OPENGL学习项目--立体正方形的实时三维模型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
- 2024-05-30java excel上传--poi
- 2024-05-30安装笔记本应用商店的pycharm,再安排pandas等模块,说是没有打包工具?
- 2024-05-29java11新特性