资源简介
想在三维模型网格上做点研究,没想到catiaproductpart文件转换成stl格式后就是一个个三角片,估计可以增加个忽悠点哈哈~~
代码片段和文件信息
//#include
#include
#include
#include
#include
#include
#include
#include
#define PI 3.1415926
int winWidthwinHeight;
float lastPos[3]={0.0F0.0F0.0F};
float angle=0axis[3]trans[3];
bool trackballMove=false;
bool perspectiveXform = false;
GLfloat objectXform[4][4] = { {1.0 0.0 0.0 0.0} {0.0 1.0 0.0 0.0} {0.0 0.0 1.0 0.0} {0.0 0.0 0.0 1.0} };
GLfloat *trackballXform = (GLfloat*)objectXform;
float distance=0;
bool lineAAEnabled = true;
bool line=1;
struct vertex{
vertex(void):x(0)y(0)z(0){};
vertex(float xfloat yfloat z)
{
this->x=x;
this->y=y;
this->z=z;
}
float xyz;
inline vertex operator =(const vertex &v)
{
this->x=v.x;
this->y=v.y;
this->z=v.z;
return *this;
}
inline vertex operator +(vertex &v)
{
vertex result;
result.x=this->x+v.x;
result.y=this->y+v.y;
result.z=this->z+v.z;
return result;
}
inline vertex operator -(vertex &v)
{
vertex result;
result.x=this->x-v.x;
result.y=this->y-v.y;
result.z=this->z-v.z;
return result;
}
inline vertex operator /(float f)
{
vertex result;
result.x=this->x/f;
result.y=this->y/f;
result.z=this->z/f;
return result;
}
inline vertex operator -()
{
this->x=-this->x;
this->y=-this->y;
this->z=-this->z;
return *this;
}
};
vertex normalize(vertex v)
{
vertex result;
float norm=sqrt(v.x*v.x+v.y*v.y+v.z*v.z);
result.x=v.x/norm;
result.y=v.y/norm;
result.z=v.z/norm;
return result;
}
struct face{
vertex verts[3];
vertex normal;
inline face operator=(const face &f)
{
this->verts[0]=f.verts[0];
this->verts[1]=f.verts[1];
this->verts[2]=f.verts[2];
this->normal=f.normal;
return *this;
}
};
struct mesh{
std::vector faces;
};
mesh Mesh;
vertex center;
float radius;
void fileread(char *filename)
{
FILE *file;
float xyz;
char str[100];
char buf[999];
if(!(file=fopen(filename“r“)))exit(1);
while (fscanf(file“%s“buf)!=EOF)
{
switch (buf[0])
{
case ‘s‘://solid CATIA STL
case ‘o‘://outer loop
case ‘e‘://endloop or endfacet or endsolid C...
fgets(bufsizeof(buf)file);
break;
case ‘f‘://facet normal ...!
{
fscanf(file“%s“str);
fscanf(file“%f %f %f“&x&y&z);
face temp;
temp.normal.x=x;
temp.normal.y=y;
temp.normal.z=z;
fgets(bufsizeof(buf)file);//...might be ‘\0‘
fgets(bufsizeof(buf)file);//skip “outer loop“
for(int k=0;k<3;k++)
{
float xxyyzz;
fscanf(file“%s“str);//skip “vertex“
fscanf(file“%f %f %f“&xx&yy&zz);
temp.verts[k].x=xx;
temp.verts[k].y=yy;
temp.verts[k].z=zz;
}
Mesh.faces.push_back(temp);
break;
}
default:
fgets(buf sizeof(buf) file);
break;
}
}
fclose(file);
}
void unitize(vertex ¢erfloat &radius)
{
vertex maxmi
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 96627 2011-03-15 09:15 stlreader\stlreader\4-10.stl
文件 7853 2011-03-15 09:17 stlreader\stlreader\4-24d.stl
文件 11028 2011-03-15 09:26 stlreader\stlreader\Debug\BuildLog.htm
文件 178670 2011-03-15 09:26 stlreader\stlreader\Debug\main.obj
文件 65 2011-03-15 09:26 stlreader\stlreader\Debug\mt.dep
文件 385 2011-03-15 09:26 stlreader\stlreader\Debug\stlreader.exe.intermediate.manifest
文件 191488 2011-03-15 09:26 stlreader\stlreader\Debug\vc80.idb
文件 208896 2011-03-15 09:26 stlreader\stlreader\Debug\vc80.pdb
文件 288121 2011-03-14 16:21 stlreader\stlreader\Exercise02.stl
文件 8403 2011-03-15 09:26 stlreader\stlreader\main.cpp
文件 940300 2011-03-12 11:11 stlreader\stlreader\sd_500__sweep_line_tan_sur_exercise10b.stl
文件 3696 2011-03-13 00:04 stlreader\stlreader\stlreader.vcproj
文件 1417 2011-03-15 09:27 stlreader\stlreader\stlreader.vcproj.Oscarhx-PC.Oscarhx.user
文件 1417 2011-03-14 00:23 stlreader\stlreader\stlreader.vcproj.TOSHIBA-PC.TOSHIBA.user
文件 892 2011-03-12 15:03 stlreader\stlreader.sln
..A..H. 24576 2011-03-15 09:27 stlreader\stlreader.suo
目录 0 2011-03-15 09:26 stlreader\stlreader\Debug
目录 0 2011-03-15 09:26 stlreader\stlreader
目录 0 2011-03-15 10:41 stlreader
----------- --------- ---------- ----- ----
1963834 19
- 上一篇:实验室安全考试系统题库整合
- 下一篇:Qt编写的速度仪表盘
相关资源
- opengl二维图形转换为三维图形
- 三维模型文件中的OBJ格式在OpenGL中的
- opengl自行车动画实验报告
- OPENGL开发的茶壶光影、渲染、旋转、
- opengl 球体
- WinEdt V5.5 5.6 注册机
- SandBoxie+v5.18+已和谐的驱动及注册机
- ov5648摄像头PCB图
- 基于OpenGL的场景迷宫漫游可以碰撞检
- opengl鼠标控制视角 不透明度改变 光照
- 3D 模型OpenGL显示,旋转、缩放,平移
- 利用OpenGL和ArcGIS处理得到的坐标数据
- QT绘制简单OpenGL图形
- opengl相机类
- glut.dll和glut32.dll
- opengl渲染到纹理技术
- 3d贪吃蛇游戏
- opengl头文件和库glut工具包
- 圆的扫描转换_计算机专业_OpenGL实验
- tlv5618驱动
- CATIA焊点输入输出EXCEL程序
- GearBox 齿轮减速器设计系统 V5.0注册机
- 用opengl编写的二十面体
- opengl 小球的碰撞和反弹模拟
- 3DS文件导入opengl程序
- ov5640自动对焦固件
- 用OpenGL绘制汽车并控制
- GLSL 基础介绍OpenGLES 2.0
- 开源3D游戏引擎 HXEngine
- opengl光照、纹理映射和键盘控制
评论
共有 条评论