Рассчитать угол между двумя сегментами в трехмерном пространстве с простым питоном - PullRequest
0 голосов
/ 14 июня 2019

У меня есть два сегмента в трехмерном пространстве, определяемые координатами их начальной и конечной точек.

Мне нужно вычислить угол между этими двумя сегментами в Python без кусков или других необычных библиотек.

Я написал следующий код, который мне кажется правильным:

def CalcAngle(beg1, end1, beg2, end2):

  vect1 = [None, None, None]
  vect2 = [None, None, None]

  for cc in range(3):
    vect1[cc] = end1[cc] - beg1[cc]
    vect2[cc] = end2[cc] - beg2[cc]

  length1 = math.sqrt(vect1[0]**2+vect1[1]**2+vect1[2]**2)
  length2 = math.sqrt(vect2[0]**2+vect2[1]**2+vect2[2]**2)

  dotProd = 0.0
  for cc in range(3):
    dotProd += (vect1[cc] * vect2[cc])

  angleRad = math.acos( dotProd / (length1 * length2) )
  angleDeg = math.degrees(angleRad)

  return angleRad, angleDeg

# 1st segment
beg1 = [47.737, 31.8, 21.762]
end1 = [43.55, 38.956, 42.209]

# 2nd segment 
beg2 = [35.993, 18.033, 56.988]
end2 = [31.497, 18.783, 68.881]

angleRad, angleDeg = CalcAngle(beg1, end1, beg2, end2)

# angleRad is 0.312973304876
# angleDeg is 17.9320494697

Я что-то здесь упускаю?Есть ли ситуации, когда мой код не будет работать?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...