// // Acquire the point that is opposite the given point w.r.t. to this line. // // x given // | // ---------------------------- // | // y <-- opp returned // public Point GetReflectionPoint(Point pt) { Point ptOnLine = this.ProjectOnto(pt); Segment perp = new Segment(pt, ptOnLine); return((perp.GetOppositeSegment(ptOnLine)).OtherPoint(ptOnLine)); }
public static void MakeRightTriangles(Segment side, int length, out List <RightTriangle> tris) { tris = new List <RightTriangle>(); // // 1 // Segment perp = side.GetPerpendicularByLength(side.Point1, length); tris.Add(new RightTriangle(new Triangle(side.Point1, side.Point2, perp.OtherPoint(side.Point1)))); // 2 Segment oppPerp = perp.GetOppositeSegment(side.Point1); tris.Add(new RightTriangle(new Triangle(side.Point1, side.Point2, oppPerp.OtherPoint(side.Point1)))); // 3 perp = side.GetPerpendicularByLength(side.Point2, length); tris.Add(new RightTriangle(new Triangle(side.Point1, side.Point2, perp.OtherPoint(side.Point2)))); // 4 oppPerp = perp.GetOppositeSegment(side.Point2); tris.Add(new RightTriangle(new Triangle(side.Point1, side.Point2, oppPerp.OtherPoint(side.Point2)))); }
public static void MakeRectangles(Segment side, double length, out Rectangle rect1, out Rectangle rect2) { // // First rectangle // Segment adj1 = side.GetPerpendicularByLength(side.Point1, length); Segment adj2 = side.GetPerpendicularByLength(side.Point2, length); Segment oppSide = new Segment(adj1.OtherPoint(side.Point1), adj2.OtherPoint(side.Point2)); rect1 = new Rectangle(side, oppSide, adj1, adj2); // // Second rectangle // Segment otherAdj1 = adj1.GetOppositeSegment(side.Point1); Segment otherAdj2 = adj2.GetOppositeSegment(side.Point2); oppSide = new Segment(otherAdj1.OtherPoint(side.Point1), otherAdj2.OtherPoint(side.Point2)); rect2 = new Rectangle(side, oppSide, otherAdj1, otherAdj2); }
// // Acquire the point that is opposite the given point w.r.t. to this line. // // x given // | // ---------------------------- // | // y <-- opp returned // public Point GetReflectionPoint(Point pt) { Point ptOnLine = this.ProjectOnto(pt); Segment perp = new Segment(pt, ptOnLine); return (perp.GetOppositeSegment(ptOnLine)).OtherPoint(ptOnLine); }