Страницы

Поиск по вопросам

среда, 29 января 2020 г.

Вычитание векторов в полярной системе координат

#математика #геометрия


Есть два вектора A и B, заданные длиной и углом (от 0 до 360 градусов). Нужно найти
угол вектора C, который получился в результате разницы векторов A и B.

Я пытался. Но уверен что это принципиально неверно. 

Vector Computing::lateralDem(Vector v1, Vector v2) {
    double z = pow(v1.value, 2) + pow(v2.value, 2) - 2 * v1.value*v2.value*cos(v1.angle
+ PI - v2.angle); // --длина(по теореме косинусов)
    double c = asin(sin(v1.angle + PI - v2.angle) * v2.value / z) - v1.angle; //
--угол(по теореме синусов)
    return{ c,sqrt(z) };
}

    


Ответы

Ответ 1



Vector Computing::Subtract(Vector v1, Vector v2) { // calculates new vector as (v2 - v1) double a1 = v1.angle * PI / 180; double a2 = v2.angle * PI / 180; double x1 = v1.value * cos(a1); double y1 = v1.value * sin(a1); double x2 = v2.value * cos(a2); double y2 = v2.value * sin(a2); double x3 = x2 - x1; double y3 = y2 - y1; double value3 = sqrt(x3*x3 + y3*y3); double angle3 = atan2(y3, x3); return { value = value3, angle = angle3 / PI * 180 }; } Павел, прошу прощения, я погорячился и был неправ. Разность двух векторов это вектор, соединяющий их концы - направленный от конца "вычитаемого" к концу "уменьшаемого". То есть в Вашем последнем примере v1 = { 0, 100 }; v2 = { 180, 100 }; v3 = v2 - v1 = { 180, 200 }; Что касается отрицательных углов, диапазон значений, возвращаемых функцией atan2, - от -PI до PI. Если Вам нужны значения от нуля до 2PI, просто прибавьте PI к отрицательному результату.

Ответ 2



Переход в декартову систему, вычитание, переход в полярную Думаю, далее понятно, как посчитать угол?

Комментариев нет:

Отправить комментарий