在圆形路径中移动对象


26

我想在圆形路径中移动一个对象(点)。我应该如何更改X和Y坐标来完成此操作?

Answers:


54

您可以使用简单的数学方法做到这一点:

X := originX + cos(angle)*radius;
Y := originY + sin(angle)*radius;

(originX,originY)是圆的中心。 radius是它的半径。而已。

之所以有效,是因为正弦和余弦在数学上与单位圆有关

正弦和余弦与单位圆的关系
图片来源:LucasVB(自己的作品)[公共领域],通过Wikimedia Commons获得。(缩小到70%。)


如果是椭圆形怎么办?即没有设定半径。
测试

2
@test:如果椭圆是X或Y定向的,则可以将相应的轴位置乘以其他因子。如果您需要更多详细信息,则应该询问一个单独的问题。
克罗姆斯特表示支持莫妮卡2015年

@Anko:我认为动画不能更好地说明它,但是对需要它的人来说,可以做到。转换为CW。
克罗姆斯特表示支持莫妮卡2015年

@Kromster如何在3D空间中获得相同的结果?
Tomas

14

您可以使用Krom标记的参数方程式。要了解为什么我们使用此公式,您必须了解方程式。该方程式是从circle参数方程式导出的。

如下图所示,考虑到以原点(O)为中心绘制圆 圈

如果我们在圆的圆周上取点“ p”,其半径为r。

令OP的角度(原点为p)为θ。设p与x轴的距离为y设p与y轴的距离为x

使用以上假设,我们得到如下所示的三角形: 三角形

现在我们知道cosθ=基本/斜边sinθ=垂直/斜边

这使我们cosθ= x / rsinθ= y / r

:: x = r * cosθ和y = r * sinθ

但是,如果圆不在原点上,而是在(a,b)上,那么我们可以说圆的中心偏移了

a单位为x轴
b单位为y轴
因此,对于这样的圆,我们可以通过在x和y轴上添加位移来相应地更改参数方程式,从而得到以下方程式:

x = a +(r * cosθ)
y = b + (r * sinθ)


其中a&b是圆心的x,y坐标。

因此,我们发现x和y在半径为r的圆的圆周上的点的坐标


2
谢谢,这个问题的答案非常好,很简短
Ali.Ghodrat

5

还有另一种技巧,您可以使用sin(x + a)和cos(x + a)公式,从而可以计算sin(a)和cos(a)-这是您要移动的角度从您当前的位置开始-仅一次,并且在每个步骤中只需进行乘法和加法即可。

sin(x + a)= sin(x)* cos(a)+ cos(x)* sin(a),iirc。

当然,这假定角速度恒定。

但是要提防有限的算术精度。我观察到,过去的“圆形”运动以这种方式实现,由于随着时间的推移偶尔舍入,因此会产生螺旋。每次旋转后可能需要将位置重置为(x0,y0)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.