Node:Getting Shapes Solids, Previous:Getting Shape Centers Solids, Up:Returning Elements and Information Solids
The functions in this section
all return const
pointers to Shape
, or one of its derived
classes. Therefore, they must be invoked in such a way, that
the const
qualifier is not discarded. See
the description of get_reg_polygon_ptr()
below, for an example.
Shape* get_shape_ptr (const unsigned short shape_type, const unsigned short s) | const virtual function |
Copies one of the objects belonging to the Solid , and returns a
pointer to Shape that points to the copy.
The object is found by dereferencing one of the pointers on one of the
vectors of pointers belonging to the Solid .
Currently, these
vectors are circles , ellipses , paths ,
rectangles , and reg_polygons . The argument
shape_type specifies the vector, and the
argument s specifies which element of the vector should be
accessed. The following public static const data members of
Solid can (and probably should) be passed as the shape_type
argument: CIRCLE , ELLIPSE , PATH , RECTANGLE ,
and REG_POLYGON .
This function was originally intended to be called within the more
specialized functions in this
section, namely: Icosahedron I(origin, 3); I.filldraw(); Reg_Polygon* t = static_cast<Reg_Polygon*>(I.get_shape_ptr(Solid::REG_POLYGON, 9)); t->fill(gray);
|
const Reg_Polygon* get_circle_ptr (const unsigned short s) | const virtual functions |
const Reg_Polygon* get_ellipse_ptr (const unsigned short s) | |
const Reg_Polygon* get_path_ptr (const unsigned short s) | |
const Reg_Polygon* get_rectangle_ptr (const unsigned short s) | |
const Reg_Polygon* get_reg_polygon_ptr (const unsigned short s) |
Each of these functions returns a pointer from one of the vectors of
Shape pointers belonging to the Solid . The argument s
specifies which element of the appropriate vector should be returned.
For example, get_reg_polygon_ptr(2) returns the Reg_Polygon*
in reg_polygons[2] .
Since these functions return Dodecahedron d(origin, 3); d.draw(); const Reg_Polygon* ptr = d.get_reg_polygon_ptr(0); ptr->draw(black, "evenly scaled 4", "pencircle scaled 1mm"); Reg_Polygon A = *d.get_reg_polygon_ptr(5); A.fill(gray);
|