11 class LineSource_phantom
14 inline LineSource_phantom();
16 inline const shared_ptr<Shape3D>& get_A_ptr()
const {
return A_ptr; }
18 inline shared_ptr<Shape3D> make_union_ptr(
const float fraction)
const;
20 inline void translate(
const CartesianCoordinate3D<float>& direction);
21 inline void scale(
const CartesianCoordinate3D<float>& scale3D);
24 shared_ptr<Shape3D> A_ptr;
27 LineSource_phantom::LineSource_phantom()
29 A_ptr =
new EllipsoidalCylinder(150, 0, 0, CartesianCoordinate3D<float>(0, 0, 0), 0, 0, 0);
33 LineSource_phantom::translate(
const CartesianCoordinate3D<float>& direction)
35 A_ptr->translate(direction);
39 LineSource_phantom::scale(
const CartesianCoordinate3D<float>& scale3D)
42 A_ptr->scale_around_origin(scale3D);
46 LineSource_phantom::make_union_ptr(
const float fraction)
const 48 shared_ptr<Shape3D> full_A = get_A_ptr()->clone();
53 class CylindersWithLineSource_phantom
56 inline CylindersWithLineSource_phantom();
61 inline const shared_ptr<Shape3D>& get_B_ptr()
const {
return B_ptr; }
63 inline const shared_ptr<Shape3D>& get_C_ptr()
const {
return C_ptr; }
71 inline shared_ptr<Shape3D> make_union_ptr(
const float fraction)
const;
73 inline void translate(
const CartesianCoordinate3D<float>& direction);
74 inline void scale(
const CartesianCoordinate3D<float>& scale3D);
78 shared_ptr<Shape3D> B_ptr;
79 shared_ptr<Shape3D> C_ptr;
84 CylindersWithLineSource_phantom::CylindersWithLineSource_phantom()
116 B_ptr =
new EllipsoidalCylinder(1, 8, 8, CartesianCoordinate3D<float>(0, -14, 5), 0, 0, 0);
118 C_ptr =
new EllipsoidalCylinder(1, 8, 8, CartesianCoordinate3D<float>(0, 14, 5), 0, 0, 0);
148 CylindersWithLineSource_phantom::translate(
const CartesianCoordinate3D<float>& direction)
151 B_ptr->translate(direction);
152 C_ptr->translate(direction);
158 CylindersWithLineSource_phantom::scale(
const CartesianCoordinate3D<float>& scale3D)
162 B_ptr->scale_around_origin(scale3D);
163 C_ptr->scale_around_origin(scale3D);
169 CylindersWithLineSource_phantom::make_union_ptr(
const float fraction)
const 172 shared_ptr<Shape3D> full_B = get_B_ptr()->clone();
173 shared_ptr<Shape3D> full_C = get_C_ptr()->clone();
178 shared_ptr<Shape3D> AB_union =
new CombinedShape3D<logical_and<bool>>(full_C, full_B);
197 class CylindersWithLineSource_phantom
202 inline CylindersWithLineSource_phantom();
204 inline const shared_ptr<Shape3D>& get_A_ptr()
const 216 inline shared_ptr<Shape3D> make_union_ptr(
const float fraction)
const;
218 inline void translate(
const CartesianCoordinate3D<float>& direction);
219 inline void scale(
const CartesianCoordinate3D<float>& scale3D);
222 shared_ptr<Shape3D> A_ptr;
232 CylindersWithLineSource_phantom::CylindersWithLineSource_phantom()
235 A_ptr =
new EllipsoidalCylinder (100,1,1,
236 CartesianCoordinate3D<float>(0,0,0),
270 CylindersWithLineSource_phantom::translate(
const CartesianCoordinate3D<float>& direction)
273 A_ptr->translate(direction);
281 CylindersWithLineSource_phantom::scale(
const CartesianCoordinate3D<float>& scale3D)
284 A_ptr->scale_around_origin(scale3D);
292 CylindersWithLineSource_phantom::make_union_ptr(
const float fraction)
const 294 shared_ptr<Shape3D> full_A = get_A_ptr()->clone();
Declaration of class stir::EllipsoidalCylinder.
Declaration of class stir::CombinedShape3D.