当前位置: 首页>>代码示例>>C++>>正文


C++ AVector::Distance方法代码示例

本文整理汇总了C++中AVector::Distance方法的典型用法代码示例。如果您正苦于以下问题:C++ AVector::Distance方法的具体用法?C++ AVector::Distance怎么用?C++ AVector::Distance使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在AVector的用法示例。


在下文中一共展示了AVector::Distance方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: DistanceToFiniteLine

double GLWidget::DistanceToFiniteLine(AVector v, AVector w, AVector p)
{
    float zero_epsilon = std::numeric_limits<float>::epsilon();

    // Return minimum distance between line segment vw and point p
    double l2 = v.DistanceSquared(w);					   // i.e. |w-v|^2 -  avoid a sqrt
    if (l2 > -zero_epsilon && l2 < zero_epsilon) return p.Distance(v);   // v == w case

    // Consider the line extending the segment, parameterized as v + t (w - v).
    // We find projection of point p onto the line.
    // It falls where t = [(p-v) . (w-v)] / |w-v|^2
    double t = (p - v).Dot(w - v) / l2;

    if (t < 0.0)	  { return  p.Distance(v); }       // Beyond the 'v' end of the segment
    else if (t > 1.0) { return  p.Distance(w); }  // Beyond the 'w' end of the segment
    AVector projection = v + (w - v) * t;     // Projection falls on the segment
    return p.Distance(projection);
}
开发者ID:azer89,项目名称:CelticKnots,代码行数:18,代码来源:GLWidget.cpp

示例2: GetClosestPointFromBorders

// not compatible with dirichlet boundary condition
AVector QuadMesh::GetClosestPointFromBorders(AVector pt)
{
    AVector closestPt = pt;
    float dist = std::numeric_limits<float>::max();
    std::vector<ALine> borderLines;
    borderLines.push_back(ALine(_leftStartPt,  _rightStartPt));
    borderLines.push_back(ALine(_leftEndPt,    _rightEndPt));
    borderLines.push_back(ALine(_leftStartPt,  _leftEndPt));
    borderLines.push_back(ALine(_rightStartPt, _rightEndPt));
    for(uint a = 0; a < borderLines.size(); a++)
    {
        AVector cPt = UtilityFunctions::GetClosestPoint(borderLines[a].GetPointA(), borderLines[a].GetPointB(), pt);
        if(pt.Distance(cPt) < dist)
        {
            dist = pt.Distance(cPt);
            closestPt = cPt;
        }
    }
    return closestPt;
}
开发者ID:azer89,项目名称:ConformalDecorativeStrokes,代码行数:21,代码来源:QuadMesh.cpp


注:本文中的AVector::Distance方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。