aboutsummaryrefslogtreecommitdiff
path: root/dep/include/g3dlite/G3D/Line.h
diff options
context:
space:
mode:
authormaximius <none@none>2009-10-17 15:51:44 -0700
committermaximius <none@none>2009-10-17 15:51:44 -0700
commite585187b248f48b3c6e9247b49fa07c6565d65e5 (patch)
tree637c5b7ddacf41040bef4ea4f75a97da64c6a9bc /dep/include/g3dlite/G3D/Line.h
parent26b5e033ffde3d161382fc9addbfa99738379641 (diff)
*Backed out changeset 3be01fb200a5
--HG-- branch : trunk
Diffstat (limited to 'dep/include/g3dlite/G3D/Line.h')
-rw-r--r--dep/include/g3dlite/G3D/Line.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/dep/include/g3dlite/G3D/Line.h b/dep/include/g3dlite/G3D/Line.h
index 0741e2f804f..724d5ef88cb 100644
--- a/dep/include/g3dlite/G3D/Line.h
+++ b/dep/include/g3dlite/G3D/Line.h
@@ -1,64 +1,86 @@
/**
@file Line.h
+
Line class
+
@maintainer Morgan McGuire, matrix@graphics3d.com
+
@created 2001-06-02
@edited 2006-02-28
*/
+
#ifndef G3D_LINE_H
#define G3D_LINE_H
+
#include "G3D/platform.h"
#include "G3D/Vector3.h"
+
namespace G3D {
+
class Plane;
+
/**
An infinite 3D line.
*/
class Line {
protected:
+
Vector3 _point;
Vector3 _direction;
+
Line(const Vector3& point, const Vector3& direction) {
_point = point;
_direction = direction.direction();
}
+
public:
+
/** Undefined (provided for creating Array<Line> only) */
inline Line() {}
+
virtual ~Line() {}
+
/**
Constructs a line from two (not equal) points.
*/
static Line fromTwoPoints(const Vector3 &point1, const Vector3 &point2) {
return Line(point1, point2 - point1);
}
+
/**
Creates a line from a point and a (nonzero) direction.
*/
static Line fromPointAndDirection(const Vector3& point, const Vector3& direction) {
return Line(point, direction);
}
+
/**
Returns the closest point on the line to point.
*/
Vector3 closestPoint(const Vector3& pt) const;
+
/**
Returns the distance between point and the line
*/
double distance(const Vector3& point) const {
return (closestPoint(point) - point).magnitude();
}
+
/** Returns a point on the line */
Vector3 point() const;
+
/** Returns the direction (or negative direction) of the line */
Vector3 direction() const;
+
/**
Returns the point where the line and plane intersect. If there
is no intersection, returns a point at infinity.
*/
Vector3 intersection(const Plane &plane) const;
};
+
};// namespace
+
#endif