diff --git a/applications/test/BSpline/Make/files b/applications/test/BSpline/Make/files deleted file mode 100644 index be66810067f2cdb25e5db68f7f137fdd296135ed..0000000000000000000000000000000000000000 --- a/applications/test/BSpline/Make/files +++ /dev/null @@ -1,3 +0,0 @@ -BSplineTest.C - -EXE = $(FOAM_USER_APPBIN)/BSplineTest diff --git a/applications/test/spline/Make/files b/applications/test/spline/Make/files new file mode 100644 index 0000000000000000000000000000000000000000..68f1cca99422ffe7cb5488a5e664692702129d1e --- /dev/null +++ b/applications/test/spline/Make/files @@ -0,0 +1,3 @@ +splineTest.C + +EXE = $(FOAM_USER_APPBIN)/splineTest diff --git a/applications/test/BSpline/Make/options b/applications/test/spline/Make/options similarity index 100% rename from applications/test/BSpline/Make/options rename to applications/test/spline/Make/options diff --git a/applications/test/BSpline/BSplineTest.C b/applications/test/spline/splineTest.C similarity index 50% rename from applications/test/BSpline/BSplineTest.C rename to applications/test/spline/splineTest.C index 91f3efad238cfa771d4ea97afd1bc3c25daa1f1d..c4c8f1434db72a1ddc028be908f71638c012e924 100644 --- a/applications/test/BSpline/BSplineTest.C +++ b/applications/test/spline/splineTest.C @@ -28,6 +28,7 @@ License #include "vector.H" #include "IFstream.H" #include "BSpline.H" +#include "CatmullRomSpline.H" using namespace Foam; @@ -38,28 +39,79 @@ int main(int argc, char *argv[]) { argList::noParallel(); argList::validArgs.insert("file .. fileN"); + argList::addBoolOption("B", "B-Spline"); + argList::addBoolOption("cmr", "catmull-rom spline (default)"); + argList::addOption + ( + "n", + "INT", + "number of segments for evaluation - default 20" + ); argList args(argc, argv, false, true); + if (args.additionalArgs().empty()) + { + args.printUsage(); + } + + bool useBSpline = args.optionFound("B"); + bool useCatmullRom = args.optionFound("cmr"); + label nSeg = args.optionLookupOrDefault<label>("n", 20); + + if (!useBSpline && !useCatmullRom) + { + Info<<"defaulting to Catmull-Rom spline" << endl; + useCatmullRom = true; + } + forAll(args.additionalArgs(), argI) { const string& srcFile = args.additionalArgs()[argI]; Info<< nl << "reading " << srcFile << nl; IFstream ifs(srcFile); - List<pointField> splinePointFields(ifs); + List<pointField> pointFields(ifs); - forAll(splinePointFields, splineI) + forAll(pointFields, splineI) { - Info<<"convert " << splinePointFields[splineI] << " to bspline" << endl; - - BSpline spl(splinePointFields[splineI], vector::zero, vector::zero); - - Info<< "1/2 = " << spl.position(0.5) << endl; + Info<<"\noriginal points: " << pointFields[splineI] << nl; + + if (useBSpline) + { + BSpline spl(pointFields[splineI], vector::zero, vector::zero); + + Info<< nl + << "B-Spline interpolation:" << nl + << "----------------------" << endl; + + for (label segI = 0; segI <= nSeg; ++segI) + { + scalar lambda = scalar(segI)/scalar(nSeg); + Info<< spl.position(lambda) << " // " << lambda << endl; + } + } + + if (useCatmullRom) + { + CatmullRomSpline spl + ( + pointFields[splineI] + ); + + Info<< nl + <<"Catmull-Rom interpolation:" << nl + << "-------------------------" << endl; + + for (label segI = 0; segI <= nSeg; ++segI) + { + scalar lambda = scalar(segI)/scalar(nSeg); + Info<< spl.position(lambda) << " // " << lambda << endl; + } + } } } - return 0; } diff --git a/applications/test/BSpline/test-splines b/applications/test/spline/test-splines similarity index 100% rename from applications/test/BSpline/test-splines rename to applications/test/spline/test-splines