Является ли вычисление векторов верным?

#include <iostream>
#include <math.h>

#define PLAYER_POSITION_X 100
#define PLAYER_POSITION_Y 321
#define ENEMY_POSITION_X 96
#define ENEMY_POSITION_Y 320

typedef struct VectorPointer
{
    float x;
    float y;
} Vector;

float VectorDistance(Vector* first, Vector* second)
{
    return static_cast<float>(sqrt(first->x - second->x + first->y - second->y));
}

void VectorInit(Vector* vector, float pPosX, float pPosY)
{
    vector->x = pPosX;
    vector->y = pPosY;
}

int main(int argc, char* argv[])
{
    Vector* player = (Vector*)malloc(sizeof(Vector));
    Vector* enemy = (Vector*)malloc(sizeof(Vector));

    VectorInit(player, PLAYER_POSITION_X, PLAYER_POSITION_Y);
    VectorInit(enemy, ENEMY_POSITION_X, ENEMY_POSITION_Y);

    std::cout << "Distance: " << VectorDistance(player, enemy) << std::endl;

    free(player);
    free(enemy);

    return 0;
}

Ответы (1 шт):

Автор решения: Harry

В принципе, метрики бывают разные. Но если вы говорите об обычном векторе на плоскости — конечно, нет. Во-первых, потому что тогда вообще непонятно, что такое "расстояние между векторами", а во-вторых, если принять, что это расстояние между концами этих вектором, исходящих из начала координат, то тут надо использовать теорему Пифагора:

введите сюда описание изображения

но никак не

введите сюда описание изображения

→ Ссылка