我基本上从两点得到角度向量:
aa点到bb点。。。。(窗宽=800, 窗高=600)你知道吗
aa = (50.0*Window.width/100.0, 50.0*Window.height/100.0)
bb = (10.0*Window.width/100.0, 70.0*Window.height/100.0)
Angle = Vector(bb)-Vector(aa)
print(Angle)
[-320, 120]
有没有办法把矢量转换成一个表示角度的数字…比如90.0,45.0,180等等。。。?记住,我们从aa到bb…这个角度。你知道吗
另一种方法是,我想把上面的“角度”值转换成一个数字。你知道吗
这里没有Z轴。只有aa和bb的2d两点。窗口x线是从左到右定义的,0从左开始。你知道吗
窗口y线从下到上定义,0从底部开始。你知道吗
想说得更清楚些。。。你知道吗
向量点aa就像一个圆的中间。0度将从圆的右中边缘开始,逆时针方向将增加0度,直到达到360度,这将使你回到右中边缘。你知道吗
向量点aa可以移动,但是不管它在窗口中的位置如何,我想计算aa和它向(bb)移动的点之间的角度,aa是圆的中心,度数是逆时针的,就像我上面解释的那样。你知道吗
希望能给你带来更多的光明。你知道吗
好的,我找到了一个python函数,它可以工作,但并不完美。你知道吗
def GetAngleOfLineBetweenTwoPoints(self, p1, p2):
xDiff = p2[0] - p1[0]
yDiff = p2[1] - p1[1]
return degrees(atan2(yDiff, xDiff))
结果是
我得到了正确的度数,但它是分屏格式,我的意思是,我的屏幕上半部分从右到左是0到180正。我的屏幕从右到左的下半部分是0到-180。你知道吗
看到发生什么了吗?你知道吗
我怎样才能让这个函数返回一个0到360之间的值,比如一个完整的圆,而不是像现在这样的0到180+/-分割?你知道吗
你可以使用一些三角学:)
tan(角度)=相反/相邻
角度=arctan(相对/相邻)
你的对手是:bb.高度- aa.高度你知道吗
您的邻居将是:bb.宽度- aa.宽度你知道吗
我希望这有帮助。你知道吗
trigonometry
这个答案使用弧度https://stackoverflow.com/a/2827475/4711754
把度除以
2*math.pi
再乘以360。你知道吗如果我相信你想要水平的角度,你会想要的
示例
编辑
下面是版本是原点向量是窗口的中心
示例
明白了!你知道吗
呀呀呀呀呀呀呀呀!!!!!!!你知道吗
相关问题 更多 >
编程相关推荐