README: moved image

This commit is contained in:
Jan Mrna
2025-11-03 05:05:52 +01:00
parent 25a246f3ff
commit 55350a9a3b
2 changed files with 217 additions and 235 deletions

View File

@@ -1,7 +1,5 @@
# Pathfinding demo
![C++ pathfinding demo](./docs/img/screenshot_1.png)
This is a demo of pathfinding on a 2D grid. It consists of 2 main parts:
* python notes and implementation
@@ -23,6 +21,8 @@ Contains the same demo as the standalone script and some notes. Since Github sup
## C++
![C++ pathfinding demo](./docs/img/screenshot_1.png)
### Windows
#### Dependencies

View File

@@ -9,7 +9,6 @@
#include "math.hpp"
#include "positional_container.hpp"
TEST(vec, DefaultConstruction) {
// Test that default-constucted vector
// has all elements equal to zero
@@ -58,20 +57,16 @@ TEST(vec, ArrayConstruction) {
ASSERT_FLOAT_EQ(arr3[2], 3.5f);
}
TEST(vec, equalEpsilon) {
// Test equalEpsilon
// TODO just an ad-hoc test,
// can possibly fail for other machines.
// This needs some work
vec3 v1{1.0f, 2.0f, 3.0f};
vec3 v2{0.999999f, 1.9999999f, 2.9999999f};
ASSERT_EQ(v1, v2);
}
TEST(vec, equalInt) {
ivec2 v1{1,2};
ivec2 v2{1,2};
ivec2 v1{1, 2};
ivec2 v2{1, 2};
ASSERT_EQ(v1, v2);
}
@@ -85,9 +80,9 @@ TEST(vec, nonEqualEpsilon) {
TEST(vec, LogPrint) {
// Test that logger can print the vector of different types
// and sizes
vec2 v2(1.2f, 3.4f);
vec3 v3(1.2f, 3.4f, 5.6f);
vec4 v4(1.2f, 3.4f, 5.6f, 7.8f);
vec2 v2(1.2f, 3.4f);
vec3 v3(1.2f, 3.4f, 5.6f);
vec4 v4(1.2f, 3.4f, 5.6f, 7.8f);
dvec2 dv2(1.2, 3.4);
dvec3 dv3(1.2, 3.4, 5.6);
dvec4 dv4(1.2, 3.4, 5.6, 7.8);
@@ -112,8 +107,7 @@ TEST(vec, LogPrint) {
LOG_DEBUG("uvec4 ", uv4);
}
TEST(vec, Add)
{
TEST(vec, Add) {
// Test operator+ with float vectors
vec3 v1{1.0f, 2.0f, 3.0f};
vec3 v2{4.0f, 5.0f, 6.0f};
@@ -138,8 +132,7 @@ TEST(vec, Add)
ASSERT_FLOAT_EQ(v1[2], 3.0f);
}
TEST(vec, Sub)
{
TEST(vec, Sub) {
// Test operator- with float vectors
vec3 v1{5.0f, 7.0f, 9.0f};
vec3 v2{1.0f, 2.0f, 3.0f};
@@ -173,8 +166,7 @@ TEST(vec, Sub)
ASSERT_FLOAT_EQ(negative_result[2], -3.0f);
}
TEST(vec, ScalarAddition)
{
TEST(vec, ScalarAddition) {
// Test operator+ with float vector and scalar
vec3 v1{1.0f, 2.0f, 3.0f};
vec3 result = v1 + 5.0f;
@@ -213,8 +205,7 @@ TEST(vec, ScalarAddition)
ASSERT_FLOAT_EQ(zero_result[2], 3.0f);
}
TEST(vec, ScalarSubtraction)
{
TEST(vec, ScalarSubtraction) {
// Test operator- with float vector and scalar
vec3 v1{10.0f, 15.0f, 20.0f};
vec3 result = v1 - 5.0f;
@@ -253,8 +244,7 @@ TEST(vec, ScalarSubtraction)
ASSERT_FLOAT_EQ(negative_vals_result[2], -2.0f);
}
TEST(vec, ScalarMultiplication)
{
TEST(vec, ScalarMultiplication) {
// Test scalar * vector with float vectors
vec3 v1{2.0f, 3.0f, 4.0f};
vec3 result = v1 * 2.5f;
@@ -293,8 +283,7 @@ TEST(vec, ScalarMultiplication)
ASSERT_FLOAT_EQ(negative_result[2], -6.0f);
}
TEST(vec, ScalarDivision)
{
TEST(vec, ScalarDivision) {
// Test vector / scalar with float vectors
vec3 v1{10.0f, 15.0f, 20.0f};
vec3 result = v1 / 2.5f;
@@ -333,8 +322,7 @@ TEST(vec, ScalarDivision)
ASSERT_FLOAT_EQ(fractional_result[2], 6.0f);
}
TEST(vec, AdditionAssignment)
{
TEST(vec, AdditionAssignment) {
// Test operator+= with float vectors
vec3 v1{1.0f, 2.0f, 3.0f};
vec3 v2{4.0f, 5.0f, 6.0f};
@@ -372,8 +360,7 @@ TEST(vec, AdditionAssignment)
ASSERT_FLOAT_EQ(v4[2], 5.0f);
}
TEST(vec, SubtractionAssignment)
{
TEST(vec, SubtractionAssignment) {
// Test operator-= with float vectors
vec3 v1{10.0f, 15.0f, 20.0f};
vec3 v2{3.0f, 5.0f, 7.0f};
@@ -407,8 +394,7 @@ TEST(vec, SubtractionAssignment)
ASSERT_FLOAT_EQ(v3[2], -3.0f);
}
TEST(vec, LengthSquared)
{
TEST(vec, LengthSquared) {
// Test LengthSquared with float vectors
vec3 v1{3.0f, 4.0f, 0.0f};
ASSERT_FLOAT_EQ(v1.LengthSquared(), 25.0f); // 3² + 4² + 0² = 25
@@ -421,8 +407,7 @@ TEST(vec, LengthSquared)
ASSERT_FLOAT_EQ(zero.LengthSquared(), 0.0f);
}
TEST(vec, Length)
{
TEST(vec, Length) {
// Test Length with float vectors
vec3 v1{3.0f, 4.0f, 0.0f};
ASSERT_FLOAT_EQ(v1.Length(), 5.0f); // sqrt(3² + 4² + 0²) = 5
@@ -435,14 +420,13 @@ TEST(vec, Length)
ASSERT_FLOAT_EQ(zero.Length(), 0.0f);
}
TEST(vec, Normalize)
{
TEST(vec, Normalize) {
// Test Normalize with float vectors
vec3 v1{3.0f, 4.0f, 0.0f};
v1.Normalize();
ASSERT_FLOAT_EQ(v1[0], 0.6f); // 3/5
ASSERT_FLOAT_EQ(v1[1], 0.8f); // 4/5
ASSERT_FLOAT_EQ(v1[0], 0.6f); // 3/5
ASSERT_FLOAT_EQ(v1[1], 0.8f); // 4/5
ASSERT_FLOAT_EQ(v1[2], 0.0f);
ASSERT_NEAR(v1.Length(), 1.0f, 1e-6f);
@@ -455,8 +439,7 @@ TEST(vec, Normalize)
ASSERT_TRUE(zero[2] == 0.0f);
}
TEST(vec, GetNormalized)
{
TEST(vec, GetNormalized) {
// Test GetNormalized with float vectors
const vec3 v1{3.0f, 4.0f, 0.0f};
vec3 normalized = v1.GetNormalized();
@@ -467,8 +450,8 @@ TEST(vec, GetNormalized)
ASSERT_FLOAT_EQ(v1[2], 0.0f);
// Normalized copy should be unit length
ASSERT_FLOAT_EQ(normalized[0], 0.6f); // 3/5
ASSERT_FLOAT_EQ(normalized[1], 0.8f); // 4/5
ASSERT_FLOAT_EQ(normalized[0], 0.6f); // 3/5
ASSERT_FLOAT_EQ(normalized[1], 0.8f); // 4/5
ASSERT_FLOAT_EQ(normalized[2], 0.0f);
ASSERT_NEAR(normalized.Length(), 1.0f, 1e-6f);
@@ -486,16 +469,14 @@ TEST(vec, GetNormalized)
ASSERT_FLOAT_EQ(zero[2], 0.0f);
}
TEST(vec, GetOrthogonal)
{
TEST(vec, GetOrthogonal) {
const vec2 v1{5.0f, 1.0f};
auto v2 = v1.GetOrthogonal();
ASSERT_FLOAT_EQ(v2[0], -1.0f);
ASSERT_FLOAT_EQ(v2[1], 5.0f);
}
TEST(vec, DistanceTo)
{
TEST(vec, DistanceTo) {
// Test DistanceTo with 3D vectors
vec3 v1{0.0f, 0.0f, 0.0f};
vec3 v2{3.0f, 4.0f, 0.0f};
@@ -624,7 +605,7 @@ TEST(Matrix, ElementAccess) {
Matrix<float, 2> m1(std::array<float, 4>{1.0f, 2.0f, 3.0f, 4.0f});
// Test const access
const Matrix<float, 2>& const_ref = m1;
const Matrix<float, 2> &const_ref = m1;
ASSERT_FLOAT_EQ(const_ref[0][0], 1.0f);
ASSERT_FLOAT_EQ(const_ref[1][1], 4.0f);
@@ -676,10 +657,10 @@ TEST(Matrix, Subtraction) {
Matrix<float, 2> result = m1 - m2;
ASSERT_FLOAT_EQ(result[0][0], 9.0f); // 10 - 1
ASSERT_FLOAT_EQ(result[0][1], 6.0f); // 8 - 2
ASSERT_FLOAT_EQ(result[1][0], 3.0f); // 6 - 3
ASSERT_FLOAT_EQ(result[1][1], 0.0f); // 4 - 4
ASSERT_FLOAT_EQ(result[0][0], 9.0f); // 10 - 1
ASSERT_FLOAT_EQ(result[0][1], 6.0f); // 8 - 2
ASSERT_FLOAT_EQ(result[1][0], 3.0f); // 6 - 3
ASSERT_FLOAT_EQ(result[1][1], 0.0f); // 4 - 4
// Test that original matrices are unchanged
ASSERT_FLOAT_EQ(m1[0][0], 10.0f);
@@ -922,7 +903,8 @@ TEST(SimpleContainer, WeakPtrValidAfterGet) {
TEST(SimpleContainer, UpdateAll) {
// Test that UpdateAll properly updates item positions
// For SimpleContainer, Update is a no-op but Get should still find moved items
// For SimpleContainer, Update is a no-op but Get should still find moved
// items
SimpleContainer<TestEntity> container;
auto item1 = std::make_shared<TestEntity>(10.0f, 10.0f);