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


C# ICurve.LeftDerivative方法代码示例

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


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

示例1: GetPointOnTheLeftBoundaryPortConeSide

 Point GetPointOnTheLeftBoundaryPortConeSide(Point portLocation, ICurve boundaryCurve, bool curveIsClockwise,
                                             double portParam) {
     Point tan = curveIsClockwise
                     ? -boundaryCurve.LeftDerivative(portParam)
                     : boundaryCurve.RightDerivative(portParam);
     return portLocation + tan.Rotate(-EnteringAngleBound);
 }
开发者ID:danielskowronski,项目名称:network-max-flow-demo,代码行数:7,代码来源:InteractiveEdgeRouter.cs

示例2: TakeBoundaryPortOutsideOfItsLoosePolyline

        Point TakeBoundaryPortOutsideOfItsLoosePolyline(ICurve nodeBoundary, double parameter, Polyline loosePolyline) {
            Point location = nodeBoundary[parameter];
            Point tangent =
                (nodeBoundary.LeftDerivative(parameter).Normalize() +
                 nodeBoundary.RightDerivative(parameter).Normalize()).Normalize();
            if (Point.GetTriangleOrientation(PointInsideOfConvexCurve(nodeBoundary), location, location + tangent) ==
                TriangleOrientation.Counterclockwise)
                tangent = -tangent;

            tangent = tangent.Rotate(Math.PI/2);

            double len = loosePolyline.BoundingBox.Diagonal;
            var ls = new LineSegment(location, location + len*tangent);
            Point p = Curve.GetAllIntersections(ls, loosePolyline, false)[0].IntersectionPoint;

            Point del = tangent*(p - location).Length*0.5;
            //Point del = tangent * this.OffsetForPolylineRelaxing * 2;


            while (true) {
                ls = new LineSegment(location, p + del);
                bool foundIntersectionsOutsideOfSource = false;
                foreach (IntersectionInfo ii in
                    IntersectionsOfLineAndRectangleNodeOverPolyline(ls, ObstacleCalculator.RootOfLooseHierarchy))
                    if (ii.Segment1 != loosePolyline) {
                        del /= 1.5;
                        foundIntersectionsOutsideOfSource = true;
                        break;
                    }
                if (!foundIntersectionsOutsideOfSource)
                    break;
            }

            return ls.End;
        }
开发者ID:danielskowronski,项目名称:network-max-flow-demo,代码行数:35,代码来源:InteractiveEdgeRouter.cs


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