300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 用c语言编写图形的变换程序 利用C语言实现二维图形的变换

用c语言编写图形的变换程序 利用C语言实现二维图形的变换

时间:2022-04-09 13:56:11

相关推荐

用c语言编写图形的变换程序 利用C语言实现二维图形的变换

满意答案

csmes

.08.27

采纳率:41%等级:13

已帮助:8466人

你先看看吧,思路大概就是这样,不懂的问我。

#include

#include

#include

using namespace std;

struct point

{

float x;

float y;

};

void translation(point*pt, float xp,float yp,int num)//num代表点的个数

{

for(int i=0;i

{

(pt+i)->x+=xp;

(pt+i)->y+=yp;

}

}

void scale(point *pt,float xs,float ys,int num)

{

for(int i=0;i

{

(pt+i)->x*=xs;

(pt+i)->y*=ys;

}

}

void rotation(point *pt,float angle,int num)

{

int a[2][2];

angle=angle/180*3.141592657;

a[0][0]=cos(angle);

a[0][1]=-sin(angle);

a[1][0]=sin(angle);

a[1][1]=cos(angle);

point* temp;

for(int i=0;i

{

temp->x=(pt+i)->x;

temp->y=(pt+i)->y;

(pt+i)->x=temp->x*a[0][0]+a[0][1]*temp->y;

(pt+i)->y*=temp->x*a[1][0]+a[1][1]*temp->y;

}

}

int main()

{

int i=0,N,mode,angle,xp,yp,xk,yk,num;

cout<

scanf("%d",&N);

num=N;

point pt[10];

while(N--)

{

printf("please input points(x,y):\n");

scanf("%f%f",&pt[i].x,&pt[i].y);

i++;

}

printf("please input motions\n");

printf("0 stand for translation:\n");

printf("1 stand for scale:\n");

printf("2 stand for rotation:\n");

scanf("%d",&mode);

switch(mode)

{

case 0:

printf("please input the translation in x and y direction respectivly:\n");

cin>>xp>>yp;

translation(pt, xp,yp,num);

break;

case 1:

printf("please input the scale in x and y direction respectivly:\n");

scanf("%f%f",&xk,&yk);

scale(pt, xk,yk,num);

break;

case 2:

printf("please input the angle:\n");

scanf("%f",&angle);

rotation(pt, angle,num);

break;

}

printf("after translatiton or scale or rotation:\n");

for(int i=0;i

printf("%f %f\n",pt[i].x,pt[i].y);

}

12分享举报

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。