using System.Collections.Generic; using Chernobyl.Mathematics.Movement; namespace Chernobyl.Mathematics.Geometry { /// <summary> /// A part of a line that is bounded by two distinct end points and contains /// every point on the line between its end points. This type is an /// <see cref="IArc"/> but can only contain two points (<see cref="Point1"/> /// and <see cref="Point2"/>) in its <see cref="IEnumerable{T}"/>. In /// addition, this type is an <see cref="ITransform"/> whose /// <see cref="ITransform.Position"/> is the center point between /// <see cref="Point1"/> and <see cref="Point2"/>, whose Z axis is parallel /// to the line segment between <see cref="Point1"/> and <see cref="Point2"/>, /// and whose Z axis scale is the distance from <see cref="Point1"/> to /// <see cref="Point2"/>. /// </summary> public interface ILineSegment : IArc, ITransform { /// <summary> /// The first end point of this instance. This point is also contained /// within this <see cref="IEnumerable{T}"/>. /// </summary> ITransform Point1 { get; } /// <summary> /// The second end point of this instance. This point is also contained /// within this <see cref="IEnumerable{T}"/>. /// </summary> ITransform Point2 { get; } } }