320x240 彩色LCD營幕的八角窗形-A的幾何圖形範例#19
本次的圖形,基本上是八角窗形圖案,在撰寫過程中,曾試想用相關公式的方式來撰寫,但是實測後結果未如預期,之後才用最笨的方式來完成,各位同好看到程式碼,可能大失所望,不過這也許讓有心研究的人,有個機會挑戰一下如何精簡程式碼。
GS[0][0]=120+(cos(0)*100);
GS[0][1]=180+(sin(0)*100);
GS[1][0]=GS[0][0];
GS[1][1]=GS[0][1]+(sin((90)*PI/180)*35);
GS[2][0]=GS[1][0]+(cos((135)*PI/180)*(GS[1][1]-GS[0][1]));
GS[2][1]=GS[1][1]+(sin((135)*PI/180)*(GS[1][1]-GS[0][1]));
GS[3][0]=GS[2][0]+(cos((135)*PI/180)*(GS[1][1]-GS[0][1]));
GS[3][1]=GS[2][1]+(sin((135)*PI/180)*(GS[1][1]-GS[0][1]));
GS[4][0]=GS[2][0]+(cos((270)*PI/180)*(GS[1][1]-GS[0][1]));
GS[4][1]=GS[2][1]+(sin((270)*PI/180)*(GS[1][1]-GS[0][1]));
x1=GS[3][0]+(cos((180)*PI/180)*(GS[1][1]-GS[0][1]));
y1=GS[3][1]+(sin((180)*PI/180)*(GS[1][1]-GS[0][1]));
GS[5][0]=GS[2][0]+(cos((180)*PI/180)*(GS[1][1]-GS[0][1]));
GS[5][1]=GS[2][1]+(sin((180)*PI/180)*(GS[1][1]-GS[0][1]));
Line(GS[0][0],GS[0][1],GS[1][0],GS[1][1],YCOLOR[z1]);
Line(GS[1][0],GS[1][1],GS[2][0],GS[2][1],YCOLOR[z1]);
Line(GS[2][0],GS[2][1],GS[3][0],GS[3][1],YCOLOR[z1]);
Line(GS[2][0],GS[2][1],GS[4][0],GS[4][1],YCOLOR[z1]);
Line(GS[2][0],GS[2][1],GS[5][0],GS[5][1],YCOLOR[z1]);
Line(GS[0][0],GS[0][1],GS[4][0],GS[4][1],YCOLOR[z1]);
Line(GS[3][0],GS[3][1],x1,y1,YCOLOR[z1]);
Line(GS[5][0],GS[5][1],x1,y1,YCOLOR[z1]);
Line(x1-(GS[5][0]-x1),GS[5][1],x1,y1,YCOLOR[z1]);
Line(x1-(GS[3][0]-x1),GS[3][1],x1,y1,YCOLOR[z1]);
Line(x1-(GS[1][0]-x1),GS[1][1],x1-(GS[2][0]-x1),GS[2][1],YCOLOR[z1]); //
Line(x1-(GS[5][0]-x1),GS[5][1],x1-(GS[2][0]-x1),GS[2][1],YCOLOR[z1]);
Line(x1-(GS[2][0]-x1),GS[2][1],x1-(GS[3][0]-x1),GS[3][1],YCOLOR[z1]);
Line(x1-(GS[2][0]-x1),GS[2][1],x1-(GS[4][0]-x1),GS[4][1],YCOLOR[z1]);
Line(x1-(GS[0][0]-x1),GS[0][1],x1-(GS[1][0]-x1),GS[1][1],YCOLOR[z1]);
Line(x1-(GS[0][0]-x1),GS[0][1],x1-(GS[4][0]-x1),GS[4][1],YCOLOR[z1]);
Line(x1-(GS[0][0]-x1),GS[0][1],x1-(GS[0][0]-x1),GS[0][1]-(GS[1][1]-GS[0][1]),YCOLOR[z1]);
Line(x1-(GS[0][0]-x1),GS[0][1],x1-(GS[4][0]-x1),GS[0][1]-(GS[4][1]-GS[0][1]),YCOLOR[z1]);
Line(x1-(GS[1][0]-x1),GS[0][1]-(GS[1][1]-GS[0][1]),x1-(GS[2][0]-x1),GS[0][1]-(GS[2][1]-GS[0][1]),YCOLOR[z1]);
Line(x1-(GS[4][0]-x1),GS[0][1]-(GS[4][1]-GS[0][1]),x1-(GS[2][0]-x1),GS[0][1]-(GS[2][1]-GS[0][1]),YCOLOR[z1]);
Line(x1-(GS[3][0]-x1),GS[0][1]-(GS[3][1]-GS[0][1]),x1-(GS[2][0]-x1),GS[0][1]-(GS[2][1]-GS[0][1]),YCOLOR[z1]);
Line(x1-(GS[3][0]-x1),GS[0][1]-(GS[3][1]-GS[0][1]),x1,GS[0][1]-(GS[3][1]-GS[0][1]),YCOLOR[z1]);
Line(x1-(GS[5][0]-x1),GS[0][1]-(GS[5][1]-GS[0][1]),x1-(GS[2][0]-x1),GS[0][1]-(GS[2][1]-GS[0][1]),YCOLOR[z1]);
Line(x1-(GS[5][0]-x1),GS[0][1]-(GS[5][1]-GS[0][1]),x1,GS[0][1]-(GS[3][1]-GS[0][1]),YCOLOR[z1]);
Line(GS[5][0],GS[0][1]-(GS[5][1]-GS[0][1]),x1,GS[0][1]-(GS[3][1]-GS[0][1]),YCOLOR[z1]);
Line(GS[3][0],GS[0][1]-(GS[3][1]-GS[0][1]),x1,GS[0][1]-(GS[3][1]-GS[0][1]),YCOLOR[z1]);
Line(GS[3][0],GS[0][1]-(GS[3][1]-GS[0][1]),GS[0][0],GS[0][1]-(GS[1][1]-GS[0][1]),YCOLOR[z1]);
Line(GS[5][0],GS[0][1]-(GS[5][1]-GS[0][1]),GS[2][0],GS[0][1]-(GS[2][1]-GS[0][1]),YCOLOR[z1]);
Line(GS[0][0],GS[0][1],GS[0][0],GS[0][1]-(GS[1][1]-GS[0][1]),YCOLOR[z1]);
Line(GS[2][0],GS[0][1]-(GS[2][1]-GS[0][1]),GS[2][0],GS[0][1]-(GS[4][1]-GS[0][1]),YCOLOR[z1]);
Line(GS[2][0],GS[0][1]-(GS[4][1]-GS[0][1]),GS[0][0],GS[0][1],YCOLOR[z1]);
Line(GS[4][0],GS[4][1],x1+(cos(30*PI/180)*20),180+(sin(30*PI/180)*20),YCOLOR[z1]);
Line(GS[5][0],GS[5][1],x1+(cos(60*PI/180)*20),180+(sin(60*PI/180)*20),YCOLOR[z1]);
Line(x1-(GS[5][0]-x1),GS[5][1],x1+(cos(120*PI/180)*20),180+(sin(120*PI/180)*20),YCOLOR[z1]);
Line(x1-(GS[4][0]-x1),GS[4][1],x1+(cos(150*PI/180)*20),180+(sin(150*PI/180)*20),YCOLOR[z1]);
Line(x1-(GS[4][0]-x1),GS[0][1]-(GS[4][1]-GS[0][1]),x1+(cos(210*PI/180)*20),180+(sin(210*PI/180)*20),YCOLOR[z1]);
Line(x1-(GS[5][0]-x1),GS[0][1]-(GS[5][1]-GS[0][1]),x1+(cos(240*PI/180)*20),180+(sin(240*PI/180)*20),YCOLOR[z1]);
Line(GS[5][0],GS[0][1]-(GS[5][1]-GS[0][1]),x1+(cos(300*PI/180)*20),180+(sin(300*PI/180)*20),YCOLOR[z1]);
Line(GS[4][0],GS[0][1]-(GS[4][1]-GS[0][1]),x1+(cos(330*PI/180)*20),180+(sin(330*PI/180)*20),YCOLOR[z1]);
for(j=0;j<361;j++)
{ x2=x1+(cos(j*PI/180)*20); // 中心點 x座標
y2=180+(sin(j*PI/180)*20); // 中心點 y座標
Put_pixel(x2,y2,YCOLOR[z1]);
}