From 393b5cd1dc438872af89d334ef6e5fcc59f27d47 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Sun, 13 Jan 2013 17:24:39 +1000 Subject: Added Irrlicht 1.8, but without all the Windows binaries. --- .../irrlicht-1.8/doc/html/line3d_8h_source.html | 237 +++++++++++++++++++++ 1 file changed, 237 insertions(+) create mode 100644 libraries/irrlicht-1.8/doc/html/line3d_8h_source.html (limited to 'libraries/irrlicht-1.8/doc/html/line3d_8h_source.html') diff --git a/libraries/irrlicht-1.8/doc/html/line3d_8h_source.html b/libraries/irrlicht-1.8/doc/html/line3d_8h_source.html new file mode 100644 index 0000000..7711cb2 --- /dev/null +++ b/libraries/irrlicht-1.8/doc/html/line3d_8h_source.html @@ -0,0 +1,237 @@ + + +
+ +00001 // Copyright (C) 2002-2012 Nikolaus Gebhardt +00002 // This file is part of the "Irrlicht Engine". +00003 // For conditions of distribution and use, see copyright notice in irrlicht.h +00004 +00005 #ifndef __IRR_LINE_3D_H_INCLUDED__ +00006 #define __IRR_LINE_3D_H_INCLUDED__ +00007 +00008 #include "irrTypes.h" +00009 #include "vector3d.h" +00010 +00011 namespace irr +00012 { +00013 namespace core +00014 { +00015 +00017 template <class T> +00018 class line3d +00019 { +00020 public: +00021 +00023 +00024 line3d() : start(0,0,0), end(1,1,1) {} +00026 line3d(T xa, T ya, T za, T xb, T yb, T zb) : start(xa, ya, za), end(xb, yb, zb) {} +00028 line3d(const vector3d<T>& start, const vector3d<T>& end) : start(start), end(end) {} +00029 +00030 // operators +00031 +00032 line3d<T> operator+(const vector3d<T>& point) const { return line3d<T>(start + point, end + point); } +00033 line3d<T>& operator+=(const vector3d<T>& point) { start += point; end += point; return *this; } +00034 +00035 line3d<T> operator-(const vector3d<T>& point) const { return line3d<T>(start - point, end - point); } +00036 line3d<T>& operator-=(const vector3d<T>& point) { start -= point; end -= point; return *this; } +00037 +00038 bool operator==(const line3d<T>& other) const +00039 { return (start==other.start && end==other.end) || (end==other.start && start==other.end);} +00040 bool operator!=(const line3d<T>& other) const +00041 { return !(start==other.start && end==other.end) || (end==other.start && start==other.end);} +00042 +00043 // functions +00045 void setLine(const T& xa, const T& ya, const T& za, const T& xb, const T& yb, const T& zb) +00046 {start.set(xa, ya, za); end.set(xb, yb, zb);} +00048 void setLine(const vector3d<T>& nstart, const vector3d<T>& nend) +00049 {start.set(nstart); end.set(nend);} +00051 void setLine(const line3d<T>& line) +00052 {start.set(line.start); end.set(line.end);} +00053 +00055 +00056 T getLength() const { return start.getDistanceFrom(end); } +00057 +00059 +00060 T getLengthSQ() const { return start.getDistanceFromSQ(end); } +00061 +00063 +00064 vector3d<T> getMiddle() const +00065 { +00066 return (start + end)/(T)2; +00067 } +00068 +00070 +00071 vector3d<T> getVector() const +00072 { +00073 return end - start; +00074 } +00075 +00077 +00081 bool isPointBetweenStartAndEnd(const vector3d<T>& point) const +00082 { +00083 return point.isBetweenPoints(start, end); +00084 } +00085 +00087 +00089 vector3d<T> getClosestPoint(const vector3d<T>& point) const +00090 { +00091 vector3d<T> c = point - start; +00092 vector3d<T> v = end - start; +00093 T d = (T)v.getLength(); +00094 v /= d; +00095 T t = v.dotProduct(c); +00096 +00097 if (t < (T)0.0) +00098 return start; +00099 if (t > d) +00100 return end; +00101 +00102 v *= t; +00103 return start + v; +00104 } +00105 +00107 +00113 bool getIntersectionWithSphere(vector3d<T> sorigin, T sradius, f64& outdistance) const +00114 { +00115 const vector3d<T> q = sorigin - start; +00116 T c = q.getLength(); +00117 T v = q.dotProduct(getVector().normalize()); +00118 T d = sradius * sradius - (c*c - v*v); +00119 +00120 if (d < 0.0) +00121 return false; +00122 +00123 outdistance = v - core::squareroot ( d ); +00124 return true; +00125 } +00126 +00127 // member variables +00128 +00130 vector3d<T> start; +00132 vector3d<T> end; +00133 }; +00134 +00136 typedef line3d<f32> line3df; +00138 typedef line3d<s32> line3di; +00139 +00140 } // end namespace core +00141 } // end namespace irr +00142 +00143 #endif +00144 +