VectorSize
Материал из Pro-Pawn Wiki
Описание:
Вычисляет длину вектора.
Параметры:
(Float:x, Float:y, Float:z) |
Float:x, Float:y, Float:z | Расстояния по осям X, Y и Z от точки начала до точки конца вектора. |
Возвращаемое значение:
Длина вектора.
Примечание |
Вызов данной функции аналогичен выражению floatsqroot(x * x + y * y + z * z) , однако отличается более короткой и простой записью, а также выигрывает в плане производительности за счёт меньших накладных расходов от вызовов нативных функций (для VectorSize() - 1 вызов; для приведённого выше выражения - 6 вызовов, т.к. умножение и сложение заменяется на вызовы функций floatmul() и floatadd() ).
Для нахождения расстояний от точки до игрока, транспорта или NPC лучше подходят функции GetPlayerDistanceFromPoint() , GetVehicleDistanceFromPoint() и GetDistanceFromMeToPoint() соответственно.
|
Пример использования:
// Функция для нахождения расстояния между двумя объектами.
// Если один из объектов не существует, возвращает -1.0.
Float:GetDistanceBetweenObjects(objectid1, objectid2)
{
new Float:x1, Float:y1, Float:z1;
new Float:x2, Float:y2, Float:z2;
if (0 == GetObjectPos(objectid1, x1, y1, z1) || 0 == GetObjectPos(objectid2, x2, y2, z2))
return -1.0;
return VectorSize(x2 - x1, y2 - y1, z2 - z1);
}
// Если один из объектов не существует, возвращает -1.0.
Float:GetDistanceBetweenObjects(objectid1, objectid2)
{
new Float:x1, Float:y1, Float:z1;
new Float:x2, Float:y2, Float:z2;
if (0 == GetObjectPos(objectid1, x1, y1, z1) || 0 == GetObjectPos(objectid2, x2, y2, z2))
return -1.0;
return VectorSize(x2 - x1, y2 - y1, z2 - z1);
}
См. также: