Files
Work/engine/PUREVSYS.CPP
2024-08-07 09:16:27 -04:00

53 lines
2.0 KiB
C++

#include <common/vector2d.hpp>
#include <engine/purevsys.hpp>
#include <engine/polygon.hpp>
#include <engine/vector3d.hpp>
void PureViewSystem::translatePoint(const Vector3D &vector3D,Vector2D &vector2D,MapMode mapMode)
{
::initView((PureViewSystem*)this);
::mapVectorCoordinates(&((Vector3D&)vector3D)[0],&vector2D[0],(DWORD)mapMode);
}
void PureViewSystem::translatePoint(Polygon3D &polygon,MapMode /*mapMode*/)
{
::initView((PureViewSystem*)this);
::mapPolygonCoordinates(&polygon);
}
void PureViewSystem::translatePoint(Point &dimensionPoint,Point &screenPoint,const Point3D &initialPoint,MapMode mapMode)
{
Vector3D worldPoints;
Vector2D screenPoints;
worldPoints[0]=initialPoint;
worldPoints[1].x(initialPoint.x()+dimensionPoint.x());
worldPoints[1].y(initialPoint.y());
worldPoints[1].z(initialPoint.z());
worldPoints[2].x(initialPoint.x()+dimensionPoint.x());
worldPoints[2].y(initialPoint.y()-dimensionPoint.y());
worldPoints[2].z(initialPoint.z());
worldPoints[3].x(initialPoint.x());
worldPoints[3].y(initialPoint.y()-dimensionPoint.y());
worldPoints[3].z(initialPoint.z());
translatePoint(worldPoints,screenPoints,mapMode);
dimensionPoint.x((worldPoints[1].x()-worldPoints[0].x())+1);
dimensionPoint.y((worldPoints[2].y()-worldPoints[1].y())+1);
screenPoint.x(screenPoints[0].x());
screenPoint.y(screenPoints[0].y());
}
void PureViewSystem::cameraTwistDegrees(float cameraTwistDegrees)
{
float cameraTwistRadians(Math::radians(cameraTwistDegrees));
float sinCameraTwistRadians(Math::sin(cameraTwistRadians));
float cosCameraTwistRadians(Math::cos(cameraTwistRadians));
float cosCameraTwistRadiansSinCameraTwistRadians(cosCameraTwistRadians*sinCameraTwistRadians);
mCameraTwistRadians=cameraTwistRadians*(LONG)Precision;
mCosCameraTwistRadians=cosCameraTwistRadians*(LONG)Precision;
mSinCameraTwistRadians=sinCameraTwistRadians*(LONG)Precision;
mCosCameraTwistRadiansSinCameraTwistRadians=cosCameraTwistRadiansSinCameraTwistRadians*(LONG)Precision;
}