/usr/include/libwildmagic/Wm5IntrSegment3Ellipsoid3.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 | // 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 WM5INTRSEGMENT3ELLIPSOID3_H
#define WM5INTRSEGMENT3ELLIPSOID3_H
#include "Wm5MathematicsLIB.h"
#include "Wm5Intersector.h"
#include "Wm5Segment3.h"
#include "Wm5Ellipsoid3.h"
namespace Wm5
{
template <typename Real>
class WM5_MATHEMATICS_ITEM IntrSegment3Ellipsoid3
: public Intersector<Real,Vector3<Real> >
{
public:
IntrSegment3Ellipsoid3 (const Segment3<Real>& segment,
const Ellipsoid3<Real>& ellipsoid);
// Object access.
const Segment3<Real>& GetSegment () const;
const Ellipsoid3<Real>& GetEllipsoid () const;
// Static intersection queries.
virtual bool Test ();
virtual bool Find ();
// The intersection set. The ellipsoid is considered a solid, so if the
// segment is stricly inside the ellipsoid, the intersection type is
// IT_SEGMENT and the function GetPoint(i) returns the segment end
// points. If you want the ellipsoid to be only the surface itself, and
// you want a "no intersection" result when the segment is strictly
// inside the ellipsoid, just compare the segment end points to the
// values from GetPoint(i) whenever IT_SEGMENT is the type. If they
// are the same, consider this a "no intersection".
int GetQuantity () const;
const Vector3<Real>& GetPoint (int i) const;
private:
using Intersector<Real,Vector3<Real> >::IT_EMPTY;
using Intersector<Real,Vector3<Real> >::IT_POINT;
using Intersector<Real,Vector3<Real> >::IT_SEGMENT;
using Intersector<Real,Vector3<Real> >::mIntersectionType;
// The objects to intersect.
const Segment3<Real>* mSegment;
const Ellipsoid3<Real>* mEllipsoid;
// Information about the intersection set.
int mQuantity;
Vector3<Real> mPoint[2];
};
typedef IntrSegment3Ellipsoid3<float> IntrSegment3Ellipsoid3f;
typedef IntrSegment3Ellipsoid3<double> IntrSegment3Ellipsoid3d;
}
#endif
|