/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | foam-extend: Open Source CFD \\ / O peration | \\ / A nd | For copyright notice see file Copyright \\/ M anipulation | ------------------------------------------------------------------------------- License This file is part of foam-extend. foam-extend is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. foam-extend is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with foam-extend. If not, see . \*---------------------------------------------------------------------------*/ #include "polySplineEdge.H" #include "BSpline.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam { defineTypeNameAndDebug(polySplineEdge, 0); // Add the curvedEdge constructor functions to the hash tables curvedEdge::addIstreamConstructorToTable addPolySplineEdgeIstreamConstructorToTable_; } // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // // intervening : returns a list of the points making up the polyLineEdge // which describes the spline. nbetweenKnots is the number of points // placed between each knot : this ensures that the knot locations // are retained as a subset of the polyLine points. // note that the points are evenly spaced in the parameter mu, not // in real space Foam::pointField Foam::polySplineEdge::intervening ( const pointField& otherknots, const label nbetweenKnots, const vector& fstend, const vector& sndend ) { BSpline spl(knotlist(points_, start_, end_, otherknots), fstend, sndend); label nSize(nsize(otherknots.size(), nbetweenKnots)); pointField ans(nSize); label N = spl.nKnots(); scalar init = 1.0/(N - 1); scalar interval = (N - scalar(3))/N; interval /= otherknots.size() + 1; interval /= nbetweenKnots + 1; ans[0] = points_[start_]; register scalar index(init); for (register label i=1; i