我写了一个简单的代码来旋转一条线。以下是源代码:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
#include<graphics.h>
void main(){
int gd=DETECT, gm;
int x1, y1, x2, y2, t, deg, b1, b2;
initgraph(&gd,&gm,"c:\\tc\\bgi");
printf("Enter coordinates of line: ");
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
printf("Enter angle of rotation: ");
scanf("%d",°);
line(x1, y1, x2, y2);
getch();
t = (22*deg)/(180*7);
b1 = cos(t)*x1 - sin(t)*y1;
b2 = cos(t)*x1 + sin(t)*y1;
line(x1,y1,b1,b2);
getch();
closegraph();
}
问题是它会产生一些静态输出,并且不会根据给定的输入旋转线。对于任何值deg变量,旋转的线几乎相似。
答案 0 :(得分:1)
您的变量t
是int
,但三角函数需要float
或double
s。
所以如果你声明:
int x1, y1, x2, y2, deg, b1, b2;
float t;
它应该工作。 您的计划可能存在更多问题。
BTW:给你的变量一些明显的名字,例如: angle
代替t.
你从度数到弧度的转换也有点笨拙,因为22/7是PI的粗略近似值:
t = (22*deg)/(180*7);
使用这个:
t = 3.1415926 * deg / 180
甚至只是这个(如果在math.h包含文件中声明了PI)
t = PI * deg / 180