1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
// -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//
// $Id: sphere.C,v 1.5.28.1 2007-03-25 22:02:36 oliver Exp $
#include <BALL/VIEW/PRIMITIVES/sphere.h>
using namespace std;
namespace BALL
{
namespace VIEW
{
Sphere::Sphere()
: GeometricObject(),
Sphere3(),
point_ptr_(&p)
{
}
Sphere::Sphere(const Sphere& sphere)
: GeometricObject(sphere),
Sphere3(sphere),
point_ptr_(sphere.point_ptr_)
{
}
Sphere::~Sphere()
{
#ifdef BALL_VIEW_DEBUG
Log.error() << "Destructing object " << (void *)this
<< " of class " << RTTI::getName<Sphere>() << endl;
#endif
}
void Sphere::clear()
{
GeometricObject::clear();
Sphere3::clear();
point_ptr_ = &p;
}
void Sphere::set(const Sphere& sphere)
{
GeometricObject::set(sphere);
Sphere3::set(sphere);
point_ptr_ = sphere.point_ptr_;
}
const Sphere& Sphere::operator = (const Sphere& sphere)
{
set(sphere);
return *this;
}
void Sphere::swap(Sphere& sphere)
{
GeometricObject::swap(sphere);
Sphere3::swap(sphere);
Vector3 *tmp_vector = point_ptr_;
if (sphere.point_ptr_ != &sphere.p)
{
point_ptr_ = sphere.point_ptr_;
if (tmp_vector != &p)
{
sphere.point_ptr_ = tmp_vector;
}
else
{
sphere.point_ptr_ = &sphere.p;
}
}
else if (point_ptr_ != &p)
{
sphere.point_ptr_ = tmp_vector;
point_ptr_ = &sphere.p;
}
p.swap(sphere.p);
}
bool Sphere::isValid() const
{
return (GeometricObject::isValid() &&
Sphere3::isValid() &&
point_ptr_ != 0);
}
void Sphere::dump(ostream& s, Size depth) const
{
BALL_DUMP_STREAM_PREFIX(s);
BALL_DUMP_DEPTH(s, depth);
BALL_DUMP_HEADER(s, this, this);
GeometricObject::dump(s, depth + 1);
BALL_DUMP_DEPTH(s, depth);
s << "point : " << (*point_ptr_) << endl;
BALL_DUMP_DEPTH(s, depth);
s << "pointer : " << (point_ptr_) << endl;
BALL_DUMP_DEPTH(s, depth);
s << "radius: " << (radius) << endl;
BALL_DUMP_STREAM_SUFFIX(s);
}
void Sphere::getVertices(vector<Vector3>& vertices) const
{
vertices.push_back(*point_ptr_);
}
} // namespace VIEW
} // namespace BALL
|