本文整理汇总了C++中CubitVector::distance_between方法的典型用法代码示例。如果您正苦于以下问题:C++ CubitVector::distance_between方法的具体用法?C++ CubitVector::distance_between怎么用?C++ CubitVector::distance_between使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CubitVector
的用法示例。
在下文中一共展示了CubitVector::distance_between方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: dist_to_edge
//======================================================================
// Function: dist_to_edge
// Description: return the distance from the point to this edge
// Author: sjowen
// Date: 2/01
// Corrected by JFowler 5/03
//======================================================================
double CubitFacetEdge::dist_to_edge(
const CubitVector &this_point,
CubitVector &close_point,
CubitBoolean &outside_edge )
{
double dist = 0.0;
CubitVector p0 = point(0)->coordinates();
CubitVector p1 = point(1)->coordinates();
CubitVector edge_vec( p1, p0 );
CubitVector point_vec( this_point, p0 );
double edge_length;
edge_length = edge_vec.normalize();
double dist_on_edge = edge_vec % point_vec;
if (dist_on_edge < 0.0e0)
{
close_point = p0;
outside_edge = CUBIT_TRUE;
}
else if (dist_on_edge > edge_length)
{
close_point = p1;
outside_edge = CUBIT_TRUE;
}
else
{
close_point = p0 - edge_vec * dist_on_edge;
outside_edge = CUBIT_FALSE;
}
dist = close_point.distance_between( this_point );
return dist;
}
示例2: point_containment
CubitPointContainment OCCSurface::point_containment( const CubitVector &point )
{
TopoDS_Face *face = get_TopoDS_Face();
gp_Pnt p(point.x(), point.y(), point.z());
double tol = OCCQueryEngine::instance()->get_sme_resabs_tolerance();
//It's checking the state of the projected point of THIS Point
BRepClass_FaceClassifier face_classifier;
face_classifier.Perform(*face, p, tol);
TopAbs_State state = face_classifier.State();
//if surface is part of a periodic TopoDS_Face, it'll check the point
//againt the whole periodic Face, even it outside the occsurface
//boundary, if it's on its periodic extension, it'll return as in.
if (state == TopAbs_IN)
{
//double check if the point is projected on the surface
CubitVector closest_point;
this->closest_point_trimmed(point, closest_point);
if(point.distance_between(closest_point) < tol)
return CUBIT_PNT_INSIDE;
else
return CUBIT_PNT_OUTSIDE;
}
else if (state == TopAbs_OUT)
return CUBIT_PNT_OUTSIDE;
else if (state == TopAbs_ON)
return CUBIT_PNT_BOUNDARY;
return CUBIT_PNT_UNKNOWN;
}
示例3: length
//======================================================================
// Function: length
// Description: return length of an edge
// Author: sjowen
// Date: 2/01
//======================================================================
double CubitFacetEdge::length()
{
CubitVector start = point(0)->coordinates();
CubitVector end = point(1)->coordinates();
return start.distance_between( end );
}