root/trunk/dep/include/g3dlite/G3D/Sphere.h @ 2

Revision 2, 2.5 kB (checked in by yumileroy, 17 years ago)

[svn] * Proper SVN structure

Original author: Neo2003
Date: 2008-10-02 16:23:55-05:00

Line 
1/**
2 @file Sphere.h
3 
4 Sphere class
5 
6 @maintainer Morgan McGuire, matrix@graphics3d.com
7 
8 @created 2001-06-02
9 @edited  2004-07-05
10 */
11
12#ifndef G3D_SPHERE_H
13#define G3D_SPHERE_H
14
15#include "G3D/platform.h"
16#include "G3D/Vector3.h"
17#include "G3D/Array.h"
18#include "G3D/Sphere.h"
19
20namespace G3D {
21
22/**
23 Sphere.
24 */
25class Sphere {
26private:
27
28    static int32     dummy;
29
30public:
31    Vector3          center;
32    float            radius;
33
34    Sphere() {
35        center = Vector3::zero();
36        radius = 0;
37    }
38
39    Sphere(
40        const Vector3&  center,
41        float           radius) {
42
43        this->center = center;
44        this->radius = radius;
45    }
46
47    virtual ~Sphere() {}
48
49    bool operator==(const Sphere& other) const {
50        return (center == other.center) && (radius == other.radius);
51    }
52
53    bool operator!=(const Sphere& other) const {
54        return !((center == other.center) && (radius == other.radius));
55    }
56
57    /**
58     Returns true if point is less than or equal to radius away from
59     the center.
60     */
61    bool contains(const Vector3& point) const;
62
63/**
64         @deprecated Use culledBy(Array<Plane>&)
65     */
66    bool culledBy(
67        const class Plane*  plane,
68        int                 numPlanes,
69                int32&                          cullingPlaneIndex,
70                const uint32            testMask,
71        uint32&             childMask) const;
72
73    /**
74         @deprecated Use culledBy(Array<Plane>&)
75     */
76    bool culledBy(
77        const class Plane*  plane,
78        int                 numPlanes,
79                int32&                          cullingPlaneIndex = dummy,
80                const uint32            testMask = -1) const;
81
82        /**
83      See AABox::culledBy
84         */
85        bool culledBy(
86                const Array<Plane>&             plane,
87                int32&                                  cullingPlaneIndex,
88                const uint32                    testMask,
89        uint32&                 childMask) const;
90
91    /**
92     Conservative culling test that does not produce a mask for children.
93     */
94        bool culledBy(
95                const Array<Plane>&             plane,
96                int32&                                  cullingPlaneIndex = dummy,
97                const uint32                    testMask                  = -1) const;
98    virtual std::string toString() const;
99
100    float volume() const;
101
102    /** @deprecated */
103    float surfaceArea() const;
104
105    inline float area() const {
106        return surfaceArea();
107    }
108
109    /**
110     Uniformly distributed on the surface.
111     */
112    Vector3 randomSurfacePoint() const;
113
114    /**
115     Uniformly distributed on the interior (includes surface)
116     */
117    Vector3 randomInteriorPoint() const;
118
119    void getBounds(class AABox& out) const;
120};
121
122} // namespace
123
124inline unsigned int hashCode(const G3D::Sphere& sphere) {
125    return (unsigned int)(hashCode(sphere.center) + (sphere.radius * 13));
126}
127
128#endif
Note: See TracBrowser for help on using the browser.