Processing 平移后的旋转坐标
有没有办法真正旋转坐标系 我希望能够不断地说x=x+1,但是使用translate使圆以不同的角度移动,类似于Turtle图形,并且根本不想使用Y轴 我试过旋转功能,但它只旋转物体,而不是它移动的方向,除非我做错了什么?我还不太熟悉向量,只是还没有很好地使用它们 提前谢谢。将Processing 平移后的旋转坐标,processing,Processing,有没有办法真正旋转坐标系 我希望能够不断地说x=x+1,但是使用translate使圆以不同的角度移动,类似于Turtle图形,并且根本不想使用Y轴 我试过旋转功能,但它只旋转物体,而不是它移动的方向,除非我做错了什么?我还不太熟悉向量,只是还没有很好地使用它们 提前谢谢。将旋转()功能想象为旋转相机。它确实会旋转坐标系,只是不像你说的那样 事实上,我认为海龟图形根本不旋转坐标系,它旋转海龟。您可以通过跟踪某些变量并自己进行旋转和绘图来实现这一点: float turtleX; float tu
旋转()功能想象为旋转相机。它确实会旋转坐标系,只是不像你说的那样
事实上,我认为海龟图形根本不旋转坐标系,它旋转海龟。您可以通过跟踪某些变量并自己进行旋转和绘图来实现这一点:
float turtleX;
float turtleY;
float turtleHeading = 0;
void setup() {
size(500, 500);
turtleX = width/3;
turtleY = height/4;
}
void draw() {
forward(100);
rotateTurtle(45);
forward(100);
rotateTurtle(45);
forward(100);
rotateTurtle(45);
forward(100);
rotateTurtle(45);
forward(100);
rotateTurtle(45);
forward(100);
rotateTurtle(45);
forward(100);
rotateTurtle(45);
forward(100);
noLoop();
}
void forward(float amount) {
float newX = turtleX + cos(radians(turtleHeading)) * amount;
float newY = turtleY + sin(radians(turtleHeading)) * amount;
line(turtleX, turtleY, newX, newY);
ellipse(newX, newY, 10, 10);
turtleX = newX;
turtleY = newY;
}
void rotateTurtle(float degrees) {
turtleHeading += degrees;
}
或者您可以使用一个类来封装它:
Turtle turtle;
void setup() {
size(500, 500);
turtle = new Turtle(width/3, height/4);
}
void draw() {
turtle.forward(100);
turtle.rotate(45);
turtle.forward(100);
turtle.rotate(45);
turtle.forward(100);
turtle.rotate(45);
turtle.forward(100);
turtle.rotate(45);
turtle.forward(100);
turtle.rotate(45);
turtle.forward(100);
turtle.rotate(45);
turtle.forward(100);
turtle.rotate(45);
turtle.forward(100);
noLoop();
}
class Turtle {
float x;
float y;
float heading = 0;
public Turtle(float x, float y) {
this.x = x;
this.y = y;
}
void forward(float amount) {
float newX = x + cos(radians(heading)) * amount;
float newY = y + sin(radians(heading)) * amount;
line(x, y, newX, newY);
ellipse(newX, newY, 10, 10);
x = newX;
y = newY;
}
void rotate(float degrees) {
heading += degrees;
}
}
这只是一个基本的例子,但希望它能说明我所说的。您可以将其添加到该类中以使其更美观,并且您甚至可以将其作为库导入,例如,如果您使用该类来教授学生,并且希望向他们隐藏该类的详细信息
但我会退一步问你为什么要用这种东西。如果你只是在玩,那很酷,但是你也可能会想尝试多“思考”。处理使用绝对坐标系,而不是相对乌龟(或笔),它的所有功能都是基于这一点设计的。伊姆霍,试图强迫别人用一种不同的思维方式来思考这类事情,这是徒劳的
但就像我说的,如果你这么做只是为了玩,那就太酷了 非常感谢,我这样问是因为我只使用了几个星期的处理程序,而且我有多年的海龟经验,我不是说海龟旋转了坐标,我只是想让它以类似的方式工作,这样我就可以把我做的一些项目转换成更简单的处理程序,“我认为进入大脑处理空间需要相当长的时间,但这让我知道了如何绕过它。”皮纳特明白。我已经编辑了我的答案,以包含一个不需要类的简单示例。