Qt实现读取显示obj文件——归一化坐标
来源:互联网 发布:imap smtp 端口 编辑:程序博客网 时间:2024/05/17 23:47
归一化坐标的最大用处就是将节点坐标转换在-1~1的范围内,从而可以显示在我们的视线范围内!~
总体的思路就是找出节点中最大值作为基数,然后平移,缩放!
//将图形移到屏幕中间来float _glUnitize(_GLModel* model){ float maxx, minx, maxy, miny, maxz, minz; float cx, cy, cz, w, h, d; float scale; if (model&&model->list_Vertices.size() > 0) { //注意不能将第一个点放在循环中 maxx = minx = model->list_Vertices[0]._X; maxy = miny = model->list_Vertices[0]._Y; maxz = minz = model->list_Vertices[0]._Z; for (size_t i = 1; i < model->num_Vertices; i++) { if (maxx < model->list_Vertices[i]._X) maxx = model->list_Vertices[i]._X; if (minx > model->list_Vertices[i]._X) minx = model->list_Vertices[i]._X; if (maxy < model->list_Vertices[i]._Y) maxy = model->list_Vertices[i]._Y; if (miny > model->list_Vertices[i]._Y) miny = model->list_Vertices[i]._Y; if (maxz < model->list_Vertices[i]._Z) maxz = model->list_Vertices[i]._Z; if (minz > model->list_Vertices[i]._Z) minz = model->list_Vertices[i]._Z; } w = _glmAbs(maxx) + _glmAbs(minx); h = _glmAbs(maxy) + _glmAbs(miny); d = _glmAbs(maxz) + _glmAbs(minz); //计算模型的中心 cx = (maxx + minx) / 2.0; cy = (maxy + miny) / 2.0; cz = (maxz + minz) / 2.0; scale = 2.0 / _glmMax(w, _glmMax(h, d)); //将中心按照比例转换 for (size_t i = 0; i < model->num_Vertices; i++) { model->list_Vertices[i]._X -= cx; model->list_Vertices[i]._Y -= cy; model->list_Vertices[i]._Z -= cz; model->list_Vertices[i]._X *= scale; model->list_Vertices[i]._Y *= scale; model->list_Vertices[i]._Z *= scale; } } return scale;}
这样,平移并缩放过后的节点坐标就是在边长为2的立方体中了!~
0 0
- Qt实现读取显示obj文件——归一化坐标
- Qt实现读取显示obj文件——读取数据
- Qt实现读取显示obj文件——说明
- Qt实现读取显示obj文件——绘制数据
- Qt实现读取显示obj文件——计算面的单位法向量
- Qt实现读取显示obj文件——创建并绑定纹理
- Qt实现读取显示obj文件——多线程加载纹理
- Qt实现读取显示obj文件——动态绑定纹理与消除纹理
- Abaqus obj inp 文件内部读取点坐标并统计
- python实现obj模型的归一化
- Qt读取文件并显示
- vtk实战(十二)——读取.obj文件
- MATLAB读取和显示obj文件的数据
- obj 文件读取 openGL 显示3D图
- obj-c 读取文件 。
- openGL读取obj文件
- 读取并显示 obj (2)
- java3d显示obj文件
- android自定义控件:根据声音波动的声波控件模仿Siri
- 积累知识,感谢平台
- Gephi学习笔记-画出图形基本流程
- Java中级开发工程师知识点归纳
- java se 06
- Qt实现读取显示obj文件——归一化坐标
- Matlab 的fspecial函数用法
- 创建文件和目录时的默认权限umask
- TCP中使用ObjectOutputStream传输数据对象抛出**Connection reset**的异常。
- 交替执行
- 关于Controller方面的总结__以及资料收集
- c语言的一个简单回顾
- UE.Editor使用总结
- 单链表的插入和删除操作