freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

c課程設計3d模型管理系統(tǒng)(編輯修改稿)

2025-03-09 07:42 本頁面
 

【文章內容簡介】 public: Plane() { wN=0。 nN=0。 ka=。 color=RGB(255,0,0)。 mark=false。 } virtual ~Plane() { if(!wN){ delete [] pW。 delete [] pBw。 } if(!nN){ delete [] pN。 delete [] pBn。 } 15 } bool SetN(int wn,int nn) { if(wn3||nn0)return false。 wN=wn。nN=nn。 pW=new int[wN]。 pN=new int[nN]。 pBw=new int[wN]。 pBn=new int[nN]。 return true。 } friend class ThreeD。 }。 //////////////////////////////////////////////////// 4. 4 ThreeD 類的實現(xiàn) include include include include class ThreeD { private: int pN。 //點個數(shù) int bN。 //邊個數(shù) int *pShodowX。 //存放投影點 x 坐標 int *pShodowY。 //存放投影點 y 坐標 TDPoint *pPoints。 //物體的頂點的數(shù)組指針 Border *pBorders。 //物體的邊的數(shù)組指針 Plane *pPlanes。 //物體的面的數(shù)組指針 public: ThreeD(int n,int m)。 //設置點個數(shù) n,和邊條數(shù) m ~ThreeD()。 int GetpN(){return pN。} bool GetPoint(int n,TDPoint amp。p) {if(n=pNamp。amp。n0){p=*(pPoints+n1)。return true。}else return false。} bool SetPoint(int n,float x1,float y1,float z1)。 //設置第 n個點為( x,y,z) bool SetPoint(int n,TDPoint amp。p)。 //設置第 n個點為 p bool SetPlane(int n,int wn,int nn=0)。 //設置第 n 個面的外環(huán)點數(shù) wn,內環(huán)點數(shù) nn bool SetPlanePoints(int n,int wL,int wp,int nL=0,int np=0)。 //設置第 n個面的第 wL個外環(huán)點編號為 wp,第 nL 個內環(huán)點為 np void SetPointBorderPlaneMark(TDPoint amp。viewPoint,TDPoint 16 amp。viewAngle)。 //設置點標記 void caculatePlaneS()。 //計算平各面法向量 void MarkPlane(TDPoint amp。viewAngle)。 //標記哪個面可以看見,哪個看不見 void paintPlane(int N,TDPoint amp。viewPoint,TDPoint amp。viewAngle,CClientDC amp。dc,float L)。 //繪制第 N 個面 void show(CClientDC amp。dc,TDPoint amp。viewPoint,TDPoint amp。viewAngle,float L)。 }。 ///////////////////////////////////////////////////////////////// include include include ThreeD::ThreeD(int n,int m) { pN=n。bN=m。 pShodowX=new int[pN]。 pShodowY=new int[pN]。 pPoints=new TDPoint [pN]。 pBorders=new Border [bN]。 pPlanes=new Plane [bNpN+2]。 //面數(shù) =邊數(shù) 點數(shù) +2 } //////////////////////////////////////////////////// ThreeD::~ThreeD() { if(!pN) delete [] pPoints。 if(!bN) delete [] pBorders。 if(!(bNpN+2))delete [] pPlanes。 } //////////////////////////////////////////////////// bool ThreeD::SetPoint(int n,float x1,float y1,float z1) //設置第 n個點為( x,y,z) { if(npN||n1)return false。 (pPoints+n1)x=x1。 (pPoints+n1)y=y1。 (pPoints+n1)z=z1。 return true。 } //////////////////////////////////////////////////// bool ThreeD::SetPoint(int n,TDPoint amp。p) //設置第 n 個點為( x,y,z) { if(npN||n1)return false。 (pPoints+n1)x=。 17 (pPoints+n1)y=。 (pPoints+n1)z=。 return true。 } /////////////////////////////////////////////////// bool ThreeD::SetPlane(int n,int wn,int nn) { if(n1||nbNpN+2)return false。 return (pPlanes+n1)SetN(wn,nn)。 } //////////////////////////////////////////////////// bool ThreeD::SetPlanePoints(int n,int wL,int wp,int nL,int np) { if(n1||nbNpN+2||nL0||nL(pPlanes+n1)nN||np0||nppN) return false。 if(wL0 amp。amp。 wL=((pPlanes+n1)wN) amp。amp。 wp0 amp。amp。 wp=pN) { *((pPlanes+n1)pW+wL1)=wp。 if(nL0 amp。amp。 nL=((pPlanes+n1)nN) amp。amp。 np0 amp。amp。 np=pN) *((pPlanes+n1)pN+nL1)=np。 return true。 } return false。 } //////////////////////////////////////////////////// void ThreeD::SetPointBorderPlaneMark(TDPoint amp。viewPoint,TDPoint amp。viewAngle) { int i,j。 for(i=0。ipN。i++) (pPoints+i)mark=false。 for(i=0。ibN。i++) (pBorders+i)mark=false。 float xp1,yp1,zp1。 for(i=0。ibNpN+2。i++) { j=*((pPlanes+i)pW)。 xp1=(pPoints+j1)。 yp1=(pPoints+j1)。 zp1=(pPoints+j1)。 if(xp1*((pPlanes+i))+yp1*((pPlanes+i))+zp1*((pPlanes+i)S.z)=0) (pPlanes+i)mark=false。 18 else (pPlanes+i)mark=true。 } } //////////////////////////////////////////////////// void ThreeD::caculatePlaneS() { int ip,j1,j2,j3,k=0。 // k 為待確定的邊的編號 float x1,y1,z1,x2,y2,z2,x0,y0,z0,r。 for(ip=0。ipbNpN+2。ip++) { j1=*((pPlanes+ip)pW)。 //獲取第一個點編號 j2=*((pPlanes+ip)pW+1)。 //獲取第二個點編號 j3=*((pPlanes+ip)pW+2)。 //獲取第三個點編號 x1=(pPoints+j21)x(pPoints+j11)x。 y1=(pPoints+j21)y(pPoints+j11)y。 z1=(pPoints+j21)z(pPoints+j11)z。 x2=(pPoints+j31)x(pPoints+j21)x。 y2=(pPoints+j31)y(pPoints+j21)y。 z2=(pPoints+j31)z(pPoints+j21)z。 x0=y1*z2y2*z1。 //計算法向量 y0=x2*z1x1*z2。 z0=x1*y2x2*y1。 r=(float)sqrt(x0*x0+y0*y0+z0*z0)。 ((pPlanes+ip)S).x=x0/r。 //法向量 單位化 ((pPlanes+ip)S).y=y0/r。 ((pPlanes+ip)S).z=z0/r。 ///下面給邊唯一編號,并與點、面對應 ////////// int i,kk。 for(i=0。i(pPlanes+ip)wN。i++) //外環(huán)邊編號 { j1=*((pPlanes+ip)pW+i)。 if(i==(pPlanes+ip)wN1) //獲取兩點 j1,j2 j2=*((pPlanes+ip)pW)。 else j2=*((pPlanes+ip)pW+i+1)。 for(kk=0。kkk。kk++) //檢查前 k1個邊里是否有 j1,j2 組成的邊 if((pBorders+kk)p1==j1amp。amp。(pBorders+kk)p2==j2||(pBorders+kk)p1==j2amp。amp。(pBorders+kk)p2==j1){ kk=kk1。 //表明 j1,j2 組成的邊已存在 break。 } if(kk0){ *((pPlanes+ip)pBw+i)=kk。 //設置此面中第 i+1 個外 19 環(huán)邊的編號為 kk+1 continue。 } (pBorders+k)p1=j1。 //置 j1,j2 組成的邊編號為 k+1,即再 pBorders[]里下標為 k (pBorders+k)p2=j2。 *((pPlanes+ip)pBw+i)=k+1。 //設置此面中第 i+1 個外環(huán)邊的編號為 k+1 k++。 } for(i=0。i(pPlanes+ip)nN。i++) //內環(huán)邊編號 { j1=*((pPlanes+ip)
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1