• 大小: 426KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: C/C++
  • 标签: MFC  OpenGL  OBJ  窗口分割  

资源简介

此代码可以实现在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\link.command.1.tlog

     文件      19076  2017-07-05 10:50  visualize\Debug\visualize.tlog\link.read.1.tlog

     文件       2518  2017-07-05 10:50  visualize\Debug\visualize.tlog\link.write.1.tlog

     文件       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个文件信息

评论

共有 条评论