三维变换设计.doc_第1页
三维变换设计.doc_第2页
三维变换设计.doc_第3页
三维变换设计.doc_第4页
三维变换设计.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include#include#include#include#include#define rad 0.0174532925#define number 24floatunumber=60.,20.,20.,80.,80.,60.,60.,0.,0.,60.,80.,0.,0.,0.,0.,0.,20.,20.,0.,0.,0.,80.,0.,0.,vnumber=20.,60.,60.,0.,0.,20.,20.,20.,20.,20.,0.,0.,20.,20.,60.,60.,60.,60.,60.,60.,0.,0.,0.,0.,wnumber=30.,30.,0.,0.,90.,90.,30.,30.,90.,90.,90.,90.,90.,30.,30.,0.,0.,30.,30.,0.,0.,0.,0.,90.;int ipennumber=3,2,2,2,2,2,2,2,2,2,3,2,2,3,2,2,2,3,2,3,2,2,3,2;int kindnumber=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1;void draw(float sf,float xc,float yc,float tranm4);void axono2d(float sf,float ox,float oy,float bta,float afa,float x,float y,float z,int kp,int kl,int mp);void plot(float x,float y,int ip,int lk);void initm(float unitm4);void mult4x4(float ma4,float mb4,float mc4);void transform(float x0,float y0,float z0,float *x,float *y,float *z,float tranm4);void translation(float l,float m,float n,float tranm4);void scaling(float sx,float sy,float sz,float tranm4);void rotationx(float xc,float yc,float zc,float alta,float tranm4);void rotationy(float xc,float yc,float zc,float beta,float tranm4);void rotationz(float xc,float yc,float zc,float gama,float tranm4);void projectx(float i,float m,float n,float tranm4);void projecty(float i,float m,float n,float tranm4);void projectz(float i,float m,float n,float tranm4);void mirrxoy(float l,float m,float n,float tranm4);void mirrxoz(float l,float m,float n,float tranm4);void mirryoz(float l,float m,float n,float tranm4);void shearing(float a,float b,float c,float d,float e,float f,float tranm4);main() int j,m=number; int gd=detect,gm; float tm44=0.; initgraph(&gd,&gm,d:tc); settextstyle(3,0,2); outtextxy(170,4,3d grapfics transformation); setwritemode(1); initm(tm); for(j=1;j=15;j+) setcolor(j); translation(0.,0.,-10.*j,tm); draw(1.,300.,350.,tm); for(j=1;j=15;j+) setcolor(j); translation(-10.*j,0.,0.,tm); draw(1.,300.,350.,tm); for(j=1;j=15;j+) setcolor(j); translation(0.,10.*j,0.,tm); draw(1.,300.,250.,tm); for(j=1;j=15;j+) setcolor(j); rotationx(0.,0.,0.,24.*j,tm); draw(1.,320.,240.,tm); for(j=1;j=15;j+) setcolor(j); rotationy(0.,0.,10.,24.*j,tm); draw(1.,320.,240.,tm); for(j=1;j=15;j+) setcolor(j); rotationz(0.,0.,10.,24.*j,tm); draw(1.,320.,240.,tm); for(j=1;j=15;j+) setcolor(j); scaling(0.2*j,0.2*j,0.2*j,tm); draw(1.,320.,240.,tm); setwritemode(0); axono2d(1.,320.,240.,-45.,35.2667,u,v,w,ipen,kind,number); projectx(-80.,0.,0.,tm); draw(1.,320.,240.,tm); projecty(0.,-80.,0.,tm); draw(1.,320.,240.,tm); projectz(0.,0.,-80.,tm); draw(1.,320.,240.,tm); getch(); cleardevice(); axono2d(1.,320.,240.,-45.,35.2667,u,v,w,ipen,kind,number); mirrxoy(0.,0.,-60.,tm); draw(1.,320.,240.,tm); mirrxoz(0.,-60.,0.,tm); draw(1.,320.,240.,tm); mirryoz(-60.,0.,0.,tm); draw(1.,320.,240.,tm); getch(); closegraph(); void draw(float sf,float xc,float yc,float tranm4) int i,m=number; float *px,*py,*pz,xu,yv,zw; float u1number,v1number,w1number; px=&xu; py=&yv; pz=&zw; for(i=0;im;i+) transform(ui,vi,wi,px,py,pz,tranm); u1i=*px; v1i=*py; w1i=*pz; axono2d(sf,xc,yc,-45.,35.2667,u1,v1,w1,ipen,kind,m); getch(); axono2d(sf,xc,yc,-45.,35.2667,u1,v1,w1,ipen,kind,m); void axono2d(float sf,float ox,float oy,float bta,float afa,float x,float y,float z,int kp,int kl,int mp) float bf,af,ca,cb,cg,sg,xp,yp,zp; int i; bf=bta*rad; af=afa*rad; cb=cos(bf); ca=cos(af); for(i=0;imp;i+) if(xi=0)xp=ox-sf*zi*cb; elsexp=ox+sf*(xi-zi*cb); if(yi=0)yp=oy+sf*zi*ca; elseyp=oy-sf*(yi-zi*ca); plot(xp,yp,kpi,kli); void plot(float x,float y,int ip,int lk) if(ip=3) moveto(int)x,(int)y); else if(lk=0) setlinestyle(userbit_line,0xffff,3); else setlinestyle(userbit_line,0xffff,3); lineto(int)x,(int)y); void initm(float unitm4) int n; for(n=0;n4;n+) unitmn0=0; unitmn1=0; unitmn2=0; unitmn3=0; unitmnn=1; void mult4x4(float ma4,float mb4,float mc4) int mi,mj,mk; for(mi=0;mi4;mi+) for(mj=0;mj4;mj+) mcmimj=0;for(mk=0;mk4;mk+)mcmimj=mcmimj+mamimk*mbmkmj; void transform(float x0,float y0,float z0,float *x,float *y,float *z,float tranm4) float xu,yv,zw,h; xu=tranm00*x0+tranm10*y0+tranm20*z0+tranm30; yv=tranm01*x0+tranm11*y0+tranm21*z0+tranm31; zw=tranm02*x0+tranm12*y0+tranm22*z0+tranm32; h=tranm03*x0+tranm13*y0+tranm23*z0+tranm33; (*x)=xu/h; (*y)=yv/h; (*z)=zw/h; void translation(float l,float m,float n,float tranm4) initm(tranm); tranm30=l; tranm31=m; tranm32=n; void scaling(float sx,float sy,float sz,float tranm4) initm(tranm); tranm00=sx; tranm11=sy; tranm22=sz; void rotationx(float xc,float yc,float zc,float alfa,float tranm4) initm(tranm); tranm11=cos(rad*alfa); tranm12=sin(rad*alfa); tranm21=-tranm12; tranm22=tranm11; tranm31=-yc*tranm11+zc*tranm12+yc; tranm32=yc*tranm12+zc*tranm11+zc; void rotationy(float xc,float yc ,float zc,float beta,float tranm4) initm(tranm); tranm00=cos(rad*beta); tranm20=sin(rad*beta); tranm02=-tranm20; tranm22=tranm00; tranm30=-xc*tranm00-zc*tranm20+xc; tranm32=xc*tranm20-zc*tranm00+zc; void rotationz(float xc,float yc,float zc,float gama,float tranm4) initm(tranm); tranm00=cos(rad*gama); tranm01=sin(rad*gama); tranm10=-tranm01; tranm11=tranm00; tranm30=-xc*tranm00+yc*tranm01+xc; tranm31=-xc*tranm01+yc*tranm00+yc; void projectx(float l,float m,float n,float tranm4) initm(tranm); tranm00=0; tranm30=l; tranm31=m; tranm32=n; void projecty(float l,float m,float n,float tranm4) initm(tranm); tranm11=0; tranm30=l; tranm31=m; tranm32=n; void projectz(float l,float m,float n,float tranm4) initm(tranm); tranm22=0; tranm30=l; tranm31=m; tranm32=n; void mirrxoy(float l,float m,float n,float tranm4) initm(tranm); tranm22=-1; tranm30=l; tranm31=m; tranm32=n; void mirrxoz(float l,float m,float n,float tranm4) initm(tranm); tranm11=-1; tran

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论