0

У меня есть двумерный vector V, представленный целыми числами, и я вычитаю constant C от величины V и получаю vector W, который имеет то же направление, что и V, но, очевидно, величина | V | минус C.Вычесть константу из величины вектора (укоротить вектор) без использования квадратного корня?

Величина требует квадратного корня, а целые квадратные корни - раздражение. Я действительно не хочу конвертировать в float для этого, и в прошлом мне удалось манипулировать уравнениями для удаления квадратных корней (например, проецирования одного вектора в другой) ... Но это сложно. Так или иначе, основное уравнение - W = (|V| - C) * (V/|V|), я думаю. Я пробовал манипулировать им, но не могу удалить величину в какой-то момент.

Можно ли даже вычесть из величины вектора без использования квадратного корня?

+0

В вашем последнем уравнении 'V' должно быть единичным вектором:' W = (| V | - C) * (V/| V |) ' – Blender

+0

Упс, хороший вызов. – user173342

ответ

6

Нет - если вы сокращаете (1, 1) на 1, то вы получаете (1 - 1/√2, 1 - 1/√2), и нет возможности писать 1 - 1/√2, используя только +, -, *,/и целые числа.

1

Перепишите ваше последнее уравнение:

W = (|V| - C) * (V/|V|) 
    = V * (|V| - C)/|V| 
    = V * (1 - C/|V|) 

Ваш масштабный коэффициент зависит от величины V, что не всегда рационально.