Степень между 2 векторами? - PullRequest
       6

Степень между 2 векторами?

0 голосов
/ 17 августа 2011

Что не так с этим вычислением степеней?

Я выбрал 2 вектора, которые должны иметь степень 90 °.

Я пробовал с cos, cos ^ -1 и безпотому что расчет.но вывод моего кода:
0 (без вычисления cos)
1 (косинус)
1.5707963267949 (косинус ^ -1 (acos))

local square = math.sqrt;
local weaponVector, hitVector = , {x = 0, y = 0, z = 1,}, {x = 0, y = 1, z = 0,};
local xW, yW, zW = weaponVector.x, weaponVector.y, weaponVector.z;
local xH, yH, zH = hitVector.x, hitVector.y, hitVector.z;
local angleBetweenWeaponAndHitDirection = math.acos(math.abs(xW*xH+yW*yH+zW*zH)
            / (square(xW*xW+yW*yW+zW*zW) * square(xH*xH+yH*yH+zH*zH)));
if (angleBetweenWeaponAndHitDirection>180) then
    angleBetweenWeaponAndHitDirection = 360-angleBetweenWeaponAndHitDirection;
end
print(angleBetweenWeaponAndHitDirection)
print(math.cos(angleBetweenWeaponAndHitDirection))
print(math.acos(angleBetweenWeaponAndHitDirection))

Ответы [ 3 ]

9 голосов
/ 17 августа 2011

1.57079 - правильный ответ, но в Радианы .

Чтобы преобразовать радианы в градусы, умножьте на 180 / pi.

1 голос
/ 17 августа 2011

Математические функции работают с радианами, поэтому ваши сравнения и операции должны быть также в радианах, а не в градусах.

1 голос
/ 17 августа 2011

1,5707963267949 (косинус ^ -1 (acos))

Это выглядит как 90 градусов (пи / 2)

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