Как рассчитать угол секторов по двум точкам, радиусу, центру круга

Как рассчитать угол секторов по двум точкам, радиусу, центру круга. Я пытаюсь это: (p1,p2 - точки в круге, центр - центр круга)

startAngle = (int)(180 / Mathf.PI * Mathf.Atan2(p1.y - center.y, p1.x - center.x));
endAngle = (int)(180 / Mathf.PI * Mathf.Atan2(p2.y - center.y, p2.x - center.x));

2 ответа

Вы можете найти угол между векторами к первой точке и ко второй точке, используя перекрестное произведение и скалярное произведение. Этот подход дает подписанный (направленный) угол.

dy1 = p1.y - center.y;
dx1 = p1.x - center.x;
dy2 = p2.y - center.y;
dx2 = p2.x - center.x;
SectorAngle = Mathf.Atan2(dx1*dy2-dx2*dy1, dx1*dx2+dy1*dy2)

То, что у вас есть, выглядит хорошо для меня, если вы хотите измерить углы в градусах против часовой стрелки относительно оси x.

Здесь это в латексе, с индексом нулевых величин, являющихся центром круга.

Другие вопросы по тегам