Beispiel #1
0
        static public bool IsIntersecting(this Plane2 item, LineSegment2 line_segment, out Vector2 point)
        {
            float distance;
            bool  did_intersect = item.IsIntersecting(line_segment, out distance);

            point = line_segment.GetPointOnByDistance(distance);
            return(did_intersect);
        }
Beispiel #2
0
        static public LineSegment2 GetTrimmed(this LineSegment2 item, float margin, out float length)
        {
            Vector2 direction = item.GetDirection(out length);

            return(new LineSegment2(
                       item.v0 + direction * margin,
                       item.v1 - direction * margin
                       ));
        }
Beispiel #3
0
        static public bool IsIntersecting(this Plane2 item, LineSegment2 line_segment, out float distance)
        {
            if (item.IsIntersecting(line_segment.GetRay(), out distance))
            {
                if (distance <= line_segment.GetLength())
                {
                    return(true);
                }
            }

            return(false);
        }
Beispiel #4
0
        static public bool IsIntersecting(this Face item, LineSegment2 line_segment, out float distance, out Vector2 point)
        {
            if (item.IsIntersecting(line_segment.GetRay(), out distance, out point))
            {
                if (distance <= line_segment.GetLength())
                {
                    return(true);
                }
            }

            return(false);
        }
Beispiel #5
0
        static public bool IsIntersecting(this Plane2 item, Triangle2 triangle, out LineSegment2 output)
        {
            Vector2 v0;
            Vector2 v1;

            if (triangle.GetEdges()
                .TryConvert((LineSegment2 e, out Vector2 v) => item.IsIntersecting(e, out v))
                .PartOut(out v0, out v1) == 2)
            {
                output = new LineSegment2(v0, v1);
                return(true);
            }

            output = default(LineSegment2);
            return(false);
        }
Beispiel #6
0
        private bool IsConnection(Vector2 position1, Vector2 position2, int layer_mask)
        {
            float        distance;
            LineSegment2 line = new LineSegment2(position1, position2)
                                .GetTrimmed(connection_radius, out distance);

            if (distance <= max_connection_distance)
            {
                if (line.CircleCast(connection_radius, layer_mask) == false)
                {
                    return(true);
                }
            }

            return(false);
        }
Beispiel #7
0
 static public float FindLargestFixedEdgeCircleCast(this LineSegment2 item, float maximum, int layer_mask = IntBits.ALL_BITS, float margin = Mathq.DEFAULT_SOLVE_MARGIN, int max_iterations = Mathq.DEFAULT_SOLVE_MAX_NUMBER_ITERATIONS)
 {
     return(item.GetRay().FindLargestFixedEdgeCircleCast(item.GetLength(), maximum, layer_mask, margin, max_iterations));
 }
Beispiel #8
0
 static public IEnumerable <RaycastHit2D> CircleCastGetAllHits(this LineSegment2 item, float radius, int layer_mask = IntBits.ALL_BITS)
 {
     return(item.GetRay().CircleCastGetAllHits(radius, item.GetLength(), layer_mask));
 }
Beispiel #9
0
 static public RaycastHit2D CircleCastGetHit(this LineSegment2 item, float radius, int layer_mask = IntBits.ALL_BITS)
 {
     return(item.GetRay().CircleCastGetHit(radius, item.GetLength(), layer_mask));
 }
Beispiel #10
0
        static public IEnumerable <Vector2> GetPoints(this LineSegment2 item)
        {
            yield return(item.v0);

            yield return(item.v1);
        }
Beispiel #11
0
 static public Vector2 GetCenter(this LineSegment2 item)
 {
     return(item.GetPoints().Average());
 }
Beispiel #12
0
 static public bool Cast(this LineSegment2 item, int layer_mask = IntBits.ALL_BITS)
 {
     return(item.GetRay().Cast(item.GetLength(), layer_mask));
 }
Beispiel #13
0
 static public LineSegment2 GetReversed(this LineSegment2 item)
 {
     return(new LineSegment2(item.v1, item.v0));
 }
Beispiel #14
0
        static public bool IsIntersecting(this Face item, LineSegment2 line_segment, out Vector2 point)
        {
            float distance;

            return(item.IsIntersecting(line_segment, out distance, out point));
        }
Beispiel #15
0
 static public Ray2 GetRay(this LineSegment2 item)
 {
     return(new Ray2(item.v0, item.v1 - item.v0));
 }
Beispiel #16
0
 static public Vector2 GetDirection(this LineSegment2 item, out float length)
 {
     return(item.v0.GetDirection(item.v1, out length));
 }
Beispiel #17
0
 static public Vector2 GetDirection(this LineSegment2 item)
 {
     return(item.v0.GetDirection(item.v1));
 }
Beispiel #18
0
        static public LineSegment2 GetTrimmed(this LineSegment2 item, float margin)
        {
            float length;

            return(item.GetTrimmed(margin, out length));
        }
Beispiel #19
0
 static public Vector2 GetPointOnByPercent(this LineSegment2 item, float percent)
 {
     return(item.v0.GetPointOnLineSegmentByPercent(item.v1, percent));
 }
Beispiel #20
0
 static public Face GetFace(this LineSegment2 item)
 {
     return(FaceExtensions.CreatePoints(item.v0, item.v1));
 }
Beispiel #21
0
 static public float GetSquaredLength(this LineSegment2 item)
 {
     return(item.v0.GetSquaredDistanceTo(item.v1));
 }
Beispiel #22
0
 static public Vector2 GetPointOnByDistance(this LineSegment2 item, float distance)
 {
     return(item.v0.GetPointOnLineSegment(item.v1, distance));
 }
Beispiel #23
0
 static public LineSegment3 InflateLineSegment(this PlaneSpace item, LineSegment2 line_segment)
 {
     return(new LineSegment3(item.InflatePoint(line_segment.v0), item.InflatePoint(line_segment.v1)));
 }
Beispiel #24
0
 static public bool IsLengthWithin(this LineSegment2 item, float length)
 {
     return(item.v0.IsWithinDistance(item.v1, length));
 }