diff options
author | maximius <none@none> | 2009-10-17 15:51:44 -0700 |
---|---|---|
committer | maximius <none@none> | 2009-10-17 15:51:44 -0700 |
commit | e585187b248f48b3c6e9247b49fa07c6565d65e5 (patch) | |
tree | 637c5b7ddacf41040bef4ea4f75a97da64c6a9bc /dep/include/g3dlite/G3D/Line.h | |
parent | 26b5e033ffde3d161382fc9addbfa99738379641 (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.h | 22 |
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 |