OpenBarnyard
 
Loading...
Searching...
No Matches
TMath.cpp
Go to the documentation of this file.
1#include "ToshiPCH.h"
2
3#include "TMath.h"
4#include "TVector3.h"
5#include "TMathInline.h"
6
8
9TBOOL TMath::ConeVsSphere( const TVector4& a_rvConePosition, const TVector4& a_rvConeDirection, TFLOAT a_fConeFOV, TFLOAT a_fSphereRadius, const TVector4& a_rvSpherePosition )
10{
11 TASSERT( a_fConeFOV < TMath::HALF_PI );
12 TASSERT( a_rvConeDirection.isNormalised() );
13
14 TVector3 direction = a_rvSpherePosition.AsVector3() - a_rvConePosition.AsVector3();
15 TFLOAT fDotProduct = TVector3::DotProduct( a_rvConeDirection.AsVector3(), direction );
16
17 if ( fDotProduct > 0.0f && fDotProduct <= a_fSphereRadius )
18 {
19 direction.Normalize();
20
21 fDotProduct = TVector3::DotProduct( a_rvConeDirection.AsVector3(), direction );
22 TMath::Clip( fDotProduct, -1.0f, 1.0f );
23
24 return ACos( fDotProduct ) <= a_fConeFOV;
25 }
26
27 return TFALSE;
28}
29
Core math utilities for the Toshi engine.
3D vector implementation for the Toshi engine
#define TASSERT(X,...)
Definition Defines.h:138
#define TOSHI_NAMESPACE_START
Definition Defines.h:47
#define TOSHI_NAMESPACE_END
Definition Defines.h:50
float TFLOAT
Definition Typedefs.h:4
#define TFALSE
Definition Typedefs.h:24
bool TBOOL
Definition Typedefs.h:6
TBOOL ConeVsSphere(const TVector4 &a_rvConePosition, const TVector4 &a_rvConeDirection, float a_fConeFOV, float a_fSphereRadius, const TVector4 &a_rvSpherePosition)
TFORCEINLINE void Clip(T &rVal, const T &Min, const T &Max)
constexpr TFLOAT HALF_PI
Definition TMathInline.h:37
TFORCEINLINE TFLOAT ACos(TFLOAT fVal)
Definition TMathInline.h:50
void Normalize()
Definition TVector3.cpp:71
static constexpr TFLOAT DotProduct(const TVector3 &vec1, const TVector3 &vec2)
Definition TVector3.h:147
constexpr TBOOL isNormalised(TFLOAT fVal=0.05f) const
Definition TVector4.h:63
TVector3 & AsVector3()
Definition TVector4.h:321