假设我们有一个100x100坐标系,如下图所示。 0,0是它的左上角,50,50是它的中心点,100,100是它的右下角等。
现在我们需要从中心向外画一条线。我们知道线的角度,但需要计算其终点的坐标。 您认为最好的方法是什么?
例如,如果直线的角度为45度,则其终点坐标约为75,15。
答案 0 :(得分:10)
您需要使用三角函数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指向上方。
答案 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)
给出。 sin
和cos
的大多数实现都以弧度为单位进行输入,因此需要进行转换(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,首先使用度数