holesome/src/coordinates/isometric_coordinate_transformer.cpp
2023-04-27 23:05:19 +02:00

23 lines
720 B
C++

//
// Created by max on 27.04.23.
//
#include "isometric_coordinate_transformer.h"
IsometricCoordinateTransformer::IsometricCoordinateTransformer() {
worldToScreenMatrix = Eigen::Matrix<float, 2, 3>();
worldToScreenMatrix << 0.5f, 0.5f, 0,
-0.5f, 0.5f, -1;
}
ScreenCoordinates IsometricCoordinateTransformer::worldToScreen(WorldCoordinates worldCoordinates) const {
Eigen::Vector3f worldCoordinatesVector;
worldCoordinatesVector << worldCoordinates.x, worldCoordinates.y, worldCoordinates.z;
Eigen::Vector2f screenCoordinatesVector = worldToScreenMatrix * worldCoordinatesVector;
return {
screenCoordinatesVector.x(),
screenCoordinatesVector.y()
};
}