|
cgma
|
#include <SphereEvaluator.hpp>
Public Member Functions | |
| SphereEvaluator (const SphereEvaluatorData *data) | |
| virtual | ~SphereEvaluator () |
| virtual GeometryType | ask_type () |
| virtual CubitBoolean | is_parametric () const |
| virtual CubitBoolean | is_periodic () const |
| virtual CubitBoolean | is_periodic_in_U (double &period) const |
| virtual CubitBoolean | is_periodic_in_V (double &period) const |
| virtual CubitBoolean | is_singular_in_U () const |
| virtual CubitBoolean | is_singular_in_V () const |
| virtual CubitBoolean | is_closed_in_U () const |
| virtual CubitBoolean | is_closed_in_V () const |
| virtual CubitBoolean | get_param_range_U (double &lower_bound, double &upper_bound) const |
| virtual CubitBoolean | get_param_range_V (double &lower_bound, double &upper_bound) const |
| virtual const CubitEvaluatorData * | evaluator_data () const |
| virtual CubitVector | position_from_u_v (double u, double v) const |
| virtual CubitStatus | u_v_from_position (CubitVector const &location, double &u, double &v, CubitVector *closest_location) const |
| virtual CubitBox | bounding_box () const |
| virtual CubitStatus | principal_curvatures (CubitVector const &location, double &curvature_1, double &curvature_2, CubitVector *closest_location=NULL) |
| virtual CubitStatus | closest_point (CubitVector const &location, CubitVector *closest_location=NULL, CubitVector *unit_normal_ptr=NULL, CubitVector *curvature1_ptr=NULL, CubitVector *curvature2_ptr=NULL) const |
Private Attributes | |
| SphereEvaluatorData | mEvalData |
Definition at line 34 of file SphereEvaluator.hpp.
| SphereEvaluator::SphereEvaluator | ( | const SphereEvaluatorData * | data | ) | [inline] |
Definition at line 46 of file SphereEvaluator.hpp.
{ mEvalData = *data; }
| virtual SphereEvaluator::~SphereEvaluator | ( | ) | [inline, virtual] |
Definition at line 48 of file SphereEvaluator.hpp.
{}
| virtual GeometryType SphereEvaluator::ask_type | ( | ) | [inline, virtual] |
Reimplemented from CubitEvaluator.
Definition at line 51 of file SphereEvaluator.hpp.
{ return SPHERE_SURFACE_TYPE; }
| CubitBox SphereEvaluator::bounding_box | ( | void | ) | const [virtual] |
Implements CubitEvaluator.
Definition at line 33 of file SphereEvaluator.cpp.
{
CubitVector center = mTmatrix * mEvalData.center;
CubitVector min( center.x() - mEvalData.radius,
center.y() - mEvalData.radius,
center.z() - mEvalData.radius );
CubitVector max( center.x() + mEvalData.radius,
center.y() + mEvalData.radius,
center.z() + mEvalData.radius );
CubitBox thebbox( min, max );
return thebbox;
}
| CubitStatus SphereEvaluator::closest_point | ( | CubitVector const & | location, |
| CubitVector * | closest_location = NULL, |
||
| CubitVector * | unit_normal_ptr = NULL, |
||
| CubitVector * | curvature1_ptr = NULL, |
||
| CubitVector * | curvature2_ptr = NULL |
||
| ) | const [virtual] |
Implements CubitEvaluator.
Definition at line 81 of file SphereEvaluator.cpp.
{
CubitTransformMatrix inverse_Tmatrix = mTmatrix;
inverse_Tmatrix.inverse();
CubitVector new_pt = inverse_Tmatrix * location;
// ******************************************************
// If requested, compute the normal at the input point.
// ******************************************************
if ( unit_normal_ptr != NULL )
{
CubitVector origin( 0.0, 0.0, 0.0 );
CubitVector endpt = new_pt - mEvalData.center;
origin = mTmatrix * origin;
endpt = mTmatrix * endpt;
*unit_normal_ptr = endpt - origin;
unit_normal_ptr->normalize();
}
// *************************************************************
// If requested, compute the closest point to the input point.
// *************************************************************
if ( closest_location != NULL )
{
if ( location.within_tolerance( mEvalData.center, GEOMETRY_RESABS ) )
{
closest_location->set( mEvalData.center.x() + mEvalData.radius,
mEvalData.center.y(),
mEvalData.center.z() );
}
else
{
CubitVector vec = new_pt - mEvalData.center;
vec.normalize();
*closest_location = mEvalData.center + ( vec * mEvalData.radius );
*closest_location = mTmatrix * (*closest_location);
}
}
// ***********************************************************************
// If requested, compute the curvature directions.
// ***********************************************************************
if ( curvature1_ptr &&
curvature2_ptr )
{
PRINT_ERROR("Sphere's do not current support curvature pointer requests.\n");
return CUBIT_FAILURE;
}
return CUBIT_SUCCESS;
}
| const CubitEvaluatorData * SphereEvaluator::evaluator_data | ( | void | ) | const [virtual] |
Implements CubitEvaluator.
Definition at line 213 of file SphereEvaluator.cpp.
{
return &mEvalData;
}
| CubitBoolean SphereEvaluator::get_param_range_U | ( | double & | lower_bound, |
| double & | upper_bound | ||
| ) | const [virtual] |
Implements CubitEvaluator.
Definition at line 223 of file SphereEvaluator.cpp.
{
lower_bound = 0.0;
upper_bound = 2.0*CUBIT_PI;
return CUBIT_TRUE;
}
| CubitBoolean SphereEvaluator::get_param_range_V | ( | double & | lower_bound, |
| double & | upper_bound | ||
| ) | const [virtual] |
Implements CubitEvaluator.
Definition at line 238 of file SphereEvaluator.cpp.
{
lower_bound = 0;
upper_bound = CUBIT_PI;
return CUBIT_TRUE;
}
| virtual CubitBoolean SphereEvaluator::is_closed_in_U | ( | ) | const [inline, virtual] |
Implements CubitEvaluator.
Definition at line 60 of file SphereEvaluator.hpp.
{ return CUBIT_TRUE; }
| virtual CubitBoolean SphereEvaluator::is_closed_in_V | ( | ) | const [inline, virtual] |
Implements CubitEvaluator.
Definition at line 61 of file SphereEvaluator.hpp.
{ return CUBIT_FALSE; }
| virtual CubitBoolean SphereEvaluator::is_parametric | ( | ) | const [inline, virtual] |
Implements CubitEvaluator.
Definition at line 52 of file SphereEvaluator.hpp.
{ return CUBIT_TRUE; }
| virtual CubitBoolean SphereEvaluator::is_periodic | ( | ) | const [inline, virtual] |
Implements CubitEvaluator.
Definition at line 53 of file SphereEvaluator.hpp.
{ return CUBIT_TRUE; }
| virtual CubitBoolean SphereEvaluator::is_periodic_in_U | ( | double & | period | ) | const [inline, virtual] |
Implements CubitEvaluator.
Definition at line 54 of file SphereEvaluator.hpp.
{ period = 2*CUBIT_PI;
return CUBIT_TRUE; }
| virtual CubitBoolean SphereEvaluator::is_periodic_in_V | ( | double & | period | ) | const [inline, virtual] |
Implements CubitEvaluator.
Definition at line 56 of file SphereEvaluator.hpp.
{ period = 2*CUBIT_PI;
return CUBIT_FALSE; }
| virtual CubitBoolean SphereEvaluator::is_singular_in_U | ( | ) | const [inline, virtual] |
Implements CubitEvaluator.
Definition at line 58 of file SphereEvaluator.hpp.
{ return CUBIT_FALSE; }
| virtual CubitBoolean SphereEvaluator::is_singular_in_V | ( | ) | const [inline, virtual] |
Implements CubitEvaluator.
Definition at line 59 of file SphereEvaluator.hpp.
{ return CUBIT_TRUE; }
| CubitVector SphereEvaluator::position_from_u_v | ( | double | u, |
| double | v | ||
| ) | const [virtual] |
Implements CubitEvaluator.
Definition at line 146 of file SphereEvaluator.cpp.
{
double two_pi = 2.0 * CUBIT_PI;
while ( u > two_pi ) u -= two_pi;
while ( u < 0.0 ) u += two_pi;
double radius_modified = mEvalData.radius * sin ( v );
double x = radius_modified * cos( u );
double y = radius_modified * sin( u );
double z = mEvalData.radius * cos( v );
CubitVector position( x, y, z );
position = mTmatrix * position;
return position;
}
| CubitStatus SphereEvaluator::principal_curvatures | ( | CubitVector const & | location, |
| double & | curvature_1, | ||
| double & | curvature_2, | ||
| CubitVector * | closest_location = NULL |
||
| ) | [virtual] |
Implements CubitEvaluator.
Definition at line 58 of file SphereEvaluator.cpp.
{
curvature_1 = curvature_2 = 1.0 / mEvalData.radius;
if ( closest_location )
{
closest_point( location, closest_location );
}
return CUBIT_SUCCESS;
}
| CubitStatus SphereEvaluator::u_v_from_position | ( | CubitVector const & | location, |
| double & | u, | ||
| double & | v, | ||
| CubitVector * | closest_location | ||
| ) | const [virtual] |
Implements CubitEvaluator.
Definition at line 169 of file SphereEvaluator.cpp.
{
CubitTransformMatrix inverse_Tmatrix = mTmatrix;
inverse_Tmatrix.inverse();
CubitVector transformed_pt = inverse_Tmatrix * location;
CubitVector dir( transformed_pt );
dir.normalize();
v = acos( dir.z() );
if ( v < GEOMETRY_RESABS )
{
u = 0.0;
}
else
{
dir.set( dir.x(), dir.y(), 0.0 );
dir.normalize();
u = acos( dir.x() );
if ( dir.y() < 0.0 )
{
u = 2*CUBIT_PI - u;
}
while ( u < 0.0 ) u += 2*CUBIT_PI;
while ( u >= 2*CUBIT_PI ) u -= 2*CUBIT_PI;
}
if ( closest_location )
closest_point( location, closest_location );
return CUBIT_SUCCESS;
}
Definition at line 39 of file SphereEvaluator.hpp.