cgma
|
Public Member Functions | |
HexVolume (const Vector3d ¢er_p, const Vector3d &h_p, const Vector3d &r_p, const Vector3d &s_p, const Vector3d &t_p) | |
HexVolume (const Vector3d ¢er_p, const Vector3d &h_p, const Vector3d &r_p) | |
virtual double | getFarthestExtentFromOrigin () const |
Protected Member Functions | |
virtual iBase_EntityHandle | getHandle (bool positive, iGeom_Instance &igm, double world_size) |
Protected Attributes | |
Vector3d | base_center |
Vector3d | heightV |
Vector3d | RV |
Vector3d | SV |
Vector3d | TV |
Definition at line 692 of file volumes.cpp.
HexVolume::HexVolume | ( | const Vector3d & | center_p, |
const Vector3d & | h_p, | ||
const Vector3d & | r_p, | ||
const Vector3d & | s_p, | ||
const Vector3d & | t_p | ||
) | [inline] |
Definition at line 700 of file volumes.cpp.
: base_center(center_p), heightV(h_p), RV(r_p), SV(s_p), TV(t_p) {}
HexVolume::HexVolume | ( | const Vector3d & | center_p, |
const Vector3d & | h_p, | ||
const Vector3d & | r_p | ||
) | [inline] |
Definition at line 705 of file volumes.cpp.
: base_center(center_p), heightV(h_p), RV(r_p), SV( r_p.rotate_about(h_p,60.0) ), TV( r_p.rotate_about(h_p,120.0) ) { if( OPT_DEBUG ){ std::cout << "Inferred vectors for 9-args HEX/RHP:" << RV << SV << TV << std::endl; } }
virtual double HexVolume::getFarthestExtentFromOrigin | ( | ) | const [inline, virtual] |
Implements SurfaceVolume.
Definition at line 713 of file volumes.cpp.
virtual iBase_EntityHandle HexVolume::getHandle | ( | bool | positive, |
iGeom_Instance & | igm, | ||
double | world_size | ||
) | [inline, protected, virtual] |
Implements SurfaceVolume.
Definition at line 719 of file volumes.cpp.
{ int igm_result; iBase_EntityHandle hex; hex = makeWorldSphere( igm, world_size ); Vector3d b = - heightV.normalize(); iGeom_sectionEnt( igm, hex, b.v[0], b.v[1], b.v[2], 0, true, &hex, &igm_result ); CHECK_IGEOM( igm_result, "Sectioning world for a hex (1)" ); b = -b; iGeom_sectionEnt( igm, hex, b.v[0], b.v[1], b.v[2], heightV.length(), true, &hex, &igm_result ); CHECK_IGEOM( igm_result, "Sectioning world for a hex (2)" ); const Vector3d* vec[3] = {&RV, &SV, &TV}; for( int i = 0; i < 3; ++i ){ Vector3d v = *(vec[i]); double length = v.length(); v = v.normalize(); iGeom_sectionEnt( igm, hex, v.v[0], v.v[1], v.v[2], length, true, &hex, &igm_result ); CHECK_IGEOM( igm_result, "Sectioning world for a hex (3)" ); v = -v; iGeom_sectionEnt( igm, hex, v.v[0], v.v[1], v.v[2], length, true, &hex, &igm_result ); CHECK_IGEOM( igm_result, "Sectioning world for a hex (4)" ); } iGeom_moveEnt( igm, hex, base_center.v[0], base_center.v[1], base_center.v[2], &igm_result ); CHECK_IGEOM( igm_result, "Moving hex" ); iBase_EntityHandle final_hex = embedWithinWorld( positive, igm, world_size, hex, false ); return final_hex; }
Vector3d HexVolume::base_center [protected] |
Definition at line 695 of file volumes.cpp.
Vector3d HexVolume::heightV [protected] |
Definition at line 696 of file volumes.cpp.
Vector3d HexVolume::RV [protected] |
Definition at line 696 of file volumes.cpp.
Vector3d HexVolume::SV [protected] |
Definition at line 696 of file volumes.cpp.
Vector3d HexVolume::TV [protected] |
Definition at line 696 of file volumes.cpp.