程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> 三視圖的畫法

三視圖的畫法

編輯:C語言基礎知識
大一的時候學畫法幾何,感覺很難畫三視圖。近日,計算機圖形學老師教了我們一個三視圖的算法,感覺很好。特來發表。因為時間關系,我編了個非凡簡單的做為示例。 #include<graphics.h>
  int dx[12]={0,60,60,0,0,60,60,0,60,0,60,0}; /*確定組合體X坐標*/
  int dy[12]={0,0,120,120,0,0,40,40,80,80,120,120};/*確定組合體Y坐標*/
  int dz[12]={0,0,0,0,80,80,80,80,40,40,40,40};/*確定組合體Z坐標*/
  int ld[24]={0,1,2,3,0,4,5,6,7,4,10,11,9,8,10,2,3,11,8,6,9,7,1,5};/*確定連接各線的順序*/
  int tl[24]={0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,0,1,0,1,0,1};
  int i,j,vh=100,vw=120,x,y,x0=250,y0=200;
  main()
  {
  int driver=DETECT,mode=0;
  initgraph(&driver,&mode,"");
  setbkcolor(BLUE);
  setcolor(YELLOW);
  zu();
  fu();
  zo();
  fo();
  getch();
  closegraph();
  }
  zu()/*主視圖*/
  {
  for(i=0;i<24;i++)
  {
  j=ld[i];
  x=x0-dx[j];
  y=y0-dz[j];
  if(tl[i]==0)
  moveto(x,y);
  lineto(x,y);
    }
  } fu()/*俯視圖*/
  
  {
  for(i=0;i<24;i++)
  {j=ld[i];
  x=x0-dx[j];
  y=y0+dy[j]+vh;
  if(tl[i]==0)
  moveto(x,y);
  lineto(x,y);
    }
  } zo()/*側視圖*/
  
  {
  for(i=0;i<24;i++)
  {
   j=ld[i];
   x=x0+dy[j]+vw;
   y=y0-dz[j];
   if(tl[i]==0)
  moveto(x,y);
  lineto(x,y);
    }
  } fo()/*軸側圖*/
  
  {
  for(i=0;i<24;i++)
  {j=ld[i];
  x=x0-0.7071*dx[j]+0.7071*dy[j]+150;
  y=y0+0.4082*dx[j]+0.4082*dy[j]-0.8165*dz[j]+150;
   if(tl[i]==0)
  moveto(x,y);
  lineto(x,y);
    }
  }
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved