Minor fixes related to test migration
Some checks failed
Run tests / Explore-Gitea-Actions (push) Failing after 2m32s
Build Docs With Doxygen / Explore-Gitea-Actions (push) Successful in 37s

This commit is contained in:
2024-06-26 11:44:04 -04:00
parent 4d9a9d3a95
commit 70aa74719a
13 changed files with 207 additions and 241 deletions

View File

@@ -47,59 +47,38 @@ namespace J3ML::Geometry
static Vector3 RandomPointInside(RNG& rng, const Vector3& center, float radius);
public:
/// Quickly returns an arbitrary point inside this Sphere. Used in GJK intersection test.
Vector3 AnyPointFast() const { return Position; }
[[nodiscard]] Vector3 AnyPointFast() const { return Position; }
/// Computes the extreme point of this Sphere in the given direction.
/** An extreme point is a farthest point of this Sphere in the given direction. For
a Sphere, this point is unique.
@param direction The direction vector of the direction to find the extreme point. This vector may
be unnormalized, but may not be null.
@return The extreme point of this Sphere in the given direction. */
Vector3 ExtremePoint(const Vector3 &direction) const;
[[nodiscard]] Vector3 ExtremePoint(const Vector3 &direction) const;
Vector3 ExtremePoint(const Vector3 &direction, float &projectionDistance) const;
void Translate(const Vector3& offset)
{
Position = Position + offset;
}
void Transform(const Matrix3x3& transform)
{
Position = transform * Position;
}
void Transform(const Matrix4x4& transform)
{
Position = transform * Position;
}
inline float Cube(float inp) const
{
return inp*inp*inp;
}
float Volume() const
{
return 4.f * M_PI * Cube(Radius) / 3.f;
}
float SurfaceArea() const
{
return 4.f * M_PI * Cube(Radius) / 3.f;
}
bool IsFinite() const
{
return Position.IsFinite() && std::isfinite(Radius);
}
bool IsDegenerate()
{
return !(Radius > 0.f) || !Position.IsFinite();
}
bool Contains(const Vector3& point) const
{
return Position.DistanceSquared(point) <= Radius*Radius;
}
void Translate(const Vector3& offset);
bool Contains(const Vector3& point, float epsilon) const
{
return Position.DistanceSquared(point) <= Radius*Radius + epsilon;
}
bool Contains(const LineSegment& lineseg) const;
void Transform(const Matrix3x3& transform);
void Transform(const Matrix4x4& transform);
static inline float Cube(float inp);
[[nodiscard]] float Volume() const;
[[nodiscard]] float SurfaceArea() const;
[[nodiscard]] bool IsFinite() const;
[[nodiscard]] bool IsDegenerate() const;
[[nodiscard]] bool Contains(const Vector3& point) const;
[[nodiscard]] bool Contains(const Vector3& point, float epsilon) const;
[[nodiscard]] bool Contains(const LineSegment& lineseg) const;
TriangleMesh GenerateUVSphere() const {}
TriangleMesh GenerateIcososphere() const {}

View File

@@ -41,7 +41,7 @@ namespace J3ML::LinearAlgebra
Quaternion(const Vector3 &rotationAxis, float rotationAngleRadians);
Quaternion(const Vector4 &rotationAxis, float rotationAngleRadians);
explicit Quaternion(Vector4 vector4);
explicit Quaternion(const Vector4& vector4);
explicit Quaternion(const EulerAngle& angle);
explicit Quaternion(const AxisAngle& angle);
@@ -220,6 +220,7 @@ namespace J3ML::LinearAlgebra
// Transforms the given vector by this Quaternion.
Vector3 operator * (const Vector3& rhs) const;
Vector4 operator * (const Vector4& rhs) const;
// Divides a quaternion by another. Divison "a / b" results in a quaternion that rotates the orientation b to coincide with orientation of

View File

@@ -0,0 +1,11 @@
#pragma once
namespace J3ML::LinearAlgebra
{
class Vector2i
{
public:
int x;
int y;
};
}

View File

@@ -113,6 +113,7 @@ public:
static Vector3 RandomBox(RNG& rng, float min, float max);
static Vector3 RotateAroundAxis(const Vector3& vec, const Vector3& axis, const float radians);
static inline Vector3 RandomGeneral(RNG& rng, float minElem, float maxElem) { return RandomBox(rng, minElem, maxElem); }
public: