PrimeWorldEditor/Common/CRay.cpp

44 lines
756 B
C++

#include "CRay.h"
#include <Common/CVector4f.h>
#include <Common/CTransform4f.h>
#include <iostream>
CRay::CRay()
{
}
CRay::CRay(const CVector3f& Origin, const CVector3f& Direction)
: mOrigin(Origin), mDirection(Direction)
{
}
CRay::~CRay()
{
}
void CRay::SetOrigin(const CVector3f& Origin)
{
mOrigin = Origin;
}
void CRay::SetDirection(const CVector3f& Direction)
{
mDirection = Direction;
}
CRay CRay::Transformed(const CTransform4f &Matrix) const
{
CRay out;
out.mOrigin = Matrix * mOrigin;
CVector3f Point = Matrix * (mOrigin + mDirection);
out.mDirection = (Point - out.mOrigin).Normalized();
return out;
}
CVector3f CRay::PointOnRay(float Distance) const
{
return mOrigin + (mDirection * Distance);
}