/usr/include/libwildmagic/Wm5NaturalSpline2.h is in libwildmagic-dev 5.13-1ubuntu3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | // Geometric Tools, LLC
// Copyright (c) 1998-2014
// Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt
// http://www.geometrictools.com/License/Boost/LICENSE_1_0.txt
//
// File Version: 5.0.3 (2012/06/24)
#ifndef WM5NATURALSPLINE2_H
#define WM5NATURALSPLINE2_H
#include "Wm5MathematicsLIB.h"
#include "Wm5MultipleCurve2.h"
namespace Wm5
{
template <typename Real>
class WM5_MATHEMATICS_ITEM NaturalSpline2 : public MultipleCurve2<Real>
{
public:
enum BoundaryType
{
BT_FREE,
BT_CLAMPED,
BT_CLOSED
};
// Construction and destruction.
// 1. If N is the number of points, the number of segments must be N-1.
// 2. NaturalSpline2 accepts responsibility for deleting the input
// arrays, so these arrays must be dynamically allocated by the
// caller.
// 3. When the boundary type is BT_CLAMPED, the endpoint derivatives are
// automatically chosen to be
// derivativeStart = points[1] - points[0]
// derivativeFinal = points[N] - points[N-1]
// To specify the derivatives for BT_CLAMPED, use the second
// constructor listed below.
NaturalSpline2 (BoundaryType type, int numSegments, Real* times,
Vector2<Real>* points);
// Specify the derivative vectors for clamped splines.
NaturalSpline2 (int numSegments, Real* times, Vector2<Real>* points,
const Vector2<Real>& derivativeStart,
const Vector2<Real>& derivativeFinal);
virtual ~NaturalSpline2 ();
const Vector2<Real>* GetPoints () const;
virtual Vector2<Real> GetPosition (Real t) const;
virtual Vector2<Real> GetFirstDerivative (Real t) const;
virtual Vector2<Real> GetSecondDerivative (Real t) const;
virtual Vector2<Real> GetThirdDerivative (Real t) const;
protected:
using MultipleCurve2<Real>::mNumSegments;
using MultipleCurve2<Real>::mTimes;
using MultipleCurve2<Real>::GetKeyInfo;
using MultipleCurve2<Real>::GetSpeedWithData;
void CreateFreeSpline ();
void CreateClampedSpline (const Vector2<Real>& derivativeStart,
const Vector2<Real>& derivativeFinal);
void CreateClosedSpline ();
virtual Real GetSpeedKey (int key, Real t) const;
virtual Real GetLengthKey (int key, Real t0, Real t1) const;
Vector2<Real>* mA;
Vector2<Real>* mB;
Vector2<Real>* mC;
Vector2<Real>* mD;
class WM5_MATHEMATICS_ITEM SplineKey
{
public:
SplineKey (const NaturalSpline2* spline, int key);
const NaturalSpline2* Spline;
int Key;
};
};
typedef NaturalSpline2<float> NaturalSpline2f;
typedef NaturalSpline2<double> NaturalSpline2d;
}
#endif
|