线段的平移

这几天在学习计算机图形学,做了一个线段的平移,具体说应该是线段的复制。

这段代码输出的只有原先自己画的直线,并没有显示平移后的直线:

 1 #include "graphics.h"
 2 #include "stdio.h"
 3 void main()
 4 {
 5   int gdriver,gmode;
 6   int i,j,k;
 7   int a[2][3]={{10,10,1},{200,200,1}};
 8   int b[3][3]={{1,0,0},{0,1,0},{100,200,1}};
 9   int c[2][3]={0};
10   //矩阵乘法
11   for(i=0;i<2;i++)
12     for(j=0;j<3;j++)
13       for(k=0;k<3;k++)
14       {
15         c[i][j]+=a[i][k]*b[k][j];
16       }
17 
18   /*for(i=0;i<2;i++)
19   {
20     for(j=0;j<3;j++)
21       printf("%d ",c[i][j]);
22     printf("\n");
23   }*/
24   gdriver=DETECT;
25   initgraph(&gdriver,&gmode,"D:\\Program Files\\Win-TC\\projects");
26   line(10,10,200,200);
27   setcolor(12);
28   getch();
29   line(c[0][0],c[0][1],c[1][0],c[1][1]);
30   getch();
31   closegraph();
32 }

起初,把矩阵乘法写在initgraph()函数之前了,没有得到想要的结果,我觉得是文本模式被图形模式覆盖了,所以看不到变换后的矩阵输出了。而把矩阵乘法写到initgraph()函数之后,结果就是我要实现的了。正确代码:(把注释的文字删去,否则,有可能编译会出错)使用的是Win-TC编译器

 1 #include "graphics.h"
 2 #include "stdio.h"
 3 void main()
 4 {
 5   int gdriver,gmode;
 6   int i,j,k;
 7   int a[2][3]={{10,10,1},{200,200,1}};
 8   int b[3][3]={{1,0,0},{0,1,0},{100,200,1}};
 9   int c[2][3]={0};
10   gdriver=DETECT;
11   initgraph(&gdriver,&gmode,"D:\\Program Files\\Win-TC\\projects");
12   //矩阵乘法
13   for(i=0;i<2;i++)
14     for(j=0;j<3;j++)
15       for(k=0;k<3;k++)
16       {
17         c[i][j]+=a[i][k]*b[k][j];
18       }
19 
20   /*for(i=0;i<2;i++)
21   {
22     for(j=0;j<3;j++)
23       printf("%d ",c[i][j]);
24     printf("\n");
25   }*/
26   line(10,10,200,200);
27   setcolor(12);
28   getch();
29   line(c[0][0],c[0][1],c[1][0],c[1][1]);
30   getch();
31   closegraph();
32 }
posted @ 2012-10-18 14:19  Marshalkk  阅读(1132)  评论(0编辑  收藏  举报