Rekursion Schneeflocke - Kurze Frage zur Methode

bob651

Aktives Mitglied
Hi, ich benötige Hilfe für das Folgende:
Vier überkreuzte Linien programmieren.
An jedem Ende dasselbe, nur um den Faktor 0,33 gekürzt.
Die Rekursion soll bei n=3 abgebrochen.

Ich habe schon die Linien programmiert. Mir fehlt nur noch der Rekursionsteil. Hier mein Code:
Code:
import java.applet.Applet ;
import java.awt.* ;
import java.lang.Math ;

public class schnee extends Applet
{
  Graphics graph;
  
  private void schneeflocke( int x, int y, int size )
  {
    int endX, endY ;
   
   
    for ( int i = 0; i<8; i++ )
    {
      endX = x + (int)(size*Math.cos( (2*Math.PI/8)*i ));
      endY = y - (int)(size*Math.sin( (2*Math.PI/8)*i ));
      graph.drawLine( x, y, endX, endY );
    
    }
  }
        

  public void paint ( Graphics gr )
  {
    graph = gr;
    int breite  = getSize().width;
    int höhe = getSize().height;
    int min;
   
    if ( höhe > breite )
      min = höhe;
    else
      min = breite;
     
    schneeflocke( breite/2, höhe/2, min/2 );
  }}
 

bob651

Aktives Mitglied
Hat jemand eine Idee? Pseudocode würde mir auch reichen xD Die 4 Linien habe ich schon. Muss diese 4 Linien an jedes Ende rankleben, das wars
 
X

Xyz1

Gast
Fonts zeichnet man eigentlich mit anderen Techniken ...
Aber ich implementiere das mal, wie vom Lehrer gewünscht (habe noch Zeit, bis meine Pizza fertig ist :D )
 

bob651

Aktives Mitglied
Code:
//
import java.applet.Applet ;
import java.awt.* ;
import java.lang.Math ;

public class flocke extends Applet
{
  Graphics graph;
  
  private void flockemale( int x, int y, double size )
  {
    int endeX ;
    int endeY ;
   
    if ( size <= 10 ) return;
   
   
    for ( int i = 0; i<8; i++ )
    {
      endeX = x + (int)(size*Math.cos( (2*Math.PI/8)*i ));
      endeY = y - (int)(size*Math.sin( (2*Math.PI/8)*i ));
      graph.drawLine( x, y, endeX, endeY );
      flockemale( endeX, endeY, size/3 );
    }
  }
        
  public void paint ( Graphics gr )
  {
    graph      = gr;
    int breite  = getSize().width;
    int höhe = getSize().height;
    int min;
   
   
   
    if ( höhe < breite )
      min = höhe;
    else
      min = breite;
     
    flockemale( breite/2, höhe/2, min/4 );
  }
}
so klappts, aber wenn es einfacher geht, nur zu und danke :D
 
X

Xyz1

Gast
Ich nehme an, das soll so schauen:

f1.PNG

Java:
    private static void zeichneFlocke() {
        JFrame jf = new JFrame("Flocke");
        JPanel jp = new JPanel() {
            @Override
            public void paint(Graphics g) {
                super.paint(g);
                g.setColor(Color.WHITE);
                paint1(g, 200, 400, 400);
            }

            void paint1(Graphics g, int len, int x, int y) {
                if (len < 21) {
                    return;
                }

                //g.drawOval(x - len, y - len, len * 2, len * 2);
                g.drawLine(x + len, y + 0, x - len, y + 0);
                g.drawLine(x + 0, y + len, x + 0, y - len);
                g.drawLine((int) (x + len * Math.sqrt(2) / 2), (int) (y + len * Math.sqrt(2) / 2), (int) (x - len * Math.sqrt(2) / 2), (int) (y - len * Math.sqrt(2) / 2));
                g.drawLine((int) (x + len * Math.sqrt(2) / 2), (int) (y - len * Math.sqrt(2) / 2), (int) (x - len * Math.sqrt(2) / 2), (int) (y + len * Math.sqrt(2) / 2));

                paint1(g, (int) Math.round(len * 0.33), x + len, y + 0);
                paint1(g, (int) Math.round(len * 0.33), x + 0, y + len);
                paint1(g, (int) Math.round(len * 0.33), x - len, y + 0);
                paint1(g, (int) Math.round(len * 0.33), x + 0, y - len);

                paint1(g, (int) Math.round(len * 0.33), (int) (x + len * Math.sqrt(2) / 2), (int) (y + len * Math.sqrt(2) / 2));
                paint1(g, (int) Math.round(len * 0.33), (int) (x - len * Math.sqrt(2) / 2), (int) (y + len * Math.sqrt(2) / 2));
                paint1(g, (int) Math.round(len * 0.33), (int) (x + len * Math.sqrt(2) / 2), (int) (y - len * Math.sqrt(2) / 2));
                paint1(g, (int) Math.round(len * 0.33), (int) (x - len * Math.sqrt(2) / 2), (int) (y - len * Math.sqrt(2) / 2));
            }
        };
        jp.setBackground(Color.RED);
        jp.setPreferredSize(new Dimension(800, 800));
        jf.add(jp);
        jf.pack();

        jf.setVisible(true);
    }

:)
 
X

Xyz1

Gast
Frag mich jetzt bitte nicht, wie man den Fensterrahmen rot färbt oder das Icon ersetzt. :D

Ich schau gerade, durch Symmetrieüberlegungen und Schleife hast du ein besseres Ergebnis erreicht als ich. :)
 

bob651

Aktives Mitglied
oh, nice. dein code ist ja ez zu verstehen. Danke man.
soll ich jetzt deinen nehmen oder meinen code? :D

die frage ist, wieso rot als background xD
 
X

Xyz1

Gast
Du musst auch mal schauen, wie du das übersichtlich aufbaust,
Java:
            void paint1(Graphics g, int len, int x, int y) {
                if (len < (int) min.getValue()) {
                    return;
                }

                //g.drawOval(x - len, y - len, len * 2, len * 2);
                int x1 = x + 0;
                int x2 = x + len;
                int x3 = x - len;
                int x4 = (int) Math.round(x + len * Math.sqrt(2) / 2);
                int x5 = (int) Math.round(x - len * Math.sqrt(2) / 2);
                int y1 = y + 0;
                int y2 = y + len;
                int y3 = y - len;
                int y4 = (int) Math.round(y + len * Math.sqrt(2) / 2);
                int y5 = (int) Math.round(y - len * Math.sqrt(2) / 2);
                int f = (int) Math.round(len * ((double) faktor.getValue()));

                g.drawLine(x1, y2, x1, y3);
                g.drawLine(x2, y1, x3, y1);
                g.drawLine(x4, y4, x5, y5);
                g.drawLine(x4, y5, x5, y4);

                paint1(g, f, x2, y1);
                paint1(g, f, x1, y2);
                paint1(g, f, x3, y1);
                paint1(g, f, x1, y3);
                paint1(g, f, x4, y4);
                paint1(g, f, x5, y4);
                paint1(g, f, x4, y5);
                paint1(g, f, x5, y5);
            }

so gibt's bei mir keine Rundungsfehler,

aber wirklich ... Ich verliere bei sowas Überblick ... Math.sqrt(2) / 2 lässt sich vielleicht schreiben als Math.sqrt(1.5) !!! Aber du siehst, große Unwissenheit :(

Ist aber auch Wurscht, schöne Weihnachten !!!![/code]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Verstehe Rekursion nicht ganz Java Basics - Anfänger-Themen 7
P Frage zu Rekursion und Backtracking Java Basics - Anfänger-Themen 2
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
M Variablen Rekursion mit 2 Parameteren Java Basics - Anfänger-Themen 4
sserio Rekursion größten Primfaktor finden funktioniert nicht Java Basics - Anfänger-Themen 8
M Lösungsweg Rekursion Java Basics - Anfänger-Themen 1
C StackOverflow bei Rekursion Java Basics - Anfänger-Themen 7
D Rekursion - Ich raffs nicht Java Basics - Anfänger-Themen 16
N Methoden Rekursion mit Kreisen Java Basics - Anfänger-Themen 7
P9cman Vokale in einem String überprüfen mittels Rekursion Java Basics - Anfänger-Themen 8
J Rekursion Java Basics - Anfänger-Themen 22
T Rekursion Programmierverständnis Java Basics - Anfänger-Themen 12
K Rekursion: Rechenmauer mit Array erstellen Java Basics - Anfänger-Themen 17
K Rekursion einer Zahlenfolge (Ab- und Aufzählung) Java Basics - Anfänger-Themen 6
Zeppi Rekursion Java Basics - Anfänger-Themen 15
V Backtracking und Rekursion Java Basics - Anfänger-Themen 15
L REKURSION Java Basics - Anfänger-Themen 13
Kirby.exe Rekursion Java Basics - Anfänger-Themen 7
N for Schleife durch Rekursion ersetzen Java Basics - Anfänger-Themen 6
X Rekursion Java Basics - Anfänger-Themen 3
H Rekursion Java Basics - Anfänger-Themen 2
D Erste Schritte Rekursion Java Basics - Anfänger-Themen 13
M Rekursion Tage Ansteckung gesamte Bevölkerung Java Basics - Anfänger-Themen 15
M Java Rekursion Java Basics - Anfänger-Themen 9
G Java Rekursion Java Basics - Anfänger-Themen 5
J Rekursion Klausur Aufgabe Java Basics - Anfänger-Themen 2
N Rekursion Java Basics - Anfänger-Themen 18
M Verständnisproblem der Rekursion bei Arrays Java Basics - Anfänger-Themen 8
X Rekursion Rätsel Java Basics - Anfänger-Themen 4
N Klassen Rekursion mit Feldern von Objekten Java Basics - Anfänger-Themen 14
W Rekursion Java Basics - Anfänger-Themen 0
D Konsolenausgabe Zahlenfolge Rekursion Java Basics - Anfänger-Themen 3
J Ping Pong Methode mit Rekursion Java Basics - Anfänger-Themen 1
N Rekursion Java Basics - Anfänger-Themen 1
B Rekursion Basic Java Basics - Anfänger-Themen 15
O Rekursion Mergesort Java Basics - Anfänger-Themen 18
G Rekursion Java Basics - Anfänger-Themen 20
M Rekursion Java Basics - Anfänger-Themen 7
F Hilfe bei Rekursion... Java Basics - Anfänger-Themen 4
A Mit Rekursion Zufallszahlen erstellen und größte finden Java Basics - Anfänger-Themen 5
B Rekursion Wurzel Java Basics - Anfänger-Themen 39
O Rekursion ordentlich aufschreiben Java Basics - Anfänger-Themen 2
B Rekursion verstehen Java Basics - Anfänger-Themen 4
O Rekursion Java Basics - Anfänger-Themen 2
E Rekursion verstehen. Java Basics - Anfänger-Themen 4
E Rekursion Kisten befüllen Java Basics - Anfänger-Themen 10
E Rekursion verstehen Java Basics - Anfänger-Themen 2
O Rekursion, String Java Basics - Anfänger-Themen 8
N Invertierte Rekursion??? Java Basics - Anfänger-Themen 5
M Bitte um Hilfe bei Quellcode (Rekursion) Java Basics - Anfänger-Themen 6
T Rekursion Warum bricht meine Funktion nicht ab Java Basics - Anfänger-Themen 4
A Hilfe bei Rekursion,Ich verstehe nicht,wie funktioniert die Rekursion in der Methode "walk" Java Basics - Anfänger-Themen 13
L Rekursion im Baum Java Basics - Anfänger-Themen 9
E Pfade eines Baums angeben ohne Rekursion Java Basics - Anfänger-Themen 20
L Rekursion Baumknoten Java Basics - Anfänger-Themen 8
L Rekursion größtes Zeichen Java Basics - Anfänger-Themen 8
L Rekursion Modulo Java Basics - Anfänger-Themen 7
I Rekursion Java Basics - Anfänger-Themen 11
H Rekursion Java Basics - Anfänger-Themen 7
N Methoden zur Rekursion (catalansche Zahlen) Java Basics - Anfänger-Themen 4
S Frage zu Rekursion... Java Basics - Anfänger-Themen 15
N Java catalansche Zahlen (Rekursion) Java Basics - Anfänger-Themen 5
S Noch eine Frage zur Rekursion... Java Basics - Anfänger-Themen 11
S Frage zu einer Rekursion Java Basics - Anfänger-Themen 15
F Methoden Abbruchbedingung bei Rekursion Java Basics - Anfänger-Themen 2
Z Rekursion Primzahlen Java Basics - Anfänger-Themen 1
K Rekursion Verständnisfrage Java Basics - Anfänger-Themen 19
L Methoden Rekursion gibt alten Wert wieder Java Basics - Anfänger-Themen 37
M Rekursion Minimums Suche Java Basics - Anfänger-Themen 12
J Rekursion Java Basics - Anfänger-Themen 5
F Aufgabe Rekursion Binärer Baum Java Basics - Anfänger-Themen 15
N Rekursion Java Basics - Anfänger-Themen 2
B Rekursion - Übung Java Basics - Anfänger-Themen 2
B Problem beim grundsätzlichen Verständnis bei Rekursion mit 2-dimensionalen Array Java Basics - Anfänger-Themen 6
P Rekursion Java Basics - Anfänger-Themen 19
G Rekursion Beispiel Java Basics - Anfänger-Themen 3
M Rekursion schreiben Java Basics - Anfänger-Themen 16
A Rekursion Funktion in eine Iterativ Funktion umwandeln Java Basics - Anfänger-Themen 9
T Array Rekursion Java Basics - Anfänger-Themen 1
B lineare und schlichte Rekursion Java Basics - Anfänger-Themen 1
A Rekursion Java Basics - Anfänger-Themen 2
B Rekursion Java Basics - Anfänger-Themen 3
A Rekursion stoppt an der falschen Stelle Java Basics - Anfänger-Themen 4
A Lineare Rekursion Java Basics - Anfänger-Themen 6
P Hilfe zur Rekursion? Java Basics - Anfänger-Themen 2
L Rekursion Java Basics - Anfänger-Themen 4
S Rekursion Rückgabe - Türme von Hanoi Java Basics - Anfänger-Themen 16
kilopack15 Rekursion und Schleifen Java Basics - Anfänger-Themen 27
E Rekursion Java Basics - Anfänger-Themen 10
G rekursion nicht verstanden Java Basics - Anfänger-Themen 5
K Rekursion-Verständnisfrage Java Basics - Anfänger-Themen 4
E Methoden String wird in Rekursion nicht überschrieben Java Basics - Anfänger-Themen 2
T 2fach Rekursion. Java Basics - Anfänger-Themen 4
N Rekursion mit if-Anweisung Java Basics - Anfänger-Themen 10
K Methoden Zahlensysteme umwandeln mittels Rekursion Java Basics - Anfänger-Themen 5
H Rekursion Binäre Suche Java Basics - Anfänger-Themen 2
P Methoden Primzahltest mit Rekursion Java Basics - Anfänger-Themen 3
C Rekursion überführen in eine normale methode Java Basics - Anfänger-Themen 1
M Methoden Rekursion nachvollziehen Java Basics - Anfänger-Themen 4
C Rekursion Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben