nullVC和Matlab混合编程总结
同山
2007.10.14.
http://tongj1981.cnblogs.com/VC和Matlab混合编程总结
同山
2007.10.14.
http://tongj1981.cnblogs.com/引言引言对于计算机图形学的研究,有一些工具软件是我们需要了解和掌握的:
Visual C++
Matlab
ACIS
……引言引言Visual C++
基本的编程实现平台(&OpenGL)
编译语言,代码运行速度快
可脱离开发平台运行,易于工程中使用
代码编制复杂,不适合算法
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
初期使用
缺少通用的常用数值运算功能(矩阵…)引言引言Matlab
解释语言,易于实现,适用于算法设计
具有常用的数值运算功能
代码运行速度慢
不能脱离Matlab开发平台运行对比对比在VC中实现二维矩阵的存储和输出:
矩阵相加,相乘,求逆,稀疏矩阵…… double matrix[3][3] = {1,2,3,4,5,6,7,8,9};
for (int i=0;i<3;i++)
{
for (int j=0;j<3;j++)
cout<
数学
数学高考答题卡模板高考数学答题卡模板三年级数学混合运算测试卷数学作业设计案例新人教版八年级上数学教学计划
库函数
首先看看具体开发工具的设置:null1 将Matlab\extern\include下所有的头文件打包为include.rar,解压缩到用户
目录
工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录
/test下
2 将mglinstaller.exe文件复制到用户目录/test下,并运行解压缩出动态库
3 在VC的Tools-Options中将上述的头文件和库文件目录加入到Directory下
4 新建工程,按照下面的图片依次设置nullnullnullnullnull5 在程序中#include
现在可以使用
Matlab C++ Math Library 了!!!nullint Faces[4][3] = {1,2,3,2,4,3,3,4,6,4,5,6};
double Vertexs[6][3]={0,0,0,1,1,0,1,-1,0,2,-0.2,
0,3,-0.8,0,2.8,1,0};
null // 将网格顶点数据附为mwArray类型变量
mwArray mVertexes = zeros(6,3);
for (i=1;i<=6;i++)
for (j=1;j<=3;j++)
mVertexes(i,j) = Vertexs[i-1][j-1];
// 将网格顶点数据附为mwArray类型变量
mwArray mFaces = zeros(4,3);
for (i=1;i<=4;i++)
for (j=1;j<=3;j++)
mFaces(i,j) = Faces[i-1][j-1];null // 获得顶点相关边长权稀疏矩阵
mwArray v2v = sparse(zeros(6,6));
for (i=1;i<=4;i++) // 对面遍历
{
mwArray v1 = mFaces(i,1); //面上的一个顶点序号
mwArray v2 = mFaces(i,2);
mwArray v3 = mFaces(i,3);
mwArray v1xyz = mVertexes(v1,colon()); //面的三个顶点的三维坐标向量
mwArray v2xyz = mVertexes(v2,colon());
mwArray v3xyz = mVertexes(v3,colon());
v2v(v1,v2) = norm(v1xyz-v2xyz); //用对应的边长向顶点相关系数矩阵赋值
v2v(v1,v3) = norm(v1xyz-v3xyz);
v2v(v2,v3) = norm(v2xyz-v3xyz);
}null // 矩阵运算
mwArray mVertexes2 = 2*mVertexes;
// 矩阵求逆 inv
// 集合交并补 intersect
// 排序 sort
// ......
// 获得mwArray数据的值
for (i=1;i<=6;i++)
for (j=1;j<=3;j++)
{
mwArray vxyz = mVertexes(i,j);
Vertexs[i-1][j-1] = vxyz.ExtractScalar(1);
}应用举例应用举例求三角网格
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
面的近似测地线
切原始网格的边,迭代算法,数据结构复杂,直接用VC实现困难
计算量大,一万顶点网格的顶点邻接矩阵的规模为108,直接用Matlab实现算法速度太慢null应用举例:
求539点Bunny三角网格表面一条近似测地线
原来需要40s,现需要0.25snull应用举例:
求32316点弥勒佛表面一条近似测地线
原来无法计算,现需要12snull参考资料:
MATLAB C++ Math Library 2.1 Reference .pdf
MATLAB C++ Math Library 2.1 User's Guide.pdf