/usr/include/libwildmagic/Wm5ContMinCircle2.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 | // 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.1 (2010/10/01)
#ifndef WM5CONTMINCIRCLE2_H
#define WM5CONTMINCIRCLE2_H
// Compute the minimum area circle containing the input set of points. The
// algorithm randomly permutes the input points so that the construction
// occurs in 'expected' O(N) time.
#include "Wm5MathematicsLIB.h"
#include "Wm5Circle2.h"
namespace Wm5
{
template <typename Real>
class WM5_MATHEMATICS_ITEM MinCircle2
{
public:
// The epsilon value is a floating-point tolerance used for various
// computations.
MinCircle2 (int numPoints, const Vector2<Real>* points,
Circle2<Real>& minimal, Real epsilon = (Real)1e-05);
private:
// Indices of points that support current minimum area circle.
class Support
{
public:
bool Contains (int index, Vector2<Real>** points, Real epsilon);
int Quantity;
int Index[3];
};
// Test whether point P is inside circle C.
bool Contains (const Vector2<Real>& point, const Circle2<Real>& circle,
Real& distDiff);
Circle2<Real> ExactCircle1 (const Vector2<Real>& P);
Circle2<Real> ExactCircle2 (const Vector2<Real>& P0,
const Vector2<Real>& P1);
Circle2<Real> ExactCircle3 (const Vector2<Real>& P0,
const Vector2<Real>& P1, const Vector2<Real>& P2);
Circle2<Real> UpdateSupport1 (int i, Vector2<Real>** permuted,
Support& support);
Circle2<Real> UpdateSupport2 (int i, Vector2<Real>** permuted,
Support& support);
Circle2<Real> UpdateSupport3 (int i, Vector2<Real>** permuted,
Support& support);
typedef Circle2<Real> (MinCircle2<Real>::*UpdateFunction)(
int, Vector2<Real>**, Support&);
Real mEpsilon;
UpdateFunction mUpdate[4];
};
typedef MinCircle2<float> MinCircle2f;
typedef MinCircle2<double> MinCircle2d;
}
#endif
|