00001 /* Copyright (C) 2001 W.P. van Paassen - peter@paassen.tmfweb.nl 00002 00003 This program is free software; you can redistribute it and/or modify it under 00004 the terms of the GNU General Public License as published by the Free 00005 Software Foundation; either version 2 of the License, or (at your 00006 option) any later version. 00007 00008 This program is distributed in the hope that it will be useful, but WITHOUT 00009 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00010 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 00011 for more details. 00012 00013 You should have received a copy of the GNU General Public License 00014 along with this program; see the file COPYING. If not, write to the Free 00015 Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ 00016 00017 #ifndef WP_RAY3D_H 00018 #define WP_RAY3D_H 00019 00020 #include "WP_Def.h" 00021 #include "WP_Point3D.h" 00022 #include "WP_Vector3D.h" 00023 00024 namespace WPCG 00025 { 00044 class WP_Ray3D 00045 { 00046 public: 00047 WP_Ray3D(){}; 00048 00053 WP_Ray3D(const WP_Point3D& p, const WP_Vector3D& v); 00054 00055 ~WP_Ray3D(){}; 00056 00060 float sphere_intersection(const WP_Matrix3D& m) const; 00061 00067 WP_Ray3D createInverseTransformedRay(const WP_Matrix3D& inverse_m) const; 00068 00072 void draw() const; 00073 00077 WP_Point3D start; 00078 00082 WP_Vector3D direction; 00083 }; 00084 } 00085 #endif