收藏 分享(赏)

c语言(三维图形变换).doc

上传人:eukav 文档编号:9468534 上传时间:2019-08-09 格式:DOC 页数:11 大小:40KB
下载 相关 举报
c语言(三维图形变换).doc_第1页
第1页 / 共11页
c语言(三维图形变换).doc_第2页
第2页 / 共11页
c语言(三维图形变换).doc_第3页
第3页 / 共11页
c语言(三维图形变换).doc_第4页
第4页 / 共11页
c语言(三维图形变换).doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、c语言(三维图形变换)#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.

2、,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,fl

3、oat 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,fl

4、oat 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,flo

5、at 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,fl

6、oat b,float c,float d,float e,float f,float tranm4);main()int j,m=NUMBER;int gd=DETECT,gm;float tm44=0.;initgraph(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+

7、)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)

8、;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.

9、,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();clos

10、egraph();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=py=pz=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

11、.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

12、;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);elseif(lk=0)setlinestyle(USERBIT_LINE,0xFFFF,3);elsesetlinestyle(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;uni

13、tmn3=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+tran

14、m30;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 s

15、z,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(f

16、loat 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(r

17、ad*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);

18、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)in

19、itm(tranm);tranm11=-1;tranm30=l;tranm31=m;tranm32=n;void mirryoz(float l,float m,float n,float tranm4)initm(tranm);tranm00=-1;tranm30=l;tranm31=m;tranm32=n;void shearing(float a,float b,float c,float d,float e,float f,float tranm4)initm(tranm);tranm01=a;tranm02=b;tranm10=c;tranm12=e;tranm20=d;tranm21=f;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报