• 大小: 12.96MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-06-20
  • 语言: C/C++
  • 标签: MFC  OpenGL  OBJ  法向量  

资源简介

此代码基于MFC编程,在VS2013上可以实现读取OBJ文件和显示,并绘制了3D模型的法向量,注释也清晰易懂,便于初学者学习!

资源截图

代码片段和文件信息

// 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

     文件     795486  2017-05-10 21:35  visualize\bird.obj

     文件       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

     文件     147241  2017-06-25 17:29  visualize\Debug\fc.obj

     文件     194289  2017-07-05 11:39  visualize\Debug\MainFrm.obj

     文件     174317  2017-07-05 11:39  visualize\Debug\MenuFormView.obj

     文件     942019  2017-06-23 22:04  visualize\Debug\stdafx.obj

     文件    2976768  2017-07-05 11:43  visualize\Debug\vc120.idb

     文件    7335936  2017-07-05 11:42  visualize\Debug\vc120.pdb

     文件       5015  2017-06-25 15:28  visualize\Debug\Vector.obj

     文件     194150  2017-07-05 11:39  visualize\Debug\VectorModel.obj

     文件       1648  2017-06-23 22:01  visualize\Debug\visualize.Build.CppClean.log

     文件        430  2017-09-21 09:47  visualize\Debug\visualize.log

     文件     194579  2017-07-05 11:39  visualize\Debug\visualize.obj

     文件   47448064  2017-06-23 22:04  visualize\Debug\visualize.pch

     文件      78432  2017-06-25 15:28  visualize\Debug\visualize.res

     文件      12172  2017-07-05 11:43  visualize\Debug\visualize.tlog\cl.command.1.tlog

     文件     218060  2017-07-06 16:49  visualize\Debug\visualize.tlog\CL.read.1.tlog

     文件      10012  2017-09-21 09:47  visualize\Debug\visualize.tlog\CL.write.1.tlog

............此处省略68个文件信息

评论

共有 条评论