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); }
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 )); }
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); }
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); }
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); }
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); }
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)); }
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)); }
static public RaycastHit2D CircleCastGetHit(this LineSegment2 item, float radius, int layer_mask = IntBits.ALL_BITS) { return(item.GetRay().CircleCastGetHit(radius, item.GetLength(), layer_mask)); }
static public IEnumerable <Vector2> GetPoints(this LineSegment2 item) { yield return(item.v0); yield return(item.v1); }
static public Vector2 GetCenter(this LineSegment2 item) { return(item.GetPoints().Average()); }
static public bool Cast(this LineSegment2 item, int layer_mask = IntBits.ALL_BITS) { return(item.GetRay().Cast(item.GetLength(), layer_mask)); }
static public LineSegment2 GetReversed(this LineSegment2 item) { return(new LineSegment2(item.v1, item.v0)); }
static public bool IsIntersecting(this Face item, LineSegment2 line_segment, out Vector2 point) { float distance; return(item.IsIntersecting(line_segment, out distance, out point)); }
static public Ray2 GetRay(this LineSegment2 item) { return(new Ray2(item.v0, item.v1 - item.v0)); }
static public Vector2 GetDirection(this LineSegment2 item, out float length) { return(item.v0.GetDirection(item.v1, out length)); }
static public Vector2 GetDirection(this LineSegment2 item) { return(item.v0.GetDirection(item.v1)); }
static public LineSegment2 GetTrimmed(this LineSegment2 item, float margin) { float length; return(item.GetTrimmed(margin, out length)); }
static public Vector2 GetPointOnByPercent(this LineSegment2 item, float percent) { return(item.v0.GetPointOnLineSegmentByPercent(item.v1, percent)); }
static public Face GetFace(this LineSegment2 item) { return(FaceExtensions.CreatePoints(item.v0, item.v1)); }
static public float GetSquaredLength(this LineSegment2 item) { return(item.v0.GetSquaredDistanceTo(item.v1)); }
static public Vector2 GetPointOnByDistance(this LineSegment2 item, float distance) { return(item.v0.GetPointOnLineSegment(item.v1, distance)); }
static public LineSegment3 InflateLineSegment(this PlaneSpace item, LineSegment2 line_segment) { return(new LineSegment3(item.InflatePoint(line_segment.v0), item.InflatePoint(line_segment.v1))); }
static public bool IsLengthWithin(this LineSegment2 item, float length) { return(item.v0.IsWithinDistance(item.v1, length)); }