Java 行旋转:处理
下面给出的代码用于围绕窗口中心旋转一条线。问题是程序的输出很奇怪。我哪里做错了?我包括代码和不同的输出来说明这个问题Java 行旋转:处理,java,rotation,drawing,line,processing,Java,Rotation,Drawing,Line,Processing,下面给出的代码用于围绕窗口中心旋转一条线。问题是程序的输出很奇怪。我哪里做错了?我包括代码和不同的输出来说明这个问题 void setup() { size(500,500); translate(width/2, height/2); line(0,0,200,0); line(0,0,0,200); line(0,0,-200,0); line(0,0,0,-200); pushMatrix(); float x=200*cos(degrees(30));
void setup()
{
size(500,500);
translate(width/2, height/2);
line(0,0,200,0);
line(0,0,0,200);
line(0,0,-200,0);
line(0,0,0,-200);
pushMatrix();
float x=200*cos(degrees(30));
float y=200*sin(degrees(30));
line(0,0,x,y);
popMatrix();
}
将角度更改为45时,我得到:
当我将角度改为60时,我得到:
这里的角度是如何工作的?您使用了错误的函数来获取弧度 转换度-->弧度 转换弧度-->度
以下代码运行良好:
float x, y, radius;
void setup () {
size(500, 500);
radius = 200;
}
void draw () {
background(255);
pushMatrix();
translate(width/2, height/2);
line(-200, 0, 200, 0);
line(0, -200, 0, 200);
x = radius*cos(radians(30));
y = radius*sin(radians(30));
line(0, 0, x, y);
popMatrix();
}
让我澄清另一件事: 转换是累积的,适用于发生的一切 对函数的after和后续调用会累积效果。 […]如果在draw()中调用translate()或rotate(),则 当循环再次开始时,转换被重置 pushMatrix()和popMatrix()对于封装不希望应用于整个代码的矩阵变换非常有用。在你的例子中,它们是无用的