nuclear@12: /* nuclear@12: eqemu - electronic queue system emulator nuclear@12: Copyright (C) 2014 John Tsiombikas , nuclear@12: Eleni-Maria Stea nuclear@12: nuclear@12: This program is free software: you can redistribute it and/or modify nuclear@12: it under the terms of the GNU General Public License as published by nuclear@12: the Free Software Foundation, either version 3 of the License, or nuclear@12: (at your option) any later version. nuclear@12: nuclear@12: This program is distributed in the hope that it will be useful, nuclear@12: but WITHOUT ANY WARRANTY; without even the implied warranty of nuclear@12: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the nuclear@12: GNU General Public License for more details. nuclear@12: nuclear@12: You should have received a copy of the GNU General Public License nuclear@12: along with this program. If not, see . nuclear@12: */ nuclear@4: #ifndef BVOL_H_ nuclear@4: #define BVOL_H_ nuclear@4: nuclear@4: #include "vmath.h" nuclear@4: nuclear@4: struct HitPoint { nuclear@4: float t; nuclear@4: Vector3 pos; nuclear@4: }; nuclear@4: nuclear@4: class BVolume { nuclear@4: public: nuclear@4: virtual ~BVolume() {} nuclear@4: nuclear@4: virtual bool intersect(const Ray &ray, HitPoint *hit) const = 0; nuclear@4: }; nuclear@4: nuclear@4: class BSphere : public BVolume { nuclear@4: private: nuclear@4: Vector3 center; nuclear@4: float radius; nuclear@4: nuclear@4: public: nuclear@4: BSphere(); nuclear@4: explicit BSphere(const Vector3 &c, float rad = 1.0); nuclear@4: nuclear@4: void set_center(const Vector3 ¢er); nuclear@4: const Vector3 &get_center() const; nuclear@4: nuclear@4: void set_radius(float rad); nuclear@4: float get_radius() const; nuclear@4: nuclear@4: bool intersect(const Ray &ray, HitPoint *hit) const; nuclear@4: }; nuclear@4: nuclear@4: #endif // BVOL_H_