Cosmetic: Newlines were corrected
[ode.git] / OPCODE / Ice / IceSegment.cpp
blobcd9ceb758cb55231125bcbc4e2e4d594d870fc87
1 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2 /**
3 * Contains code for segments.
4 * \file IceSegment.cpp
5 * \author Pierre Terdiman
6 * \date April, 4, 2000
7 */
8 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
10 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
11 /**
12 * Segment class.
13 * A segment is defined by S(t) = mP0 * (1 - t) + mP1 * t, with 0 <= t <= 1
14 * Alternatively, a segment is S(t) = Origin + t * Direction for 0 <= t <= 1.
15 * Direction is not necessarily unit length. The end points are Origin = mP0 and Origin + Direction = mP1.
17 * \class Segment
18 * \author Pierre Terdiman
19 * \version 1.0
21 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
23 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
24 // Precompiled Header
25 #include "Stdafx.h"
27 using namespace IceMaths;
29 float Segment::SquareDistance(const Point& point, float* t) const
31 Point Diff = point - mP0;
32 Point Dir = mP1 - mP0;
33 float fT = Diff | Dir;
35 if(fT<=0.0f)
37 fT = 0.0f;
39 else
41 float SqrLen= Dir.SquareMagnitude();
42 if(fT>=SqrLen)
44 fT = 1.0f;
45 Diff -= Dir;
47 else
49 fT /= SqrLen;
50 Diff -= fT*Dir;
54 if(t) *t = fT;
56 return Diff.SquareMagnitude();