Math 按度数在圆上找到一个点?

Math 按度数在圆上找到一个点?,math,geometry,Math,Geometry,假设我们有一个100x100的坐标系,如下所示。0,0是它的左上角,50,50是它的中心点,100100是它的右下角,等等 现在我们需要从中心向外画一条线。我们知道直线的角度,但需要计算其端点的坐标您认为最好的方法是什么? 例如,如果直线的角度为45度,则其端点坐标大约为75,15 您需要使用三角函数sin和cos 大概是这样的: theta = 45 // theta = pi * theta / 180 // convert to radians. radius = 50 cent

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

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

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


您需要使用三角函数
sin
cos

大概是这样的:

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向上。

使用单位圆来计算X和y,但是因为半径是50,所以需要乘以50

加上偏移量(50,50)和鲍勃的叔叔

X = 50 + (cos(45) * 50) ~ 85,36
Y = 50 - (sin(45) * 50) ~ 14,65
上面正好是45度


编辑:刚刚看到Y轴反转

首先,您需要计算X和Y坐标,就像圆是单位圆一样(半径1)。给定角度的X坐标由
cos(angle)
给出,Y坐标由
sin(angle)
给出。大多数
sin
cos
的实现都以弧度为输入单位,因此需要进行转换(1度=0.0174532925弧度)。现在,由于坐标系实际上不是单位圆,所以需要将结果值乘以圆的半径。在这个给定的例子中,您将乘以50,因为您的圆在每个方向上延伸50个单位。最后,使用单位圆坐标系假设圆以原点(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)

注意,在您选择的语言中可能有一个内置的从度到弧度的函数,我提供了单位转换以供参考


编辑:哎呀,刚开始使用的度数

会出现一个野值!用三角法!它非常有效!尽管你的问题很基本,但你可以在www.mathoverflow.com上问数学相关的问题。在这种情况下,获得一个代码实现来做数学可能需要在这里问它?附言:我在实现中看到一些关于弧度的评论。将度转换为弧度的最简单方法是在实现中查找宏或任何内容。通常会有类似deg_到rad之类的东西。如果没有,请使用提供的数学公式:
pi*x/180
x*(pi/180)
@aioobe如果您在编辑答案时出错
centerY-radius*sin(θ)
应该是
centerY+radius*sin(θ)
@aioobe您这样做只是为了更改y的原点,使y从顶部开始,而不是从中心开始。但是这应该用centerY变量来完成,它是原点,所以你可以在等式中保留
+
符号,因为它是正确的,并且将
centerY
改为
-50
:)如果你把它放在一边,你可以在这里看到接受的答案,这让你对如何更改y的原点感到困惑因为y轴是反向的。下面的答案也是如此。