• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C# LineSegment类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中LineSegment的典型用法代码示例。如果您正苦于以下问题:C# LineSegment类的具体用法?C# LineSegment怎么用?C# LineSegment使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



LineSegment类属于命名空间,在下文中一共展示了LineSegment类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: CircleIntersectSegment

 public static bool CircleIntersectSegment(LineSegment<Vector2> segment, Circle circle, out Vector2 intersection)
 {
     intersection = ClosestPointOnSegment(segment, circle.Position);
     var distance2 = DistanceSquared(intersection, circle.Position);
     if (distance2 <= circle.Radius * circle.Radius) return true;
     else return false;
 }
开发者ID:det,项目名称:Rimbalzo,代码行数:7,代码来源:Trig.cs


示例2: CollidesWith

        public bool CollidesWith(LineSegment lineSegment)
        {
            var axisA = new Line(Point1, Point2.Substract(Point1));

            if (axisA.OnOneSide(lineSegment))
            {
                return false;
            }

            var axisB = new Line(lineSegment.Point1, lineSegment.Point2.Substract(lineSegment.Point1));

            if (axisB.OnOneSide(this))
            {
                return false;
            }

            if (axisA.Direction.IsParallel(axisB.Direction))
            {
                Range rangeA = ProjectOnto(axisA.Direction);
                Range rangeB = lineSegment.ProjectOnto(axisA.Direction);

                return rangeA.Overlaps(rangeB);
            }

            return true;
        }
开发者ID:gmoller,项目名称:SpaceDefender,代码行数:26,代码来源:LineSegment.cs


示例3: ProjectOnto

		public static Point ProjectOnto(this Point p, LineSegment seg, LineType type, out int? end)
		{
			end = 0;
			Vector v = seg.Vector();
			Vector w = p.Sub(seg.A);
			T c1 = w.Dot(v); // c1 == |w|*|v|*cos(angle between them)
			if (c1 <= 0) { // angle between line segment and (p-seg.A) is negative (-180..0)?
				if (v.X == 0 && v.Y == 0) {
					// seg.A == seg.B
					end = null;
					return seg.A;
				} else if (c1 < 0)
					end = -1;
				if (type != LineType.Infinite)
					return seg.A;
			}
			T c2 = v.Quadrance(); // == |v|*|v|
			if (c1 >= c2) { // quadrance from seg.A to projected point >= quadrance of seg
				if (c1 > c2)
					end = 1;
				if (type == LineType.Segment)
					return seg.B;
			}
			if (c2 == 0) {
				// seg.A and seg.B are infitessimally close together; c2 was truncated to zero
				end = null;
				return seg.A;
			}

			T frac = c1 / c2;                    // == |w|/|v|*cos(angle)
			Point projected = seg.A.Add(v.Mul(frac)); // == p0 + v/|v|*|w|*cos(angle)
			return projected;
		}
开发者ID:qwertie,项目名称:ecsharp,代码行数:33,代码来源:LineMathTT.cs


示例4: Test_SetLineLength

        public void Test_SetLineLength()
        {
            var line = new LineSegment ();
            line.Length = 2;

            Assert.AreEqual (2.0f, line.Length);
        }
开发者ID:weimingtom,项目名称:erica,代码行数:7,代码来源:TestLineSegment.cs


示例5: CheckPaths

    public void CheckPaths(LineSegment line, Vector3 slot)
    {
        var p1 = line.p1 * divisions;
        var p2 = line.p2 * divisions;
        var th = 0.01f;
        th += 0.5f;
        if (p1.x == p2.x && p1.z != p2.z && p1.y == p2.y) // travels along z, stationary in x and y
        {
            var line2d = new Vector2(p1.x, p1.y);
            var slot2d = new Vector2(slot.x, slot.y);
            if (Vector2.Distance(line2d, slot2d) <= th)
            {
                if (p1.z < p2.z && p1.z <= slot.z - th && p2.z >= slot.z + th)
                    MakeNew(slot, line);
            }
        }

        else if (p1.z == p2.z && p1.x != p2.x && p1.y == p2.y) // travels along x, stationary in z and y
        {
            var line2d = new Vector2(p1.y, p1.z);
            var slot2d = new Vector2(slot.y, slot.z);
            if (Vector2.Distance(line2d, slot2d) <= th)
                if (p1.x < p2.x && p1.x <= slot.x - th && p2.x >= slot.x + th)
                    MakeNew(slot, line);
        }
    }
开发者ID:drt-ftl,项目名称:VAME,代码行数:26,代码来源:PathVoxelizer.cs


示例6: SetPlayShape

	private void SetPlayShape()
	{
		play.Children.Clear ();

		Path p = new Path();
		PathGeometry geometry = new PathGeometry ();
		PathFigure f = new PathFigure ();	
		f.Segments = new PathSegmentCollection ();

		p.Data = geometry;
		p.Fill = new SolidColorBrush(Colors.Red);
		p.Stroke = new SolidColorBrush(Colors.Black);
		geometry.Figures = new PathFigureCollection ();
		geometry.Figures.Add(f);

		LineSegment m = new LineSegment();
		m.Point = new Point(3, 2);
		f.Segments.Add(m);

		m = new LineSegment();	
		m.Point = new Point(14, 8.5);
		f.Segments.Add(m);

		m = new LineSegment();	
		m.Point = new Point(3, 15);
		f.Segments.Add(m);

		m = new LineSegment();	
		m.Point = new Point(3, 2);
		f.Segments.Add(m);

		play.Children.Add(p);
	}
开发者ID:dfr0,项目名称:moon,代码行数:33,代码来源:video-player.cs


示例7: ScanVoxels

 public void ScanVoxels(LineSegment line, bool movesInX)
 {
     var divisions = cSectionGCD.sloxelResolution.x;
     var half = 0.5f / divisions;
     foreach (var v in cSectionGCD.voxels)
     {
         if (movesInX)
         {
             var x = v.Key.x;
             var v2d = new Vector2(v.Key.y, v.Key.z);
             var l2d = new Vector2(line.p1.y, line.p1.z);
             if (Mathf.Abs(v.Key.y - line.p1.y) <= half && Mathf.Abs(v.Key.z - line.p1.z) <= half)
             {
                 if (line.p2.x > line.p1.x && line.p1.x < x + half && line.p2.x > x - half) // p2 greater than p1, p1 < x + half,  p2 > x - half
                     MakeNew(v.Value, line);
                 else if (line.p2.x < line.p1.x && line.p1.x > x - half && line.p2.x < x + half)
                     MakeNew(v.Value, line);
             }
         }
         else // Moves In Z
         {
             var z = v.Key.z;
             var v2 = new Vector2(v.Key.x, v.Key.y);
             var l2 = new Vector2(line.p1.x, line.p1.y);
             if (Mathf.Abs(v.Key.x - line.p1.x) <= half && Mathf.Abs(v.Key.y - line.p1.y) <= half)
             {
                 if (line.p2.z > line.p1.z && line.p1.z < z + half && line.p2.z > z - half) // p2 greater than p1, p1 < x + half,  p2 > x - half
                     MakeNew(v.Value, line);
                 else if (line.p2.z < line.p1.z && line.p1.z > z - half && line.p2.z < z + half)
                     MakeNew(v.Value, line);
             }
         }
     }
 }
开发者ID:drt-ftl,项目名称:VAME,代码行数:34,代码来源:PathFitter.cs


示例8: Test_SetLineWidth

        public void Test_SetLineWidth()
        {
            var line = new LineSegment ();
            line.Width = 2.0f;

            Assert.AreEqual (2.0f, line.Width);
        }
开发者ID:weimingtom,项目名称:erica,代码行数:7,代码来源:TestLineSegment.cs


示例9: CreatePolylineX

        // Creates a polyline with two paths in the shape of an 'X' centered at the given point
        private Polyline CreatePolylineX(MapPoint center, double length)
        {
            var halfLen = length / 2.0;

			LineSegment segment = new LineSegment(
				new MapPoint(center.X - halfLen, center.Y + halfLen, MyMapView.SpatialReference),
				new MapPoint(center.X + halfLen, center.Y - halfLen, MyMapView.SpatialReference));

			LineSegment segment2 = new LineSegment(
				new MapPoint(center.X + halfLen, center.Y + halfLen, MyMapView.SpatialReference),
				new MapPoint(center.X - halfLen, center.Y - halfLen, MyMapView.SpatialReference));

			var segmentCollection = new SegmentCollection(MyMapView.SpatialReference)
			{
				segment
			};

			var segmentCollection2 = new SegmentCollection(MyMapView.SpatialReference)
			{
				segment2
			};

			return new Polyline(new [] { segmentCollection, segmentCollection2},
				MyMapView.SpatialReference);
        }
开发者ID:jordanparfitt,项目名称:arcgis-runtime-samples-dotnet,代码行数:26,代码来源:CreatePolylines.xaml.cs


示例10: PathStatistics

 public PathStatistics(PathData data)
 {
     _data = data;
     int i = 1;
     _totalLength = 0;
     ISegment newSegment;
     while (i < _data.Points.Length)
     {
         switch (_data.Types[i])
         {
             case 1:
                 newSegment = new LineSegment(_data.Points[i - 1], _data.Points[i]);
                 i++;
                 break;
             case 3:
                 newSegment = new CubicBezierSegment(_data.Points[i - 1], _data.Points[i], _data.Points[i + 1], _data.Points[i + 2]);
                 i+= 3;
                 break;
             default:
                 throw new NotSupportedException();
         }
         newSegment.StartOffset = _totalLength;
         _segments.Add(newSegment);
         _totalLength += newSegment.Length;
     }
 }
开发者ID:dteunkenstt,项目名称:SVG,代码行数:26,代码来源:PathStatistics.cs


示例11: LLShape

		public LLMarkerRotated LLShape(DrawStyle style, ref LineSegment<Coord> toArrow)
		{
			Coord frac = Width * Scale / toArrow.Length();
			var markerPoint = toArrow.PointAlong(1 - frac * 0.5f);
			toArrow = toArrow.A.To(toArrow.PointAlong(1 - Math.Min(frac, 1)));
			return new LLMarkerRotated(style, markerPoint, Scale, Geometry, (Coord)toArrow.Vector().AngleDeg());
		}
开发者ID:Shaykh,项目名称:Loyc,代码行数:7,代码来源:LineOrArrow.cs


示例12: LineSegmentOnPlane

 /// <summary>
 /// Projects the specified line segment on the specified plane.
 /// </summary>
 /// <param name="lineSegment">A line segment.</param>
 /// <param name="plane">A plane.</param>
 /// <returns>The <paramref name="lineSegment"/> projected on the <paramref name="plane"/>.</returns>
 public static LineSegment LineSegmentOnPlane(LineSegment lineSegment, Plane plane)
 {
     return new LineSegment
     {
         End1 = Project.PointOnPlane(lineSegment.End1, plane),
         End2 = Project.PointOnPlane(lineSegment.End2, plane),
     };
 }
开发者ID:atulloh,项目名称:IMML,代码行数:14,代码来源:Project.cs


示例13: LineSegmentOnLineSegment

 /// <summary>
 /// Projects the specified line segment on the specified line segment.
 /// </summary>
 /// <param name="lineSegment1">A line segment.</param>
 /// <param name="lineSegment2">A line segment.</param>
 /// <returns>The <paramref name="lineSegment1"/> projected on the <paramref name="lineSegment2"/>.</returns>
 public static LineSegment LineSegmentOnLineSegment(LineSegment lineSegment1, LineSegment lineSegment2)
 {
     return new LineSegment
     {
         End1 = Project.PointOnLineSegment(lineSegment1.End1, lineSegment2),
         End2 = Project.PointOnLineSegment(lineSegment1.End2, lineSegment2),
     };
 }
开发者ID:atulloh,项目名称:IMML,代码行数:14,代码来源:Project.cs


示例14: LineSegmentOnLine

 /// <summary>
 /// Projects the specified line segment on the specified line.
 /// </summary>
 /// <param name="lineSegment">A line segment.</param>
 /// <param name="line">A line.</param>
 /// <returns>The <paramref name="lineSegment"/> projected on the <paramref name="line"/>.</returns>
 public static LineSegment LineSegmentOnLine(LineSegment lineSegment, Line line)
 {
     return new LineSegment
     {
         End1 = Project.PointOnLine(lineSegment.End1, line),
         End2 = Project.PointOnLine(lineSegment.End2, line),
     };
 }
开发者ID:atulloh,项目名称:IMML,代码行数:14,代码来源:Project.cs


示例15: Test_SetTexture

        public void Test_SetTexture()
        {
            var line = new LineSegment ();
            var tex = new Texture("abstract7.png");

            line.Texture = tex;
            Assert.AreEqual (tex, line.Texture);
        }
开发者ID:weimingtom,项目名称:erica,代码行数:8,代码来源:TestLineSegment.cs


示例16: LineSegmentProperties

 public void LineSegmentProperties()
 {
     var line = new LineSegment(new Point(0, 1), new Point(1, 1));
     line.AssertEquals(new LineSegment(new Point(0, 1), new Point(1, 1)));
     line.Start.AssertEquals(new Point(0, 1));
     line.End.AssertEquals(new Point(1, 1));
     line.Delta.AssertEquals(new Vector(1, 0));
 }
开发者ID:Strilanc,项目名称:Methods,代码行数:8,代码来源:LineSweepPointTest.cs


示例17: Test_New

        public void Test_New()
        {
            var line = new LineSegment ();

            Assert.AreEqual (1.0f, line.Width);
            Assert.AreEqual (10, line.Length);
            Assert.AreEqual (Color.White, line.Color);
            Assert.AreEqual (null, line.Texture);
        }
开发者ID:weimingtom,项目名称:erica,代码行数:9,代码来源:TestLineSegment.cs


示例18: TestItsc

		private void TestItsc(LineSegment<float> p, LineSegment<float> q, Point<float>? expected, float expect_pFrac, LineType pt = LineType.Segment, LineType qt = LineType.Segment)
		{
			float pFrac, qFrac;
			bool intersected = p.ComputeIntersection(pt, out pFrac, q, qt, out qFrac);
			Assert.AreEqual(expected.HasValue, intersected);
			Point<float>? result = p.ComputeIntersection(pt, q, qt);
			Assert.AreEqual(expected, result);
			Assert.AreEqual(expect_pFrac, pFrac);
		}
开发者ID:default0,项目名称:LoycCore,代码行数:9,代码来源:LineMathTests.cs


示例19: ClosestPointOnLine

 public static Vector2 ClosestPointOnLine(LineSegment<Vector2> line, Vector2 point)
 {
     var ap = point - line.A;
     var ab = line.B - line.A;
     var ab2 = Vector2.Dot(ab, ab);
     var apab = Vector2.Dot(ap, ab);
     var t = apab / ab2;
     return line.A + ab * t;
 }
开发者ID:det,项目名称:Rimbalzo,代码行数:9,代码来源:Trig.cs


示例20: DistanceToPointTest

        public void DistanceToPointTest( float x, float y, float x1, float y1, float x2, float y2, float expectedDistance )
        {
            Point pt = new Point( x, y );
            Point pt1 = new Point( x1, y1 );
            Point pt2 = new Point( x2, y2 );
            LineSegment segment = new LineSegment( pt1, pt2 );

            Assert.AreEqual( expectedDistance, segment.DistanceToPoint( pt ) );
        }
开发者ID:jorik041,项目名称:aforge,代码行数:9,代码来源:LineSegmentTest.cs



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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# LineSeries类代码示例发布时间:2022-05-24
下一篇:
C# LineJoin类代码示例发布时间:2022-05-24
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap