按程度在圆圈上找到一个圆点?

时间:2011-06-08 14:06:16

标签: math geometry

假设我们有一个100x100坐标系,如下图所示。 0,0是它的左上角,50,50是它的中心点,100,100是它的右下角等。

现在我们需要从中心向外画一条线。我们知道线的角度,但需要计算其终点的坐标。 您认为最好的方法是什么?

例如,如果直线的角度为45度,则其终点坐标约为75,15。

enter image description here

3 个答案:

答案 0 :(得分:10)

您需要使用三角函数sincos

这样的事情:

theta = 45
// theta = pi * theta / 180      // convert to radians.
radius = 50
centerX = 50
centerY = 50
p.x = centerX + radius * cos(theta)
p.y = centerY - radius * sin(theta)

请记住,大多数实现都假设您正在使用弧度并且正向y指向上方。

答案 1 :(得分:3)

使用单位圆计算X和Y,但因为半径为50,所以乘以50

http://en.wikipedia.org/wiki/Unit_circle

添加偏移量(50,50)并将bob作为你的叔叔

X = 50 + (cos(45) * 50) ~ 85,36
Y = 50 - (sin(45) * 50) ~ 14,65

以上恰好是45度。

编辑:刚看到Y轴反转

答案 2 :(得分:2)

首先,您需要计算X和Y坐标,就好像圆是单位圆(半径1)。给定角度的X坐标由cos(angle)给出,Y坐标由sin(angle)给出。 sincos的大多数实现都以弧度为单位进行输入,因此需要进行转换(1度= 0.0174532925弧度)。现在,由于您的坐标系实际上不是单位圆,您需要将结果值乘以圆的半径。在这个给定的例子中,你将乘以50,因为你的圆在每个方向上延伸50个单位。最后,使用单位圆coorindate系统假设您的圆以原点为中心(0,0)。要考虑到这一点,请从计算的X和Y坐标添加(或减去)中心的偏移量。在您的场景中,(0,0)的偏移在正X方向上为50,在负Y方向上为50。

例如:

cos(45) = x ~= .707
sin(45) = y ~= .707

.707*50 = 35.35

35.35+50 = 85.35
abs(35.35-50) = 14.65

因此,结束段的坐标为(85.35,14.65)。

请注意,您所选择的语言中可能存在内置度数到弧度的函数,我提供了单位转换以供参考。

编辑:oops,首先使用度数