|
|
|
|
@ -272,46 +272,43 @@ void BezierTest::valueCubic() {
|
|
|
|
|
void BezierTest::subdivideLinear() { |
|
|
|
|
LinearBezier2D bezier{Vector2{0.0f, 0.0f}, Vector2{20.0f, 4.0f}}; |
|
|
|
|
|
|
|
|
|
LinearBezier2D left, right; |
|
|
|
|
std::tie(left, right) = bezier.subdivide(0.25f); |
|
|
|
|
|
|
|
|
|
CORRADE_COMPARE(left[0], bezier[0]); |
|
|
|
|
CORRADE_COMPARE(left[1], right[0]); |
|
|
|
|
CORRADE_COMPARE(right[1], bezier[1]); |
|
|
|
|
CORRADE_COMPARE(left.value(0.8f), bezier.value(0.2f)); |
|
|
|
|
CORRADE_COMPARE(right.value(0.33333f), bezier.value(0.5f)); |
|
|
|
|
CORRADE_COMPARE(left, (LinearBezier2D{Vector2{0.0f, 0.0f}, Vector2{5.0f, 1.0f}})); |
|
|
|
|
CORRADE_COMPARE(right, (LinearBezier2D{Vector2{5.0f, 1.0f}, Vector2{20.0f, 4.0f}})); |
|
|
|
|
std::pair<LinearBezier2D, LinearBezier2D> subdivided = bezier.subdivide(0.25f); |
|
|
|
|
|
|
|
|
|
CORRADE_COMPARE(subdivided.first[0], bezier[0]); |
|
|
|
|
CORRADE_COMPARE(subdivided.first[1], subdivided.second[0]); |
|
|
|
|
CORRADE_COMPARE(subdivided.second[1], bezier[1]); |
|
|
|
|
CORRADE_COMPARE(subdivided.first.value(0.8f), bezier.value(0.2f)); |
|
|
|
|
CORRADE_COMPARE(subdivided.second.value(0.33333f), bezier.value(0.5f)); |
|
|
|
|
CORRADE_COMPARE(subdivided.first, (LinearBezier2D{Vector2{0.0f, 0.0f}, Vector2{5.0f, 1.0f}})); |
|
|
|
|
CORRADE_COMPARE(subdivided.second, (LinearBezier2D{Vector2{5.0f, 1.0f}, Vector2{20.0f, 4.0f}})); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void BezierTest::subdivideQuadratic() { |
|
|
|
|
QuadraticBezier2D bezier{Vector2{0.0f, 0.0f}, Vector2{10.0f, 15.0f}, Vector2{20.0f, 4.0f}}; |
|
|
|
|
|
|
|
|
|
QuadraticBezier2D left, right; |
|
|
|
|
std::tie(left, right) = bezier.subdivide(0.25f); |
|
|
|
|
std::pair<QuadraticBezier2D, QuadraticBezier2D> subdivided = bezier.subdivide(0.25f); |
|
|
|
|
|
|
|
|
|
CORRADE_COMPARE(left[0], bezier[0]); |
|
|
|
|
CORRADE_COMPARE(left[2], right[0]); |
|
|
|
|
CORRADE_COMPARE(right[2], bezier[2]); |
|
|
|
|
CORRADE_COMPARE(left.value(0.8f), bezier.value(0.2f)); |
|
|
|
|
CORRADE_COMPARE(right.value(0.33333f), bezier.value(0.5f)); |
|
|
|
|
CORRADE_COMPARE(left, (QuadraticBezier2D{Vector2{0.0f, 0.0f}, Vector2{2.5f, 3.75f}, Vector2{5.0f, 5.875f}})); |
|
|
|
|
CORRADE_COMPARE(right, (QuadraticBezier2D{Vector2{5.0f, 5.875f}, Vector2{12.5f, 12.25f}, Vector2{20.0f, 4.0f}})); |
|
|
|
|
CORRADE_COMPARE(subdivided.first[0], bezier[0]); |
|
|
|
|
CORRADE_COMPARE(subdivided.first[2], subdivided.second[0]); |
|
|
|
|
CORRADE_COMPARE(subdivided.second[2], bezier[2]); |
|
|
|
|
CORRADE_COMPARE(subdivided.first.value(0.8f), bezier.value(0.2f)); |
|
|
|
|
CORRADE_COMPARE(subdivided.second.value(0.33333f), bezier.value(0.5f)); |
|
|
|
|
CORRADE_COMPARE(subdivided.first, (QuadraticBezier2D{Vector2{0.0f, 0.0f}, Vector2{2.5f, 3.75f}, Vector2{5.0f, 5.875f}})); |
|
|
|
|
CORRADE_COMPARE(subdivided.second, (QuadraticBezier2D{Vector2{5.0f, 5.875f}, Vector2{12.5f, 12.25f}, Vector2{20.0f, 4.0f}})); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void BezierTest::subdivideCubic() { |
|
|
|
|
CubicBezier2D bezier{Vector2{0.0f, 0.0f}, Vector2{10.0f, 15.0f}, Vector2{20.0f, 4.0f}, Vector2{5.0f, -20.0f}}; |
|
|
|
|
|
|
|
|
|
CubicBezier2D left, right; |
|
|
|
|
std::tie(left, right) = bezier.subdivide(0.25f); |
|
|
|
|
std::pair<CubicBezier2D, CubicBezier2D> subdivided = bezier.subdivide(0.25f); |
|
|
|
|
|
|
|
|
|
CORRADE_COMPARE(left[0], bezier[0]); |
|
|
|
|
CORRADE_COMPARE(left[3], right[0]); |
|
|
|
|
CORRADE_COMPARE(right[3], bezier[3]); |
|
|
|
|
CORRADE_COMPARE(left.value(0.8f), bezier.value(0.2f)); |
|
|
|
|
CORRADE_COMPARE(right.value(0.33333f), bezier.value(0.5f)); |
|
|
|
|
CORRADE_COMPARE(left, (CubicBezier2D{Vector2{0.0f, 0.0f}, Vector2{2.5f, 3.75f}, Vector2{5.0f, 5.875f}, Vector2{7.10938f, 6.57812f}})); |
|
|
|
|
CORRADE_COMPARE(right, (CubicBezier2D{Vector2{7.10938f, 6.57812f}, Vector2{13.4375f, 8.6875f}, Vector2{16.25f, -2.0f}, Vector2{5.0f, -20.0f}})); |
|
|
|
|
CORRADE_COMPARE(subdivided.first[0], bezier[0]); |
|
|
|
|
CORRADE_COMPARE(subdivided.first[3], subdivided.second[0]); |
|
|
|
|
CORRADE_COMPARE(subdivided.second[3], bezier[3]); |
|
|
|
|
CORRADE_COMPARE(subdivided.first.value(0.8f), bezier.value(0.2f)); |
|
|
|
|
CORRADE_COMPARE(subdivided.second.value(0.33333f), bezier.value(0.5f)); |
|
|
|
|
CORRADE_COMPARE(subdivided.first, (CubicBezier2D{Vector2{0.0f, 0.0f}, Vector2{2.5f, 3.75f}, Vector2{5.0f, 5.875f}, Vector2{7.10938f, 6.57812f}})); |
|
|
|
|
CORRADE_COMPARE(subdivided.second, (CubicBezier2D{Vector2{7.10938f, 6.57812f}, Vector2{13.4375f, 8.6875f}, Vector2{16.25f, -2.0f}, Vector2{5.0f, -20.0f}})); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void BezierTest::strictWeakOrdering() { |
|
|
|
|
|