[我有一辆汽车和一个代表行人的点,我能够找到向量a和b(请参见下图),然后尝试计算它们之间的角度]
我使用已知公式cos(角度)=幅度(vector_a)*幅度(vector_a))/ dot_product(vector_a,vector_b),但是当我计算余弦时,它比一个大得多,因此无法计算角度。 ..我在做什么错?
def detect_pedestrian(car,pedestrian):
#Find a vector which connects pedestrian with a car
pedestrian_position = pedestrian.body.position
car_position = car.body.position
#Find vectors a and b
car_vector = Box2D.b2Body.__GetTransform(car.body).R.GetYAxis()
pedestrian_vector = pedestrian_position - car_position
#Calculate magnitudes of both vector
pedestrian_vector_magnitude = np.linalg.norm(pedestrian_vector)
car_vector_magnitude = np.linalg.norm(car_vector)
#Normalize both vectors
pedestrian_vector_normalized = pedestrian_vector/pedestrian_vector_magnitude
car_vector_normalized = car_vector/car_vector_magnitude
#Calculate angle
magnitudes = pedestrian_vector_magnitude * car_vector_magnitude
dot_product = b2Dot(pedestrian_vector_normalized, car_vector_normalized)
cosine = magnitudes/dot_product
arccos = np.arccos(cosine)
print(cosine)
非常感谢
您需要汽车的heading