private static double incidenceLineCircle(CartesianCoordinate point1, CartesianCoordinate point2, double radius) { double determinant = point1.CrossProduct(point2); double lineLength = AlgebraLibrary.SRSS((point2.X - point1.X), (point2.Y - point1.Y)); return(incidenceLineCircle(radius, lineLength, determinant)); }
/// <summary> /// The y-coordinates of a line intersecting a circle centered at 0,0. /// </summary> /// <param name="point1">First point forming the line.</param> /// <param name="point2">Second point forming the line.</param> /// <param name="radius">Radius of the circle centered at 0,0.</param> public static double[] CircleLineIntersectY(CartesianCoordinate point1, CartesianCoordinate point2, double radius) { CartesianOffset delta = new CartesianOffset(point1, point2); double determinant = point1.CrossProduct(point2); double lineLength = AlgebraLibrary.SRSS(delta.X(), delta.Y()); double incidence = incidenceLineCircle(radius, lineLength, determinant); return(CircleLineIntersectY(radius, lineLength, incidence, determinant, delta)); }