Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/source/maths/Vector3D.cpp
/* Copyright (C) 2010 Wildfire Games. | /* Copyright (C) 2019 Wildfire Games. | ||||
* This file is part of 0 A.D. | * This file is part of 0 A.D. | ||||
* | * | ||||
* 0 A.D. is free software: you can redistribute it and/or modify | * 0 A.D. is free software: you can redistribute it and/or modify | ||||
* it under the terms of the GNU General Public License as published by | * it under the terms of the GNU General Public License as published by | ||||
* the Free Software Foundation, either version 2 of the License, or | * the Free Software Foundation, either version 2 of the License, or | ||||
* (at your option) any later version. | * (at your option) any later version. | ||||
* | * | ||||
* 0 A.D. is distributed in the hope that it will be useful, | * 0 A.D. is distributed in the hope that it will be useful, | ||||
Show All 9 Lines | |||||
* Provides an interface for a vector in R3 and allows vector and | * Provides an interface for a vector in R3 and allows vector and | ||||
* scalar operations on it | * scalar operations on it | ||||
*/ | */ | ||||
#include "precompiled.h" | #include "precompiled.h" | ||||
#include "Vector3D.h" | #include "Vector3D.h" | ||||
#include <math.h> | |||||
#include <float.h> | |||||
#include "MathUtil.h" | #include "MathUtil.h" | ||||
#include "FixedVector3D.h" | #include "FixedVector3D.h" | ||||
#include <cmath> | |||||
#include <limits> | |||||
CVector3D::CVector3D(const CFixedVector3D& v) : | CVector3D::CVector3D(const CFixedVector3D& v) : | ||||
X(v.X.ToFloat()), Y(v.Y.ToFloat()), Z(v.Z.ToFloat()) | X(v.X.ToFloat()), Y(v.Y.ToFloat()), Z(v.Z.ToFloat()) | ||||
{ | { | ||||
} | } | ||||
// static | |||||
CVector3D CVector3D::Max() | |||||
{ | |||||
const float max_float = std::numeric_limits<float>::max(); | |||||
return CVector3D(max_float, max_float, max_float); | |||||
} | |||||
// static | |||||
CVector3D CVector3D::Min() | |||||
{ | |||||
const float max_float = std::numeric_limits<float>::max(); | |||||
return CVector3D(-max_float, -max_float, -max_float); | |||||
} | |||||
int CVector3D::operator ! () const | int CVector3D::operator ! () const | ||||
{ | { | ||||
if (X != 0.0f || | if (X != 0.0f || | ||||
Y != 0.0f || | Y != 0.0f || | ||||
Z != 0.0f) | Z != 0.0f) | ||||
return 0; | return 0; | ||||
Show All 26 Lines | CVector3D CVector3D::Normalized () const | ||||
return CVector3D(X * scale, Y * scale, Z * scale); | return CVector3D(X * scale, Y * scale, Z * scale); | ||||
} | } | ||||
//----------------------------------------------------------------------------- | //----------------------------------------------------------------------------- | ||||
float MaxComponent(const CVector3D& v) | float MaxComponent(const CVector3D& v) | ||||
{ | { | ||||
float max = -FLT_MAX; | return std::max({v.X, v.Y, v.Z}); | ||||
for(int i = 0; i < 3; i++) | |||||
max = std::max(max, v[i]); | |||||
return max; | |||||
} | } |
Wildfire Games · Phabricator