Math 按度数在圆上找到一个点?
假设我们有一个100x100的坐标系,如下所示。0,0是它的左上角,50,50是它的中心点,100100是它的右下角,等等 现在我们需要从中心向外画一条线。我们知道直线的角度,但需要计算其端点的坐标您认为最好的方法是什么? 例如,如果直线的角度为45度,则其端点坐标大约为75,15Math 按度数在圆上找到一个点?,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
您需要使用三角函数
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轴是反向的。下面的答案也是如此。