cgma
|
#include <ParamCubitPlane.hpp>
Public Member Functions | |
ParamCubitPlane (const CubitVector &zero_position, const CubitVector &u_direction, const CubitVector &v_direction, CubitStatus &result) | |
ParamCubitPlane (const ParamCubitPlane ©_this) | |
ParamCubitPlane (double A, double B, double C, double D) | |
ParamCubitPlane (const CubitVector &normal, double D) | |
ParamCubitPlane (const CubitVector &normal, const CubitVector &point) | |
ParamCubitPlane (DLIList< CubitVector * > &positions) | |
ParamCubitPlane (const CubitPlane ©_this) | |
CubitStatus | closest_point (const CubitVector &position, CubitVector &closest_position) const |
CubitStatus | move_to_plane (CubitVector &position) const |
Private Member Functions | |
void | make_parameterization () |
Private Attributes | |
CubitVector | p_ |
CubitVector | s_ |
CubitVector | t_ |
CubitBoolean | is_plane_valid_ |
CubitVector | n_ |
double | n_epsilon_ |
Definition at line 22 of file ParamCubitPlane.hpp.
ParamCubitPlane::ParamCubitPlane | ( | const CubitVector & | zero_position, |
const CubitVector & | u_direction, | ||
const CubitVector & | v_direction, | ||
CubitStatus & | result | ||
) |
Definition at line 27 of file ParamCubitPlane.cpp.
{ if( mk_plane_with_points( zero_position, zero_position + u_direction, zero_position + v_direction ) == (int)CUBIT_SUCCESS ) { is_plane_valid_= CUBIT_TRUE; result = CUBIT_SUCCESS; } else { is_plane_valid_= CUBIT_FALSE; result = CUBIT_FAILURE; return ; } p_ = zero_position; s_ = u_direction; t_ = v_direction; n_ = s_ * t_; double n_len = n_.length(); if( 1000 * CUBIT_DBL_MIN > n_len ) n_epsilon_ = CUBIT_DBL_MIN; else n_epsilon_ = n_len / 1000; }
ParamCubitPlane::ParamCubitPlane | ( | const ParamCubitPlane & | copy_this | ) |
ParamCubitPlane::ParamCubitPlane | ( | double | A, |
double | B, | ||
double | C, | ||
double | D | ||
) |
ParamCubitPlane::ParamCubitPlane | ( | const CubitVector & | normal, |
double | D | ||
) |
ParamCubitPlane::ParamCubitPlane | ( | const CubitVector & | normal, |
const CubitVector & | point | ||
) |
ParamCubitPlane::ParamCubitPlane | ( | DLIList< CubitVector * > & | positions | ) |
ParamCubitPlane::ParamCubitPlane | ( | const CubitPlane & | copy_this | ) |
CubitStatus ParamCubitPlane::closest_point | ( | const CubitVector & | position, |
CubitVector & | closest_position | ||
) | const |
Definition at line 65 of file ParamCubitPlane.cpp.
{ assert( is_plane_valid_); if( !is_plane_valid_) return CUBIT_FAILURE; closest_position = position - (normal() * distance(position)); return CUBIT_SUCCESS; }
void ParamCubitPlane::make_parameterization | ( | ) | [private] |
Definition at line 100 of file ParamCubitPlane.cpp.
{ //Choose the zero-point for the parameterization //as close to the origin as possible. // p_.set( 0.0, 0.0, 0.0); // move_to_plane( p_ ); is_plane_valid_ = CUBIT_TRUE; const CubitVector temp_p(0.0, 0.0, 0.0); CubitStatus s = closest_point( temp_p, p_ ); assert( s == CUBIT_SUCCESS ); if (CUBIT_SUCCESS != s) { PRINT_ERROR("ParamCubitPlane::closest_point failed.\n"); return; } CubitVector n = normal(); CubitVector p1; p1 = p_; double x = fabs( n.x() ); double y = fabs( n.y() ); double z = fabs( n.z() ); //Choose a direction from the zero point (p_) for //the second point as the direction of the smallest //component of the normal. The third point defining //the plane will be defined by the cross product of //the vector from the zero_point to this point and //the normal vector of the plane. if( (x <= y) && (x <= z) ) { p1.x( p1.x() + 1 ); } else if( (y <= x) && (y <= z) ) { p1.y( p1.y() + 1 ); } else { p1.z( p1.z() + 1 ); } move_to_plane( p1 ); s_ = p1 - p_; t_ = -(s_ * n); n_ = s_ * t_; double n_len = n_.length(); if( 1000 * CUBIT_DBL_MIN > n_len ) n_epsilon_ = CUBIT_DBL_MIN; else n_epsilon_ = n_len / 1000; is_plane_valid_= CUBIT_TRUE; }
CubitStatus ParamCubitPlane::move_to_plane | ( | CubitVector & | position | ) | const |
Definition at line 84 of file ParamCubitPlane.cpp.
{ const CubitVector v = position; CubitStatus s = closest_point( v, position ); return s; }
CubitBoolean ParamCubitPlane::is_plane_valid_ [private] |
Definition at line 88 of file ParamCubitPlane.hpp.
CubitVector ParamCubitPlane::n_ [private] |
Definition at line 89 of file ParamCubitPlane.hpp.
double ParamCubitPlane::n_epsilon_ [private] |
Definition at line 90 of file ParamCubitPlane.hpp.
CubitVector ParamCubitPlane::p_ [private] |
Definition at line 87 of file ParamCubitPlane.hpp.
CubitVector ParamCubitPlane::s_ [private] |
Definition at line 87 of file ParamCubitPlane.hpp.
CubitVector ParamCubitPlane::t_ [private] |
Definition at line 87 of file ParamCubitPlane.hpp.