Esempio n. 1
0
        //
        // 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));
        }
Esempio n. 2
0
        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))));
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        //
        // 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);
        }