From 79b53a9c6ca22835d37deae4b335af63071c5c28 Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@Germany> Date: Fri, 4 Dec 2009 12:54:15 +0100 Subject: [PATCH] rename BSplineTest to splineTest and add Catmull-Rom to it - the current B-Splines deliver rubbish --- applications/test/BSpline/Make/files | 3 - applications/test/spline/Make/files | 3 + .../test/{BSpline => spline}/Make/options | 0 .../BSplineTest.C => spline/splineTest.C} | 68 ++++++++++++++++--- .../test/{BSpline => spline}/test-splines | 0 5 files changed, 63 insertions(+), 11 deletions(-) delete mode 100644 applications/test/BSpline/Make/files create mode 100644 applications/test/spline/Make/files rename applications/test/{BSpline => spline}/Make/options (100%) rename applications/test/{BSpline/BSplineTest.C => spline/splineTest.C} (50%) rename applications/test/{BSpline => spline}/test-splines (100%) diff --git a/applications/test/BSpline/Make/files b/applications/test/BSpline/Make/files deleted file mode 100644 index be66810067f..00000000000 --- 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 00000000000..68f1cca9942 --- /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 91f3efad238..c4c8f1434db 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 -- GitLab