資源簡介
這是計算機圖形學的代碼包,包括:三維變換.實時動畫,圖形裁剪, 圖形相交—相切, 消隱 ,幀動畫, 真實感圖形學。都能運行,對初學者很有用!
代碼片段和文件信息
//?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()
{
}
//?此函數賦軸測圖中立體上頂點的齊次坐標值
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;
}
/***************************************************
*?此函數分別用于三個視圖的投影變換,統一用變換后頂?*
*?點的三個坐標計算公式求其坐標值。這三個公式是由點?*
*?的齊次坐標乘以變換矩陣得來的。實際上每個視圖投影?*
*?只有二個非零坐標需要計算求得,而另一個坐標是零勿?*
*?需計算。因此也可以根據三個不同視圖的投影,分別采?*
*?用其投影后的二個坐標計算式來求坐標值。函數中可用?*
*?條件語句選擇不同視圖投影采用不同坐標計算式求值。?*
***************************************************/
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];
??}
}
//?此函數求軸測投影后點的坐標值
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];
??????}?
??//?三個坐標計算公式由點的齊次坐標乘以軸測投影變換矩陣得來。
}
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()
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4001??2004-12-16?17:06??cd\真實感圖形學\BLine.cpp
?????文件????????554??2004-11-28?23:11??cd\真實感圖形學\BLine.h
?????文件??????11561??2004-12-16?17:06??cd\真實感圖形學\BRender.cpp
?????文件????????983??2004-12-16?17:06??cd\真實感圖形學\BRender.h
?????文件??????13885??2004-12-16?16:55??cd\真實感圖形學\BTriangle.cpp
?????文件????????929??2004-11-28?23:11??cd\真實感圖形學\BTriangle.h
?????文件???????4762??2004-12-16?17:06??cd\真實感圖形學\ColorBuffer.cpp
?????文件???????1181??2004-11-28?23:11??cd\真實感圖形學\ColorBuffer.h
?????文件???????1718??2004-11-28?20:05??cd\真實感圖形學\Edg.cpp
?????文件???????1544??2004-11-28?23:11??cd\真實感圖形學\Edge.cpp
?????文件????????651??2004-12-16?17:06??cd\真實感圖形學\Edge.h
?????文件??????????2??2004-11-28?20:28??cd\真實感圖形學\Facet.asp
?????文件???????1448??2004-11-28?23:11??cd\真實感圖形學\Facet.cpp
?????文件????????601??2004-11-28?23:11??cd\真實感圖形學\Facet.h
?????文件??????????0??2004-11-28?20:07??cd\真實感圖形學\FloatColor.asp
?????文件???????1732??2004-11-28?23:11??cd\真實感圖形學\FloatColor.cpp
?????文件???????6276??2004-12-16?17:06??cd\真實感圖形學\FloatColor.h
?????文件???????3952??2004-12-16?17:06??cd\真實感圖形學\Grphcs.h
?????文件???????7958??2004-12-16?17:06??cd\真實感圖形學\Img.h
?????文件???????8989??2004-12-16?17:06??cd\真實感圖形學\Lighting.cpp
?????文件????????702??2004-11-28?23:11??cd\真實感圖形學\Lighting.h
?????文件???????4058??2004-11-28?23:11??cd\真實感圖形學\LightObj.cpp
?????文件????????930??2004-11-28?23:11??cd\真實感圖形學\LightObj.h
?????文件???????2622??2004-11-28?23:45??cd\真實感圖形學\MainFrm.cpp
?????文件???????1495??2004-11-28?23:15??cd\真實感圖形學\MainFrm.h
?????文件???????2874??2004-11-28?23:11??cd\真實感圖形學\Material.cpp
?????文件????????768??2004-11-28?23:11??cd\真實感圖形學\Material.h
?????文件??????15595??2004-12-16?17:06??cd\真實感圖形學\Matrix3d.cpp
?????文件???????2443??2004-11-28?23:11??cd\真實感圖形學\Matrix3d.h
?????文件???????9419??2004-11-28?23:11??cd\真實感圖形學\ob
............此處省略323個文件信息
評論
共有 條評論