Loading [MathJax]/extensions/TeX/AMSmath.js
Radium Engine  1.5.29
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
polyline.cpp
1#include <Core/Geometry/PolyLine.hpp>
2#include <catch2/catch_test_macros.hpp>
3
4TEST_CASE( "Core/Geometry/Polyline", "[unittests][Core][Core/Geometry][Polyline]" ) {
5 using namespace Ra::Core;
6 SECTION( "2 points polyline" ) {
7 Vector3Array v2 { { 1, 2, 3 }, { 4, 5, 6 } };
8 Geometry::PolyLine p( v2 );
9
10 Vector3 m = 0.5_ra * ( v2[0] + v2[1] );
11
12 // Parametrization fail
13 REQUIRE( p.f( 0_ra ).isApprox( v2[0] ) );
14 REQUIRE( p.f( 1_ra ).isApprox( v2[1] ) );
15 REQUIRE( p.f( .5_ra ).isApprox( m ) );
16 // Distance fail
17 REQUIRE( Math::areApproxEqual( p.distance( m ), 0_ra ) );
18 }
19 SECTION( "4 points polyline" ) {
20 Vector3Array v4 { { 2, 3, 5 }, { 7, 11, 13 }, { 17, 23, 29 }, { -1, -1, 30 } };
21 Geometry::PolyLine p( v4 );
22
23 // Parametrization fail
24 REQUIRE( p.f( 0_ra ).isApprox( v4[0] ) );
25 REQUIRE( p.f( 1_ra ).isApprox( v4[3] ) );
26 // Parametrization clamp fail
27 REQUIRE( p.f( -10_ra ).isApprox( p.f( 0_ra ) ) );
28 REQUIRE( p.f( 10_ra ).isApprox( p.f( 1_ra ) ) );
29
30 for ( const auto& x : v4 ) {
31 REQUIRE( Math::areApproxEqual( p.distance( x ), 0_ra ) );
32 }
33 }
34}
This namespace contains everything "low level", related to data, datastuctures, and computation.
Definition Cage.cpp:5