cgma
|
Public Member Functions | |
TorusSurface (axis_t axis_p, const Vector3d ¢er_p, double A, double B, double C) | |
virtual double | getFarthestExtentFromOrigin () const |
Protected Member Functions | |
virtual iBase_EntityHandle | getHandle (bool positive, iGeom_Instance &igm, double world_size) |
Protected Attributes | |
Vector3d | center |
axis_t | axis |
double | radius |
double | ellipse_axis_rad |
double | ellipse_perp_rad |
Definition at line 328 of file volumes.cpp.
TorusSurface::TorusSurface | ( | axis_t | axis_p, |
const Vector3d & | center_p, | ||
double | A, | ||
double | B, | ||
double | C | ||
) | [inline] |
Definition at line 338 of file volumes.cpp.
: center(center_p), axis( axis_p ), radius(A), ellipse_axis_rad( B ), ellipse_perp_rad( C ) {}
virtual double TorusSurface::getFarthestExtentFromOrigin | ( | ) | const [inline, virtual] |
Implements SurfaceVolume.
Definition at line 342 of file volumes.cpp.
{ return center.length() + radius + std::max( ellipse_axis_rad, ellipse_perp_rad ); }
virtual iBase_EntityHandle TorusSurface::getHandle | ( | bool | positive, |
iGeom_Instance & | igm, | ||
double | world_size | ||
) | [inline, protected, virtual] |
Implements SurfaceVolume.
Definition at line 347 of file volumes.cpp.
{ int igm_result; iBase_EntityHandle torus; iGeom_createTorus( igm, radius, ellipse_perp_rad, &torus, &igm_result ); CHECK_IGEOM( igm_result, "Creating initial torus"); if( ellipse_axis_rad != ellipse_perp_rad ){ double scalef = ellipse_axis_rad / ellipse_perp_rad; iGeom_scaleEnt( igm, torus, 0, 0, 0, 1.0, 1.0, scalef, &igm_result ); CHECK_IGEOM( igm_result, "Scaling torus" ); } if( axis == X ){ iGeom_rotateEnt( igm, torus, 90, 0, 1, 0, &igm_result ); CHECK_IGEOM( igm_result, "rotating torus (X)" ); } else if( axis == Y ){ iGeom_rotateEnt( igm, torus, -90, 1, 0, 0, &igm_result ); CHECK_IGEOM( igm_result, "rotating torus (Y)" ); } iGeom_moveEnt( igm, torus, center.v[0], center.v[1], center.v[2], &igm_result); CHECK_IGEOM( igm_result, "moving torus to its center point" ); iBase_EntityHandle final_torus = embedWithinWorld( positive, igm, world_size, torus, false ); return final_torus; }
axis_t TorusSurface::axis [protected] |
Definition at line 332 of file volumes.cpp.
Vector3d TorusSurface::center [protected] |
Definition at line 331 of file volumes.cpp.
double TorusSurface::ellipse_axis_rad [protected] |
Definition at line 334 of file volumes.cpp.
double TorusSurface::ellipse_perp_rad [protected] |
Definition at line 335 of file volumes.cpp.
double TorusSurface::radius [protected] |
Definition at line 333 of file volumes.cpp.