53 lines
2.0 KiB
C++
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;
|
|
}
|
|
|