ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

OPENGL学习项目--立体正方形的实时三维模型

2022-01-18 23:35:16  阅读:265  来源: 互联网

标签:OPENGL -- 0.0 消隐 缩放 旋转 正方形 坐标 图形


实现一个能够跟随鼠标切换视角,进行动态消隐的正方体,能够帮助更好的实现立体三维几何在二维当中的实现。

系统主要涉及在二维平面中三维图形的绘制、图形的旋转、图形的平移、图形的缩放和图形的消隐算法。

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,--,0.0,消隐,缩放,旋转,正方形,坐标,图形
来源: https://blog.csdn.net/qq_52913088/article/details/122569923

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有