Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Gerechnete Grafik 2 (Iterationen und Nagelbrett)

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Grafixfan



Anmeldungsdatum: 24.03.2007
Beiträge: 17
Wohnort: Bayreuth

BeitragVerfasst am: 17.05.2007, 11:08    Titel: Gerechnete Grafik 2 (Iterationen und Nagelbrett) Antworten mit Zitat

Hier die zweite Folge gerechneter Grafik.

Iterationen bedeuten hier Annäherung.

Man zeichnet zwei Funktionen/Kurven (Gerade, Sinus, usw);
dann zeichnet man eine Gerade auf die 1. Funktion zu, bis sie diese trifft;
dann zeichnet man von diesem "Treffpunkt" im rechten Winkel der ersten Geraden eine weitere Gerade, bis diese auf die 2. Funktion trifft; dann von da wieder rechtwinklig auf die 1. Funktion usw.

Das Programm "Prog 1 iterat" zeigt langsam, wie's abläuft;
"Prog 2 iterat" fängt mit immer neuen, in x verschobenen Geraden an,
und das Programm "Nagelbrett" nagelt flott, obwohl mit sleep gebremst, ein Muster auf den Monitor. Nagelbretter erzeugte man in grauer Vorzeit, indem man mit Nägeln eine Struktur auf ein Brett nagelte und diese mit Draht oder Faden zu einem Muster verband.

Viel Spaß

Code:

''Programm 1 (iterat):
'Eine Linie springt zwischen zwei Kurven hin und her und
''nähert sich einem Schnittpunkt in Sprüngen = Iteration:   
   
screen 19,8
         
dim as single x,y,p,i,a,b,w


''1. Kurve: Teil einer quadratischen Funktion:
FOR x = -20 TO 20 STEP .01
  y = x ^ 2
  PSET (x * 15 + 400,y + 100),10
NEXT x


''2. Kurve: schräge Gerade:
p = 650

FOR x = 100 TO 700 STEP 1
  y = p - x
  PSET (x,y),14
NEXT x


''Anfang erste sich nähernde Gerade:
x = 230
y = 500

PSET (x,y),20


''Damit es nicht zu schnell anfängt...
sleep 500


''20 mal (mal zweimal) soll der Algorithmus annähern:
FOR i = 1 TO 20

''Funktion y(x) umgedreht in x(y); etwas unübersichtlich wegen der Maßstäbe,
''der Schnittpunkt mit der nächsten Kurve und damit die nächste Gerade entsteht:
  b = ((x - 400) / 15) ^ 2 + 100
  a = x
 
 ''Für buntere Grafik z.B. color i anstelle von color 15.
  COLOR 15
 
line  (x,y)-(a,b)

 ''Damit man sieht, wie es abläuft; sleep zum weiteren Probieren löschen:
 sleep (600-i*20)
 
  x = a
  y = b

  b = y
''Funktion y(x) umgedreht in x(y):
  a = p - y
 
  ''Für buntere Grafik z.B. color i anstelle von color 15.
  COLOR 15
 
 line (x,y)-(a,b)
 
 ''Damit man sieht, wie es abläuft; sleep zum weiteren Probieren löschen:
  sleep (600-i*20)
 
  x = a
  y = b

NEXT i

  sleep
   
   END 0

''Programm 2 (iterat mehrfach):
''Eine Linie springt zwischen zwei Kurven hin und her und
''nähert sich einem Schnittpunkt in Sprüngen = Iteration.
''Desgleichen springen weitere (w/step w) Linien:

screen 19,8

dim as single x,y,p,i,a,b,w

FOR x = -20 TO 20 STEP .01
y = x ^ 2
PSET (x * 15 + 400,y + 100),10
NEXT x

p = 650

FOR x = 100 TO 700 STEP 1
y = p - x
PSET (x,y),14
NEXT x

''50 verschiedene Linien beginnen von unten.
for w=0 to 500 step 10
x = 150+w
y = 500
sleep 100

PSET (x,y),20

FOR i = 1 TO 30
b = ((x - 400) / 15) ^ 2 + 100
a = x
COLOR i

line (x,y)-(a,b)
x = a
y = b

b = y
a = p - y

COLOR i

line (x,y)-(a,b)

x = a
y = b

NEXT i
next w

sleep

END 0
[code]
''Nagelbrett

screen 20,8

dim as single xn,an,yn,bn,cn,in
dim as double tn

xn = 100
an = 384
yn = 100
bn = 384
cn = 512

sleep 500

FOR in = 0 TO 6.28 STEP 0.31415/2
xn = SIN(in) * 300 + 512
yn = COS(in) * 300 + 384
FOR an = 212 TO 812 STEP 100
COLOR in+1
line (xn,yn)-(an,bn)
NEXT an
FOR an = 84 TO 734 STEP 100
COLOR in+2

''Damit's langsam abläuft...
for tn =1 to 1000000
next tn

line (xn,yn)-(cn,an)
NEXT an

NEXT in
sleep
end 0
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
AndT



Anmeldungsdatum: 02.04.2007
Beiträge: 481

BeitragVerfasst am: 16.06.2007, 00:30    Titel: Antworten mit Zitat

Da haste wohl was mit den Codetags falsch gemacht mit den Augen rollen
Also ich habs so umgesetzt dass es wieder Codetags sind zwinkern



Code:
''Programm 1 (iterat):
'Eine Linie springt zwischen zwei Kurven hin und her und
''nähert sich einem Schnittpunkt in Sprüngen = Iteration:   
   
screen 19,8
         
dim as single x,y,p,i,a,b,w


''1. Kurve: Teil einer quadratischen Funktion:
FOR x = -20 TO 20 STEP .01
  y = x ^ 2
  PSET (x * 15 + 400,y + 100),10
NEXT x


''2. Kurve: schräge Gerade:
p = 650

FOR x = 100 TO 700 STEP 1
  y = p - x
  PSET (x,y),14
NEXT x


''Anfang erste sich nähernde Gerade:
x = 230
y = 500

PSET (x,y),20


''Damit es nicht zu schnell anfängt...
sleep 500


''20 mal (mal zweimal) soll der Algorithmus annähern:
FOR i = 1 TO 20

''Funktion y(x) umgedreht in x(y); etwas unübersichtlich wegen der Maßstäbe,
''der Schnittpunkt mit der nächsten Kurve und damit die nächste Gerade entsteht:
  b = ((x - 400) / 15) ^ 2 + 100
  a = x
 
 ''Für buntere Grafik z.B. color i anstelle von color 15.
  COLOR 15
 
line  (x,y)-(a,b)

 ''Damit man sieht, wie es abläuft; sleep zum weiteren Probieren löschen:
 sleep (600-i*20)
 
  x = a
  y = b

  b = y
''Funktion y(x) umgedreht in x(y):
  a = p - y
 
  ''Für buntere Grafik z.B. color i anstelle von color 15.
  COLOR 15
 
 line (x,y)-(a,b)
 
 ''Damit man sieht, wie es abläuft; sleep zum weiteren Probieren löschen:
  sleep (600-i*20)
 
  x = a
  y = b

NEXT i

  sleep
   
   END 0

Nr2:

'Programm 2 (iterat mehrfach):
''Eine Linie springt zwischen zwei Kurven hin und her und
''nähert sich einem Schnittpunkt in Sprüngen = Iteration.
''Desgleichen springen weitere (w/step w) Linien:
Code:

screen 19,8

dim as single x,y,p,i,a,b,w

FOR x = -20 TO 20 STEP .01
y = x ^ 2
PSET (x * 15 + 400,y + 100),10
NEXT x

p = 650

FOR x = 100 TO 700 STEP 1
y = p - x
PSET (x,y),14
NEXT x

''50 verschiedene Linien beginnen von unten.
for w=0 to 500 step 10
x = 150+w
y = 500
sleep 100

PSET (x,y),20

FOR i = 1 TO 30
b = ((x - 400) / 15) ^ 2 + 100
a = x
COLOR i

line (x,y)-(a,b)
x = a
y = b

b = y
a = p - y

COLOR i

line (x,y)-(a,b)

x = a
y = b

NEXT i
next w

sleep

END 0
Nr.3:
Code:
''Nagelbrett

screen 20,8

dim as single xn,an,yn,bn,cn,in
dim as double tn

xn = 100
an = 384
yn = 100
bn = 384
cn = 512

sleep 500

FOR in = 0 TO 6.28 STEP 0.31415/2
xn = SIN(in) * 300 + 512
yn = COS(in) * 300 + 384
FOR an = 212 TO 812 STEP 100
COLOR in+1
line (xn,yn)-(an,bn)
NEXT an
FOR an = 84 TO 734 STEP 100
COLOR in+2

''Damit's langsam abläuft...
for tn =1 to 1000000
next tn

line (xn,yn)-(cn,an)
NEXT an

NEXT in
sleep
end 0

Bitte zwinkern
Und wenn ich schonmal dabei bin, dann hab ich noch einen kleinen Ansatz für einen Bildschirmschone zwinkern
Hier:


Code:
RANDOMIZE TIMER

''Nagelbrett

screen 20,8

dim as single xn,an,yn,bn,cn,in
dim as double tn

xn = 100
an = 384
yn = 100
bn = 384
cn = 512

' 500

DO
IN = IN + 0.31415/2
xn = SIN(in) * 300 + INT(RND*999)
yn = COS(in) * 300 + INT(RND*999)
FOR an = 212 TO 812 STEP 1
COLOR in+1+INT(RND*2)
line (xn,yn)-(an,bn)
NEXT an
FOR an = 84 TO 734 STEP 1
COLOR in+2+INT(RND*2)

''Damit's langsam abläuft...


line (xn,yn)-(cn,an)
NEXT an

LOOP
sleep
end 0
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Grafixfan



Anmeldungsdatum: 24.03.2007
Beiträge: 17
Wohnort: Bayreuth

BeitragVerfasst am: 18.06.2007, 17:51    Titel: Antworten mit Zitat

Danke für die codetags - ich bin noch am Üben!
Der Bildschirmschoner gefällt mir. Habe sowas schon mit mehreren Schleifen im Nagelbrett probiert; es kommt immer was Neues raus...
Gruß
Grafixfan
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz