資源簡(jiǎn)介
這是計(jì)算機(jī)圖形學(xué)的代碼包,包括:三維變換.實(shí)時(shí)動(dòng)畫(huà),圖形裁剪, 圖形相交—相切, 消隱 ,幀動(dòng)畫(huà), 真實(shí)感圖形學(xué)。都能運(yùn)行,對(duì)初學(xué)者很有用!
代碼片段和文件信息
//?baseClass.cpp:?implementation?of?the?CMyClass?class.
//
//////////////////////////////////////////////////////////////////////
#include?“stdafx.h“
#include?“三維變換.h“
#include?“baseClass.h“
#include?“三維變換View.h“
#include?“math.h“
#define?PI?3.141592654
#ifdef?_DEBUG
#undef?THIS_FILE
static?char?THIS_FILE[]=__FILE__;
#define?new?DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
//?Construction/Destruction
//////////////////////////////////////////////////////////////////////
CbaseClass::CbaseClass()
{
?ed=2000eh=100od=400hl=1ps=0;
}
CbaseClass::~CbaseClass()
{
}
//?此函數(shù)賦軸測(cè)圖中立體上頂點(diǎn)的齊次坐標(biāo)值
void???CbaseClass::ReadWorkpiece()?
{
??X[1]?=?0;??Y[1]?=?0;??Z[1]?=?0;??C[1]?=?1;
??X[2]?=?45;??Y[2]?=?0;??Z[2]?=?0;??C[2]?=?1;
??X[3]?=?45;?Y[3]?=?37;??Z[3]?=?0;??C[3]?=?1;
??X[4]?=?0;??Y[4]?=?37;??Z[4]?=?0;??C[4]?=?1;
??X[5]?=?0;??Y[5]?=?37;??Z[5]?=?45;??C[5]?=?1;
??X[6]?=?0;??Y[6]?=?0;??Z[6]?=?45;??C[6]?=?1;
??X[7]?=?12;??Y[7]?=?0;??Z[7]?=?45;??C[7]?=?1;
??X[8]?=?30;??Y[8]?=?0;??Z[8]?=?14;??C[8]?=?1;
??X[9]?=?45;??Y[9]?=?0;??Z[9]?=?14;??C[9]?=?1;
??X[10]?=?45;??Y[10]?=?37;??Z[10]?=?14;??C[10]?=?1;
??X[11]?=?30;??Y[11]?=?37;??Z[11]?=?14;??C[11]?=?1;
??X[12]?=?12;??Y[12]?=?37;??Z[12]?=?45;??C[12]?=?1;
??X[13]?=?12;??Y[13]=21;??Z[13]=45;??C[13]?=?1;
// ?X[14]?=?22;??Y[14]=31;??Z[14]=27;??C[14]?=?1;
}
/***************************************************
*?此函數(shù)分別用于三個(gè)視圖的投影變換,統(tǒng)一用變換后頂?*
*?點(diǎn)的三個(gè)坐標(biāo)計(jì)算公式求其坐標(biāo)值。這三個(gè)公式是由點(diǎn)?*
*?的齊次坐標(biāo)乘以變換矩陣得來(lái)的。實(shí)際上每個(gè)視圖投影?*
*?只有二個(gè)非零坐標(biāo)需要計(jì)算求得,而另一個(gè)坐標(biāo)是零勿?*
*?需計(jì)算。因此也可以根據(jù)三個(gè)不同視圖的投影,分別采?*
*?用其投影后的二個(gè)坐標(biāo)計(jì)算式來(lái)求坐標(biāo)值。函數(shù)中可用?*
*?條件語(yǔ)句選擇不同視圖投影采用不同坐標(biāo)計(jì)算式求值。?*
***************************************************/
void???CbaseClass::Calculate(array2d?B)
{
??ReadWorkpiece();
??for?(int?i?=?1;??i?<=?12;??++i?)
??{
?????XT[i]?=3*X[i]*B[1][1]+3*Y[i]*B[2][1]+3*Z[i]*B[3][1]+C[i]*B[4][1];
?????YT[i]?=3*X[i]*B[1][2]+3*Y[i]*B[2][2]+3*Z[i]*B[3][2]+C[i]*B[4][2];
?????ZT[i]?=3*X[i]*B[1][3]+3*Y[i]*B[2][3]+3*Z[i]*B[3][3]+C[i]*B[4][3];
??}
}
//?此函數(shù)求軸測(cè)投影后點(diǎn)的坐標(biāo)值
void???CbaseClass::MCalculate(array2d?B)
{
??ReadWorkpiece();
??for?(?int?i?=?1;??i?<=?12;??++i?)
??????{
?????XT[i]?=3*X[i]*B[1][1]+3*Z[i]*B[2][1]+3*Y[i]*B[3][1]+C[i]*B[4][1];
?????YT[i]?=3*X[i]*B[1][2]+3*Z[i]*B[2][2]+3*Y[i]*B[3][2]+C[i]*B[4][2];
?????ZT[i]?=3*X[i]*B[1][3]+3*Z[i]*B[2][3]+3*Y[i]*B[3][3]+C[i]*B[4][3];
??????}?
??//?三個(gè)坐標(biāo)計(jì)算公式由點(diǎn)的齊次坐標(biāo)乘以軸測(cè)投影變換矩陣得來(lái)。
}
void???CbaseClass::XCalculate(array2d?B)
{int?i;
??Read();
??for?(i?=?1;i<9;i++?)
??{
?????ax[i]?=XP[i]*B[1][1]+YP[i]*B[2][1]+ZP[i]*B[3][1]+CP[i]*B[4][1];
?????ay[i]?=XP[i]*B[1][2]+YP[i]*B[2][2]+ZP[i]*B[3][2]+CP[i]*B[4][2];
?????az[i]?=XP[i]*B[1][3]+YP[i]*B[2][3]+ZP[i]*B[3][3]+CP[i]*B[4][3];
??}
}
void?CbaseClass::Display()
{
CframeWnd*?pWnd=(CframeWnd*)AfxGetApp()->m_pMainWnd;
CDC*?pdc=pWnd->GetActiveView()->GetDC();
CRect?rr;
::GetClientRect(pWnd->GetActiveView()->m_hWndrr);
DrawText()
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件???????4001??2004-12-16?17:06??cd\真實(shí)感圖形學(xué)\BLine.cpp
?????文件????????554??2004-11-28?23:11??cd\真實(shí)感圖形學(xué)\BLine.h
?????文件??????11561??2004-12-16?17:06??cd\真實(shí)感圖形學(xué)\BRender.cpp
?????文件????????983??2004-12-16?17:06??cd\真實(shí)感圖形學(xué)\BRender.h
?????文件??????13885??2004-12-16?16:55??cd\真實(shí)感圖形學(xué)\BTriangle.cpp
?????文件????????929??2004-11-28?23:11??cd\真實(shí)感圖形學(xué)\BTriangle.h
?????文件???????4762??2004-12-16?17:06??cd\真實(shí)感圖形學(xué)\ColorBuffer.cpp
?????文件???????1181??2004-11-28?23:11??cd\真實(shí)感圖形學(xué)\ColorBuffer.h
?????文件???????1718??2004-11-28?20:05??cd\真實(shí)感圖形學(xué)\Edg.cpp
?????文件???????1544??2004-11-28?23:11??cd\真實(shí)感圖形學(xué)\Edge.cpp
?????文件????????651??2004-12-16?17:06??cd\真實(shí)感圖形學(xué)\Edge.h
?????文件??????????2??2004-11-28?20:28??cd\真實(shí)感圖形學(xué)\Facet.asp
?????文件???????1448??2004-11-28?23:11??cd\真實(shí)感圖形學(xué)\Facet.cpp
?????文件????????601??2004-11-28?23:11??cd\真實(shí)感圖形學(xué)\Facet.h
?????文件??????????0??2004-11-28?20:07??cd\真實(shí)感圖形學(xué)\FloatColor.asp
?????文件???????1732??2004-11-28?23:11??cd\真實(shí)感圖形學(xué)\FloatColor.cpp
?????文件???????6276??2004-12-16?17:06??cd\真實(shí)感圖形學(xué)\FloatColor.h
?????文件???????3952??2004-12-16?17:06??cd\真實(shí)感圖形學(xué)\Grphcs.h
?????文件???????7958??2004-12-16?17:06??cd\真實(shí)感圖形學(xué)\Img.h
?????文件???????8989??2004-12-16?17:06??cd\真實(shí)感圖形學(xué)\Lighting.cpp
?????文件????????702??2004-11-28?23:11??cd\真實(shí)感圖形學(xué)\Lighting.h
?????文件???????4058??2004-11-28?23:11??cd\真實(shí)感圖形學(xué)\LightObj.cpp
?????文件????????930??2004-11-28?23:11??cd\真實(shí)感圖形學(xué)\LightObj.h
?????文件???????2622??2004-11-28?23:45??cd\真實(shí)感圖形學(xué)\MainFrm.cpp
?????文件???????1495??2004-11-28?23:15??cd\真實(shí)感圖形學(xué)\MainFrm.h
?????文件???????2874??2004-11-28?23:11??cd\真實(shí)感圖形學(xué)\Material.cpp
?????文件????????768??2004-11-28?23:11??cd\真實(shí)感圖形學(xué)\Material.h
?????文件??????15595??2004-12-16?17:06??cd\真實(shí)感圖形學(xué)\Matrix3d.cpp
?????文件???????2443??2004-11-28?23:11??cd\真實(shí)感圖形學(xué)\Matrix3d.h
?????文件???????9419??2004-11-28?23:11??cd\真實(shí)感圖形學(xué)\ob
............此處省略323個(gè)文件信息
評(píng)論
共有 條評(píng)論