~ubuntu-branches/ubuntu/maverick/freecad/maverick

« back to all changes in this revision

Viewing changes to src/Mod/Mesh/App/WildMagic4/Wm4DistSegment3Triangle3.h

  • Committer: Bazaar Package Importer
  • Author(s): Teemu Ikonen
  • Date: 2009-07-16 18:37:41 UTC
  • Revision ID: james.westby@ubuntu.com-20090716183741-oww9kcxqrk991i1n
Tags: upstream-0.8.2237
ImportĀ upstreamĀ versionĀ 0.8.2237

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Wild Magic Source Code
 
2
// David Eberly
 
3
// http://www.geometrictools.com
 
4
// Copyright (c) 1998-2007
 
5
//
 
6
// This library is free software; you can redistribute it and/or modify it
 
7
// under the terms of the GNU Lesser General Public License as published by
 
8
// the Free Software Foundation; either version 2.1 of the License, or (at
 
9
// your option) any later version.  The license is available for reading at
 
10
// either of the locations:
 
11
//     http://www.gnu.org/copyleft/lgpl.html
 
12
//     http://www.geometrictools.com/License/WildMagicLicense.pdf
 
13
// The license applies to versions 0 through 4 of Wild Magic.
 
14
//
 
15
// Version: 4.0.0 (2006/06/28)
 
16
 
 
17
#ifndef WM4DISTSEGMENT3TRIANGLE3_H
 
18
#define WM4DISTSEGMENT3TRIANGLE3_H
 
19
 
 
20
#include "Wm4FoundationLIB.h"
 
21
#include "Wm4Distance.h"
 
22
#include "Wm4Segment3.h"
 
23
#include "Wm4Triangle3.h"
 
24
 
 
25
namespace Wm4
 
26
{
 
27
 
 
28
template <class Real>
 
29
class WM4_FOUNDATION_ITEM DistSegment3Triangle3
 
30
    : public Distance<Real,Vector3<Real> >
 
31
{
 
32
public:
 
33
    DistSegment3Triangle3 (const Segment3<Real>& rkSegment,
 
34
        const Triangle3<Real>& rkTriangle);
 
35
 
 
36
    // object access
 
37
    const Segment3<Real>& GetSegment () const;
 
38
    const Triangle3<Real>& GetTriangle () const;
 
39
 
 
40
    // static distance queries
 
41
    virtual Real Get ();
 
42
    virtual Real GetSquared ();
 
43
 
 
44
    // function calculations for dynamic distance queries
 
45
    virtual Real Get (Real fT, const Vector3<Real>& rkVelocity0,
 
46
        const Vector3<Real>& rkVelocity1);
 
47
    virtual Real GetSquared (Real fT, const Vector3<Real>& rkVelocity0,
 
48
        const Vector3<Real>& rkVelocity1);
 
49
 
 
50
    // Information about the closest points.
 
51
    Real GetSegmentParameter () const;
 
52
    Real GetTriangleBary (int i) const;
 
53
 
 
54
private:
 
55
    using Distance<Real,Vector3<Real> >::m_kClosestPoint0;
 
56
    using Distance<Real,Vector3<Real> >::m_kClosestPoint1;
 
57
 
 
58
    const Segment3<Real>& m_rkSegment;
 
59
    const Triangle3<Real>& m_rkTriangle;
 
60
 
 
61
    // Information about the closest points.
 
62
    Real m_fSegmentParameter;  // closest0 = seg.origin+param*seg.direction
 
63
    Real m_afTriangleBary[3];  // closest1 = sum_{i=0}^2 bary[i]*tri.vertex[i]
 
64
};
 
65
 
 
66
typedef DistSegment3Triangle3<float> DistSegment3Triangle3f;
 
67
typedef DistSegment3Triangle3<double> DistSegment3Triangle3d;
 
68
 
 
69
}
 
70
 
 
71
#endif