




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 法制考试专项测试题附答案(一)
- 行业报告与论文写作规范模版轻松掌握工具
- 2025年村级后备干部考试题(附答案)
- 企业宣传资料制作规范及模板指南
- 铁矿采矿技术人员培训方案
- 高速公路乡土树种绿化应用推广方案
- 森林退化林分改造建设方案
- 污水处理厂改扩建实施规划方案
- 半导体芯片封测项目可行性研究报告
- 食谱设计考试题目及答案
- 动物疫病防治学课件
- 采石场合作协议合同范本
- 工厂临时用电作业方案
- 大学实验室物资管理办法
- 钻井液培训课件
- 外包特殊过程管理办法
- 朋友圈点赞活动方案
- 2026年中考道德与法治一轮复习:重点考点知识分类背诵提纲
- 劳动防护用品穿戴使用标准培训
- 建筑施工消防安全知识培训
- 实验室危险化学品安全培训
评论
0/150
提交评论