资源简介
此代码可以实现在VS2013上读取并绘制OBJ点云文件,并且以双试图显示,注释清晰明了,便于初学者的学习,可以完整运行!
代码片段和文件信息
// Bsp.cpp: implementation of the CBsp class.
//
//////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include “BSpline.h“
#include “Bsp.h“
#include
////////////////////////////////////////////Matrix
#include “Matrix.h“
#include “DecomposeDoc.h“
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CBsp::CBsp()
{
m_n = 0;
m_Poly = new CPoint[N];
m_PolyRev =new CPoint[N];
m_u = new double[N];
}
CBsp::~CBsp()
{
delete[] m_Poly;
delete[] m_u;
delete[] m_PolyRev;
}
void CBsp::SetControl(CPoint *Poly int n)
{
for (int i=0;i<=n-1;i++)
{
m_Poly[i] = Poly[i];
}
m_n = n;
}
void CBsp::Draw(CDC *PDC)
{
CDC* pDC=PDC;
CPen mypen;
mypen.CreatePen(PS_SOLID0RGB(25500));
pDC->Selectobject(mypen);
double xytdt;
for (int j=4;j<=m_n;j++)
{
dt=(m_u[j+1]-m_u[j])/50;
t=m_u[j];
while (t<=m_u[j+1]||(t-m_u[j+1]) {
x=0;
y=0;
if ((t-m_u[j+1])m_u[j+1])
t=m_u[j+1];
for (int i=j-3;i<=j;i++)
{
x+=baseFunc(i4t)*m_Poly[i-1].x;
y+=baseFunc(i4t)*m_Poly[i-1].y;
}
if(abs(t-m_u[4])<0.0001) {pDC->MoveTo(xy);}
pDC->LineTo(xy);
t+=dt;
}
}
mypen.Deleteobject();
}
void CBsp::DrawControl(CDC *PDC)
{
CDC* pDC=PDC;
CPen mypen;
mypen.CreatePen(PS_DOT0RGB(02550));
pDC->Selectobject(mypen);
pDC->Polyline(m_Polym_n);
}
void CBsp::SetKnot()
{
double x[N];
double y[N];
for (int i=0;i<=m_n-2;i++)
{
x[i]=(m_Poly[i+1].x-m_Poly[i].x)*(m_Poly[i+1].x-m_Poly[i].x);
y[i]=(m_Poly[i+1].y-m_Poly[i].y)*(m_Poly[i+1].y-m_Poly[i].y);
}
m_u[4]=sqrt(x[1]+y[1]);
for (int i=5;i {
m_u[i]=m_u[i-1]+sqrt(x[i-3]+y[i-3]);
}
m_u[1]=m_u[4];
m_u[2]=m_u[4];
m_u[3]=m_u[4];
m_u[m_n+2]=m_u[m_n+1];
m_u[m_n+3]=m_u[m_n+1];
m_u[m_n+4]=m_u[m_n+1];
}
double CBsp::baseFunc(int i int k double u)
{
if (k==1)
{
if ((u>=m_u[i])&&(u return 1;
else
return 0;
}
if (k==4)
if (i==m_n&&u==m_u[m_n+1])
return 1;
return divide((u-m_u[i])(m_u[i+k-1]-m_u[i]))*baseFunc(ik-1u)+
divide((m_u[i+k]-u)(m_u[i+k]-m_u[i+1]))*baseFunc(i+1k-1u);
}
double CBsp::divide(double x double y)
{
if (y==0)
return 0;
else
return x/y;
}
void CBsp::GetKnot(CPoint* polyint ndouble* _u)//用数据点得到节点向量
{
double x[N];
double y[N];
for (int i=0;i<=n-2;i++)
{
x[i]=(poly[i+1].x-poly[i].x)*(poly[i+1].x-poly[i].x);
y[i]=(poly[i+1].y-poly[i].y)*(poly[i+1].y-poly[i].y);
}
_u[4]=0;
for (int i=5;i<=n+3;i++)
{
_u[i]=_u[i-1]+sqrt(x[i-5]+y[i-5]);
}
_u[1]=_u[4];
_u[2]=_u[4];
_u[3]=_u[4];
_u[n+4]=_u[n+3];
_u[n+5]=_u[n+3];
_u[n+6]=_u[n+3];
}
voi
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 196608 2011-03-12 21:19 visualize\ANN\ANN.dll
文件 35890 2011-08-01 22:09 visualize\ANN\ANN.h
文件 18740 2011-03-12 21:19 visualize\ANN\ANN.lib
文件 8426 2011-03-12 21:19 visualize\ANN\ANNperf.h
文件 6497 2011-03-12 21:19 visualize\ANN\ANNx.h
文件 196608 2011-03-12 21:19 visualize\ANN.dll
文件 35890 2011-08-01 22:09 visualize\ANN.h
文件 18740 2011-03-12 21:19 visualize\ANN.lib
文件 8426 2011-03-12 21:19 visualize\ANNperf.h
文件 6497 2011-03-12 21:19 visualize\ANNx.h
文件 4116 2017-01-19 11:03 visualize\Bsp.cpp
文件 886 2017-01-16 10:13 visualize\Bsp.h
文件 60 2013-07-22 01:18 visualize\ClassDiagram.cd
文件 12861 2017-07-05 10:49 visualize\CvisualizeView1.cpp
文件 1924 2017-07-05 10:50 visualize\CvisualizeView1.h
文件 1648 2017-06-23 22:01 visualize\Debug\visualize.Build.CppClean.log
文件 2393 2017-07-05 10:50 visualize\Debug\visualize.log
文件 11574 2017-07-05 10:50 visualize\Debug\visualize.tlog\cl.command.1.tlog
文件 248460 2017-07-05 10:50 visualize\Debug\visualize.tlog\CL.read.1.tlog
文件 11894 2017-07-05 10:50 visualize\Debug\visualize.tlog\CL.write.1.tlog
文件 6064 2017-07-05 10:50 visualize\Debug\visualize.tlog\li
文件 19076 2017-07-05 10:50 visualize\Debug\visualize.tlog\li
文件 2518 2017-07-05 10:50 visualize\Debug\visualize.tlog\li
文件 1094 2017-07-05 08:13 visualize\Debug\visualize.tlog\rc.command.1.tlog
文件 6884 2017-07-05 08:13 visualize\Debug\visualize.tlog\rc.read.1.tlog
文件 478 2017-07-05 08:13 visualize\Debug\visualize.tlog\rc.write.1.tlog
文件 169 2017-07-05 10:50 visualize\Debug\visualize.tlog\visualize.lastbuildstate
文件 12488 2011-03-12 21:19 visualize\KMEANS\HEADER\KCtree.h
文件 2880 2011-03-12 21:19 visualize\KMEANS\HEADER\KCutil.h
文件 2787 2011-03-12 21:19 visualize\KMEANS\HEADER\KMcenters.h
............此处省略54个文件信息
- 上一篇:后缀表达式求解
- 下一篇:C语言经典例题100例含答案
相关资源
- MFC 窗口阴影效果
- 学生信息管理系统+MFC+VC6+SQLServer
- vs2017无法使用MFC添加类的问题
- windows后台监听键盘事件vs mfc版
- MFC中实现不同行高的CListCtrl
- 实训项目-基于MFC网络监控源代码可直
- opengl绘制花瓶源码基于glut库
- MFC按行读取txt文件,以空格分隔字符
- MFC:Socket编程—TCP服务端和多个客户
- 罗马尼亚度假问题MFC实现
- 语音信号处理- MFCC特征提取
- MFC 2010编写 C++ 求1元4次方程解,含1元
- MFC做的学生成绩管理系统
- MFC sql server的ADO及ODBC连接操作
- MFC控件重绘大全
- vs2013 c++串口助手源码
- MFC BUTTON按钮控件,设置按钮透明,按
- CHTMLDome1
- CPlot - MFC绘制曲线
- 仿QQ聊天 MFC 实现
- PN532-mfoc-mfcuk-GUI_V2.1.rar
- mfcc,,可输入自己的wav文件运行
- C++与js相互调用
- VS2013开发的MFC下的Modbus RTU
- c++密度据类MFC可视化
- MFC Afxcmn.h
- 七控制点B样条曲线
- 基于OpenDDS的MFC界面程序
- VC/MFC实现简单的Http服务器可访问图片
- MFC封装的MySQL操作类
评论
共有 条评论