Perspektive

Dieses mal war die Aufgabe ein Applet zu erstellen, das verschiedene Quadrate durch Streckung hintereinander zeichnet.
Die Idee dabei war, das wir die Methoden kennenlernen.
Ich habe das Applet noch etwas ausgebaut ;).

Zuerst das Orginal Applet:



Vorgehen

Wir kennen:

  • Steckungszentrum S
  • Der Verschiebungsvektor v von S zum Zentrum des ersten Quadrates
  • Der vergröserungsfaktor jeder nachfolgenden Streckung
  • Seitelänge des ersten Quadrates
  • Der Code

    import java.awt.*;
    import java.applet.*;

    public class Perspektive extends Applet
    {
        
        final Color cBg = Color.black;
        final Color cRand = Color.red;
        final Color cFg = Color.black;
        
        int xs = 0; // Start des Steckungszentrums
        int ys = 200;
        
        // Methode die einen Mitteltpunkt und die Seitenlaenge eines
        // Quadrat bekommt und dieses Zeichnet.
        void drawQuadrat(Graphics g,int mx, int my,int a)
        {
            int x = mx - (a / 2);
            int y = my - (a / 2);
            
            g.setColor(cRand);
            g.drawRect(x,y,a,a);
            g.setColor(cFg);
            g.fillRect(x + 1,y + 1,a - 1,a - 1);
        }
        
        public void init()
        {
            setBackground(cBg);
        }
        
        public void paint(Graphics g)
        {
            int seite = 32;
            int vx = 130; // Verschiebungsstrecke zum kleinesten Quadrat
            int vy = vx / 4;
        
            for(int i = 0;i <= 5;i++)
            {
                // Neuen Mittelpunkt berechnen:
                drawQuadrat(g,xs + vx,ys + vy,seite);
                // Neuen Verschiebungsvektor berechnen:
                vx = 3 * vx / 2;
                vy = 3 * vy / 2;
                seite = 3 * seite /2;
            }
            g.setColor(cRand);
            g.drawLine(xs,ys,xs + vx,ys + vy);
        }
    }