正二十面体&&正十二面体

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

展开图如下所示:

若以正二十面体的中心为原点,各顶点的坐标分别为Φ,0,±1)},在此Φ = (1+

正十二面体是正二十面体的对偶多面体。

建立模型的基本过程如下:

void CTestView::ReadPoint()//点表

{

double a=180;//长方形的宽

double b=a*(1+sqrt(5))/2;//黄金分割的矩形的长

double half=0.5;

//第一个长方形的各个顶点

P[0].x=half*a;P[0].y=0;P[0].z=half*b;

P[1].x=-half*a;P[1].y=0;P[1].z=half*b;

P[2].x=half*a;P[2].y=0;P[2].z=-1/2.0*b;

P[3].x=-1/2.0*a;P[3].y=0;P[3].z=-half*b;

//第二个长方形的各个顶点

P[4].x=half*b;P[4].y=-half*a;P[4].z=0;

P[5].x=half*b;P[5].y=half*a;P[5].z=0;

P[6].x=-half*b;P[6].y=half*a;P[6].z=0;

P[7].x=-half*b;P[7].y=-half*a;P[7].z=0;

//第三个长方形的各个顶点

P[8].x=0;P[8].y=-half*b;P[8].z=half*a;

P[9].x=0;P[9].y=-half*b;P[9].z=-half*a;

P[10].x=0;P[10].y=half*b;P[10].z=half*a;

P[11].x=0;P[11].y=half*b;P[11].z=-half*a;

}

void CTestView::ReadFace()//面表

{

//面的边数、面的顶点编号

F[0].SetEN(3) ;F[0].p[0]=0 ;F[0].p[1]=5 ;F[0].p[2]=10 ;

F[1].SetEN(3) ;F[1].p[0]=5 ;F[1].p[1]=2 ;F[1].p[2]=11 ;

F[2].SetEN(3) ;F[2].p[0]=11 ;F[2].p[1]=3 ;F[2].p[2]=6 ;

F[3].SetEN(3) ;F[3].p[0]=6 ;F[3].p[1]=1 ;F[3].p[2]=10 ;

F[4].SetEN(3) ;F[4].p[0]=7 ;F[4].p[1]=1 ;F[4].p[2]=6 ;

F[5].SetEN(3) ;F[5].p[0]=1 ;F[5].p[1]=0 ;F[5].p[2]=10 ;

F[6].SetEN(3) ;F[6].p[0]=8 ;F[6].p[1]=0 ;F[6].p[2]=1 ;

F[7].SetEN(3) ;F[7].p[0]=0 ;F[7].p[1]=4 ;F[7].p[2]=5 ;

F[8].SetEN(3) ;F[8].p[0]=4 ;F[8].p[1]=2 ;F[8].p[2]=5 ;

F[9].SetEN(3) ;F[9].p[0]=2 ;F[9].p[1]=3;F[9].p[2]=11 ;

F[10].SetEN(3);F[10].p[0]=2 ;F[10].p[1]=9;F[10].p[2]=3 ;

F[11].SetEN(3);F[11].p[0]=3 ;F[11].p[1]=7 ;F[11].p[2]=6;

F[12].SetEN(3);F[12].p[0]=4 ;F[12].p[1]=9;F[12].p[2]=2;

F[13].SetEN(3);F[13].p[0]=9;F[13].p[1]=7 ;F[13].p[2]=3 ;

F[14].SetEN(3);F[14].p[0]=7 ;F[14].p[1]=8;F[14].p[2]=1 ;

F[15].SetEN(3);F[15].p[0]=8;F[15].p[1]=4 ;F[15].p[2]=0;

F[16].SetEN(3);F[16].p[0]=10 ;F[16].p[1]=5 ;F[16].p[2]=11;

F[17].SetEN(3);F[17].p[0]=6;F[17].p[1]=10;F[17].p[2]=11;

F[18].SetEN(3);F[18].p[0]=4 ;F[18].p[1]=8;F[18].p[2]=9 ;

F[19].SetEN(3);F[19].p[0]=8 ;F[19].p[1]=7 ;F[19].p[2]=9;

}

正十二面体

正十二面体是五个柏拉图立体之一,共有二十个顶点、三十条边和十二个面,而每一个面皆是正五边形

正十二面体是由12 个正五边形所组成的正多面体。若以正十二面体的中心为(0,0,0),各顶点的坐标为{(0,±1/φ,±φ), (±1/φ,±φ,0), (±φ,0,±1/φ), (±1,±1,±1)},其中φ = (1+√5)/2,黄金分割数。

展开图

Ptemp[2].x=half*a;Ptemp[2].y=0;Ptemp[2].z=-1/2.0*b;

Ptemp[3].x=-1/2.0*a;Ptemp[3].y=0;Ptemp[3].z=-half*b;

//第二个长方形的各个顶点

Ptemp[4].x=half*b;Ptemp[4].y=-half*a;Ptemp[4].z=0;

Ptemp[5].x=half*b;Ptemp[5].y=half*a;Ptemp[5].z=0;

Ptemp[6].x=-half*b;Ptemp[6].y=half*a;Ptemp[6].z=0;

Ptemp[7].x=-half*b;Ptemp[7].y=-half*a;Ptemp[7].z=0;

//第三个长方形的各个顶点

Ptemp[8].x=0;Ptemp[8].y=-half*b;Ptemp[8].z=half*a;

Ptemp[9].x=0;Ptemp[9].y=-half*b;Ptemp[9].z=-half*a;

Ptemp[10].x=0;Ptemp[10].y=half*b;Ptemp[10].z=half*a;

Ptemp[11].x=0;Ptemp[11].y=half*b;Ptemp[11].z=-half*a;

//通过正二十面体计算正十二面体顶点坐标

CVector v1,v2,v3,vn;

v1=CVector(Ptemp[0]);v2=CVector(Ptemp[5]);v3=CVector(Ptemp[10]);//0,5,10 vn=((v1+v2+v3)/3).Unit();

P[0].x=r*vn.x;P[0].y=r*vn.y;P[0].z=r*vn.z;//把点放到球面坐标上

v1=CVector(Ptemp[5]);v2=CVector(Ptemp[2]);v3=CVector(Ptemp[11]);//5,2,11 vn=((v1+v2+v3)/3).Unit();

P[1].x=r*vn.x;P[1].y=r*vn.y;P[1].z=r*vn.z;

相关文档
最新文档