Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members

# Segment.cpp

Go to the documentation of this file.

    00001 //------------------------------------------------------------------------------
    00002 // Lamp : Open source game middleware
    00003 // Copyright (C) 2004  Junpei Ohtani ( Email : junpee@users.sourceforge.jp )
    00004 //
    00005 // This library is free software; you can redistribute it and/or
    00006 // modify it under the terms of the GNU Lesser General Public
    00007 // License as published by the Free Software Foundation; either
    00008 // version 2.1 of the License, or (at your option) any later version.
    00009 //
    00010 // This library is distributed in the hope that it will be useful,
    00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
    00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00013 // Lesser General Public License for more details.
    00014 //
    00015 // You should have received a copy of the GNU Lesser General Public
    00016 // License along with this library; if not, write to the Free Software
    00017 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    00018 //------------------------------------------------------------------------------
    00019
    00020 /** @file
    00021  * セグメント実装
    00022  * @author Junpee
    00023  */
    00024
    00025 #include "LampBasic.h"
    00026 #include "Geometry/Primitive/Segment.h"
    00027 #include "Geometry/Distance/AxisAlignedBoxDistance.h"
    00028 #include "Geometry/Distance/CapsuleDistance.h"
    00029 #include "Geometry/Distance/ConeDistance.h"
    00030 #include "Geometry/Distance/LineDistance.h"
    00031 #include "Geometry/Distance/OrientedBoxDistance.h"
    00032 #include "Geometry/Distance/PlaneDistance.h"
    00033 #include "Geometry/Distance/RayDistance.h"
    00034 #include "Geometry/Distance/SegmentDistance.h"
    00035 #include "Geometry/Intersection/AxisAlignedBoxIntersection.h"
    00036 #include "Geometry/Intersection/CapsuleIntersection.h"
    00037 #include "Geometry/Intersection/ConeIntersection.h"
    00038 #include "Geometry/Intersection/LineIntersection.h"
    00039 #include "Geometry/Intersection/OrientedBoxIntersection.h"
    00040 #include "Geometry/Intersection/PlaneIntersection.h"
    00041 #include "Geometry/Intersection/RayIntersection.h"
    00042 #include "Geometry/Intersection/SegmentIntersection.h"
    00043
    00044 namespace Lamp{
    00045
    00046 //------------------------------------------------------------------------------
    00047 // 定数
    00048 //------------------------------------------------------------------------------
    00049 /// ゼロセグメント
    00050 const Segment Segment::zero(0.f, 0.f, 0.f, 0.f, 0.f, 0.f);
    00051
    00052 //------------------------------------------------------------------------------
    00053 // 距離
    00054 //------------------------------------------------------------------------------
    00055 // 点距離の二乗
    00056 float Segment::getSquaredDistance(const Vector3& point) const{
    00057     return SegmentDistance::squaredDistance(*this, point);
    00058 }
    00059 //------------------------------------------------------------------------------
    00060 // 軸沿いボックス距離の二乗
    00061 float Segment::getSquaredDistance(const AxisAlignedBox& axisAlignedBox) const{
    00062     return AxisAlignedBoxDistance::squaredDistance(axisAlignedBox, *this);
    00063 }
    00064 //------------------------------------------------------------------------------
    00065 // カプセル距離の二乗
    00066 float Segment::getSquaredDistance(const Capsule& capsule) const{
    00067     return CapsuleDistance::squaredDistance(capsule, *this);
    00068 }
    00069 //------------------------------------------------------------------------------
    00070 // コーン距離の二乗
    00071 float Segment::getSquaredDistance(const Cone& cone) const{
    00072     return ConeDistance::squaredDistance(cone, *this);
    00073 }
    00074 //------------------------------------------------------------------------------
    00075 // ライン距離の二乗
    00076 float Segment::getSquaredDistance(const Line& line) const{
    00077     return LineDistance::squaredDistance(line, *this);
    00078 }
    00079 //------------------------------------------------------------------------------
    00080 // 指向性ボックス距離の二乗
    00081 float Segment::getSquaredDistance(const OrientedBox& orientedBox) const{
    00082     return OrientedBoxDistance::squaredDistance(orientedBox, *this);
    00083 }
    00084 //------------------------------------------------------------------------------
    00085 // 平面距離
    00086 float Segment::getDistance(const Plane& plane) const{
    00087     return PlaneDistance::distance(plane, *this);
    00088 }
    00089 //------------------------------------------------------------------------------
    00090 // レイ距離の二乗
    00091 float Segment::getSquaredDistance(const Ray& ray) const{
    00092     return RayDistance::squaredDistance(ray, *this);
    00093 }
    00094 //------------------------------------------------------------------------------
    00095 // セグメント距離の二乗
    00096 float Segment::getSquaredDistance(const Segment& segment) const{
    00097     return SegmentDistance::squaredDistance(*this, segment);
    00098 }
    00099 //------------------------------------------------------------------------------
    00100 // 球距離の二乗
    00101 float Segment::getSquaredDistance(const Sphere& sphere) const{
    00102     return SegmentDistance::squaredDistance(*this, sphere);
    00103 }
    00104 //------------------------------------------------------------------------------
    00105 // 三角距離の二乗
    00106 float Segment::getSquaredDistance(const Triangle& triangle) const{
    00107     return SegmentDistance::squaredDistance(*this, triangle);
    00108 }
    00109 //------------------------------------------------------------------------------
    00110 // 交差
    00111 //------------------------------------------------------------------------------
    00112 // 点交差
    00113 bool Segment::intersect(const Vector3& point, float range) const{
    00114     return SegmentIntersection::intersect(*this, point, range);
    00115 }
    00116 //------------------------------------------------------------------------------
    00117 // 軸沿いボックス交差
    00118 bool Segment::intersect(const AxisAlignedBox& axisAlignedBox) const{
    00119     return AxisAlignedBoxIntersection::intersect(axisAlignedBox, *this);
    00120 }
    00121 //------------------------------------------------------------------------------
    00122 // カプセル交差
    00123 bool Segment::intersect(const Capsule& capsule) const{
    00124     return CapsuleIntersection::intersect(capsule, *this);
    00125 }
    00126 //------------------------------------------------------------------------------
    00127 // コーン交差
    00128 bool Segment::intersect(const Cone& cone) const{
    00129     return ConeIntersection::intersect(cone, *this);
    00130 }
    00131 //------------------------------------------------------------------------------
    00132 // ライン交差
    00133 bool Segment::intersect(const Line& line, float range) const{
    00134     return LineIntersection::intersect(line, *this, range);
    00135 }
    00136 //------------------------------------------------------------------------------
    00137 // 指向性ボックス交差
    00138 bool Segment::intersect(const OrientedBox& orientedBox) const{
    00139     return OrientedBoxIntersection::intersect(orientedBox, *this);
    00140 }
    00141 //------------------------------------------------------------------------------
    00142 // 平面交差
    00143 bool Segment::intersect(const Plane& plane) const{
    00144     return PlaneIntersection::intersect(plane, *this);
    00145 }
    00146 //------------------------------------------------------------------------------
    00147 // レイ交差
    00148 bool Segment::intersect(const Ray& ray, float range) const{
    00149     return RayIntersection::intersect(ray, *this, range);
    00150 }
    00151 //------------------------------------------------------------------------------
    00152 // セグメント交差
    00153 bool Segment::intersect(const Segment& segment, float range) const{
    00154     return SegmentIntersection::intersect(*this, segment, range);
    00155 }
    00156 //------------------------------------------------------------------------------
    00157 // 球交差
    00158 bool Segment::intersect(const Sphere& sphere) const{
    00159     return SegmentIntersection::intersect(*this, sphere);
    00160 }
    00161 //------------------------------------------------------------------------------
    00162 // 三角交差
    00163 bool Segment::intersect(const Triangle& triangle) const{
    00164     return SegmentIntersection::intersect(*this, triangle);
    00165 }
    00166 //------------------------------------------------------------------------------
    00167 } // End of namespace Lamp
    00168 //------------------------------------------------------------------------------