MCPcopy Create free account
hub / github.com/BIMCoderLiang/LNLib / TEST

Function TEST

tests/T_Fundamental.cpp:11–344  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9using namespace LNLib;
10
11TEST(Test_Fundamental, All)
12{
13 {
14 int degree = 3;
15 std::vector<double> kv = { 0,0,0,0,1,2,3,4,5,5,5,5 };
16 double insertKnot = 2.0;
17
18 XYZW P0 = XYZW(XYZ(0, 0, 0), 1);
19 XYZW P1 = XYZW(XYZ(1, 5, 0), 1);
20 XYZW P2 = XYZW(XYZ(2, 10, 0), 1);
21 XYZW P3 = XYZW(XYZ(3, 15, 0), 1);
22 XYZW P4 = XYZW(XYZ(4, 20, 0), 1);
23 XYZW P5 = XYZW(XYZ(5, 15, 0), 1);
24 XYZW P6 = XYZW(XYZ(6, 10, 0), 1);
25 XYZW P7 = XYZW(XYZ(7, 5, 0), 1);
26
27 std::vector<XYZW> cp = { P0,P1,P2,P3,P4,P5,P6,P7 };
28
29 LN_NurbsCurve curve;
30 curve.Degree = degree;
31 curve.KnotVector = kv;
32 curve.ControlPoints = cp;
33
34 LN_NurbsCurve newCurve;
35 NurbsCurve::InsertKnot(curve, insertKnot, 1, newCurve);
36
37 auto newKv = newCurve.KnotVector;
38 auto newCp = newCurve.ControlPoints;
39
40 EXPECT_TRUE(newKv.size() == kv.size() + 1 &&
41 MathUtils::IsAlmostEqualTo(newKv[5], newKv[6]) &&
42 MathUtils::IsAlmostEqualTo(newKv[5], 2.0));
43 EXPECT_TRUE(newCp[3].IsAlmostEqualTo(2.0 / 3 * P3 + 1.0 / 3 * P2));
44 EXPECT_TRUE(newCp[4].IsAlmostEqualTo(1.0 / 3 * P4 + 2.0 / 3 * P3));
45 EXPECT_TRUE(newCp[5].IsAlmostEqualTo(P4));
46 }
47
48 {
49 int degree = 2;
50 std::vector<double> kv = { 0,0,0,1,2,3,3,3 };
51 std::vector<XYZW> cps = { XYZW(XYZ(0,0,0),1), XYZW(XYZ(1,1,0),4), XYZW(XYZ(3,2,0),1), XYZW(XYZ(4,1,0),1), XYZW(XYZ(5,-1,0),1) };
52
53 LN_NurbsCurve curve;
54 curve.Degree = degree;
55 curve.KnotVector = kv;
56 curve.ControlPoints = cps;
57 XYZ result = NurbsCurve::GetPointOnCurveByCornerCut(curve, 1.0);
58 EXPECT_TRUE(result.IsAlmostEqualTo(XYZ(7.0 / 5, 6.0 / 5, 0)));
59 }
60
61 {
62 int degree = 3;
63 std::vector<double> kvU = { 0,0,0,0,1,2,3,4,5,5,5,5 };
64 std::vector<double> kvV = { 0,0,0,1,1,1 };
65 double insertKnot = 2.0;
66
67 XYZW P00 = XYZW(XYZ(0, 0, 0), 1);
68 XYZW P10 = XYZW(XYZ(1, 5, 0), 1);

Callers

nothing calls this directly

Calls 4

XYZWClass · 0.50
XYZClass · 0.50
IsAlmostEqualToMethod · 0.45
ToXYZMethod · 0.45

Tested by

no test coverage detected