float k;
by=arr[polydeflen-1][1]; for (i=0;i if (i == polydeflen-1) { } else { } x=arr[i][0]; y=arr[i][1]; if((y-ay)!=0) k=(ax-x)/(float)(y-ay); ax=arr[i+1][0]; ay=arr[i+1][1]; ax=arr[0][0]; ay=arr[0][1]; if((y-by)*(ay-y)>=0) putpixel(x,y,value); getch(); if(ay for(j=y-1;j>ay;j--) } } putpixel(x+(int)((y-j)*k),j,value); else for(j=y+1;j putpixel(x-(int)((j-y)*k),j,value); by=y; void edge_mark_fill(int ar[][2],int value,int polydeflen) { int i,x,y,inside; int min,max; inside=false; min=ar[0][1];max=ar[0][1]; edge_mark(ar,value,polydeflen); for (i=1;i for (y=min;y<=max;y++) { for(x=0;x<=640;x++) if (ar[i][1]>max) max=ar[i][1]; if (ar[i][1] min=ar[i][1]; } } { } if(getch()==17) exit(1); if (getpixel(x,y) == value) inside=!(inside); if (inside!=false) putpixel(x,y,value); else putpixel(x,y,0); void main() { char t[100]; int polydef[MP][2]; int i,j,gdriver,gmode,polydeflen,value; gdriver=DETECT; initgraph(&gdriver,&gmode,\printf(\scanf(\printf(\scanf(\ printf(\ } for (i=0;i for (j=0;j<2;j++) scanf(\ printf(\edge_mark_fill(polydef,value,polydeflen); for(i=0;i } sprintf(t,\outtextxy(polydef[i][0],polydef[i][1],t); getch(); closegraph(); 实验截图: 实验4 二维图形几何变换 实验目的 1、 通过实验,进一步理解和掌握二维图形几何变换算法; 2、 掌握以上算法进行二维图形几何变换基本过程; 3、 通过编程,会在TC环境下完成二维图形几何变换过程。 实验环境 计算机、Turbo C或其他C语言程序设计环境 实验学时 2学时,必做实验。 实验内容 任意画一个平面图形, (1)按比例缩小或放大.缩放比例由用户定义,缩放的参考点由用户确定; (2)旋转.由键盘输入旋转角度和旋转中心。 实验步骤 1、 算法、原理清晰,有详细的设计步骤; 2、 依据算法、步骤或程序流程图,用C语言编写源程序; 3、 编辑源程序并进行调试; 4、 进行运行测试,并结合情况进行调整; 5、 对运行结果进行保存与分析; 6、 打印源程序或把源程序以文件的形式提交; 7、 按格式书写实验报告。 实验代码: #include \#include \#include\