Obracanie Figury

0

Witam, mam problem z obracaniem figur utworzonej z tekstu. Mianowicie wyrysowuje 3 romby i chciałbym aby się obracały. Wyrysowywanie działa dobrze, ale gdy próbuję obrócić wszystko cóż..się wali.

class romb
    {
        private punkt p_up { get; set; } // gora
        private punkt p_left { get; set; } // lewo
        private punkt p_right { get; set; } // prawo
        private punkt p_down { get; set; } // dol
        private punkt firstup { get; set; }


        public romb(punkt up, punkt left, punkt right, punkt down)
        {
            this.p_up = (punkt)up.Clone();
            this.p_left = (punkt)left.Clone();
            this.p_right = (punkt)right.Clone();
            this.p_down = (punkt)down.Clone();
            this.firstup = (punkt)up.Clone();
        }

        public void Draw()
        {
            drawfromlefttodown();
            drawfromlefttoup();
            drawfromrighttodown();
            drawfromrighttoup();
        }
        private void MoveOneFrame()
        {
            
            this.p_up = new punkt((p_up.Get_x()+1),(p_up.Get_y()+1));
            this.p_down = new punkt((p_down.Get_x()-1), (p_down.Get_y() - 1));
            this.p_left = new punkt((p_left.Get_x()+1),(p_left.Get_y()-1));
            this.p_right = new punkt((p_right.Get_x()-1),(p_right.Get_y()+1));
    }

        private void drawfromlefttoup()
        {
            int cursorx = p_left.Get_x();
            int cursory = p_left.Get_y();
            
            Console.SetCursorPosition(cursorx, cursory);

           while(cursorx != p_up.Get_x())
            {
                Console.Write("+");
                cursorx++;
                cursory--;
                Console.SetCursorPosition(cursorx, cursory);

            }

           while(cursory > p_up.Get_y())
            {
                Console.Write("+");
                cursory--;
                Console.SetCursorPosition(cursorx, cursory);
            }
            


        }


        private void drawfromlefttodown()
        {
            int cursorx = p_left.Get_x();
            int cursory = p_left.Get_y();

            Console.SetCursorPosition(cursorx, cursory);

            while (cursorx != p_down.Get_x())
            {
                Console.Write("+");
                cursorx++;
                cursory++;
                Console.SetCursorPosition(cursorx, cursory);

            }

            while (cursory < p_down.Get_y())
            {
                Console.Write("+");
                cursory++;
                Console.SetCursorPosition(cursorx, cursory);
            }
        }

        private void drawfromrighttoup()
        {
            int cursorx = p_right.Get_x();
            int cursory = p_right.Get_y();

            Console.SetCursorPosition(cursorx, cursory);
            while (cursorx != p_up.Get_x()-1)
            {
                Console.Write("+");
                cursorx--;
                cursory--;
                Console.SetCursorPosition(cursorx, cursory);

            }

            while (cursory > p_up.Get_y())
            {
                Console.Write("+");
                cursory--;
                Console.SetCursorPosition(cursorx, cursory);
            }
        }

        private void drawfromrighttodown()
        {
            int cursorx = p_right.Get_x();
            int cursory = p_right.Get_y();

            Console.SetCursorPosition(cursorx,cursory);

            while(cursorx != p_up.Get_x()-1)
            {
                Console.Write("+");
                cursorx--;
                cursory++;
                Console.SetCursorPosition(cursorx, cursory);

            }

           while(cursory < p_up.Get_y())
            {
                Console.Write("+");
                cursory++;
                Console.SetCursorPosition(cursorx, cursory);
            }
        }
    }

0

Zmieniłem Funkcję MoveOneFrame na Rotate ale i tak nie działa:

 private static punkt Rotate(punkt point, punkt pivot, double angleDegree)
        {
            
            double angle = angleDegree * Math.PI / 180;
            double cos = Math.Cos(angle);
            double sin = Math.Sin(angle);
            int dx = point.Get_x() - pivot.Get_x();
            int dy = point.Get_y() - pivot.Get_y();
            double x = cos * dx - sin * dy + pivot.Get_x();
            double y = sin * dx + cos * dy + pivot.Get_y();

            punkt rotated = new punkt((int)Math.Round(x), (int)Math.Round(y));
            return rotated;
        } 

Podejrzewam, że problemem jest sposób wyrysowywania

1 użytkowników online, w tym zalogowanych: 0, gości: 1