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 1 (Lissajous)

 
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: 04.04.2007, 16:55    Titel: Gerechnete Grafik 1 (Lissajous) Antworten mit Zitat

Auf Wunsch von Mao erste Beispiele zu gerechneten Grafiken:

Lissajousfiguren entstehen, wenn man bei einem Oszillografen in x- und y-Richtung Wechselspannungen einspeist.
Stehen die Frequenzen beider Wechselspannungen in einem ganzzahligen Verhältnis, ergeben sich stehende Bilder; bei einem anderen Verhältnis verändern sich die Bilder um so schneller, je weiter sich das Verhältnis von ganzen Zahlen entfernt.
Mit dem PC kann man solche Figuren wesentlich einfacher und flexibler schreiben.

Die folgenden 4 kleinen Programme zeigen, mit wie wenig einfachen Formeln man Grafik erzeugen kann und mit welchen z.T. kleinen Veränderungen sehr unterschiedliche Ergebnisse entstehen.

Die Programme sind wohl nicht auf optimalen Code, sondern auf möglichst interessante Grafik geschrieben - Vorschläge für besseren Code und neue Grafiken werden gerne angenommen!

In zwei späteren Beiträgen möchte ich Grafiken aus Iterationen und Grafiken/Fraktale aus Juliamengen vorstellen und hoffe, die Leser nicht allzusehr zu langweilen!?


Code:
screen 20,8
     
dim as double d,i,x,y

''Mit der d-Schleife werden mehrere Lissajou-Figuren übereinandergeschrieben
''und in y-Richtung in der Größe verändert (geteilt durch d*2+1 in Zeile 19:
''Für nur eine Figur d von 2.8 to 2.9 eingeben.

FOR d = 0.2 TO 2.9 STEP .005
 
 ''Reine Lissajou-Figur über 360°/2Pi/6.3 mit sin in x- und cos in y-Richtung.
 ''Ersetzt man unten die "700" durch z.B. 150, sieht man die ganze Grafik.
 
 FOR i = 0 TO 6.3 STEP .0005
    x = SIN(i) * 400
    y = COS(i * 6 + d) * 700 / (d * 2 + .1)
    PSET (512 + x,350 + y),3 * d + 1
  NEXT i
   
NEXT d

 sleep
      END 0

Code:
screen 20,8
     
dim as double d,i,x,y

''Mit der d-Schleife werden mehrere Lissajou-Figuren übereinandergeschrieben
''und in y-Richtung in der Größe verändert (geteilt durch d*2+1 in Zeile 21):

  FOR d = 4 TO 21 STEP .01   
     
 ''Reine Lissajou-Figur über 360°/2Pi/6.3 mit sin in x- und cos in y-Richtung:
 
  FOR i = 0 TO 6.3 STEP .001
    x = SIN(i) * 460
   
    ''Im Vergleich zu lissa1 Phasenverschiebung durch sin(i+...) in Zeile 21:
   
    y = COS(i * 30 + d) * 1000 / (d * 2 + .1) + SIN(i + 1.6) * 200
    PSET (500 + x,350 + y),3 * d + 1
  NEXT i
 
NEXT d

 sleep
      END 0
Code:
screen 20,8
         
dim as double i
dim as single f,p

f = 3200:p = 10

FOR i = 0 TO .3 STEP .0000002
  PSET (((COS(i + p) * COS(f * i) * COS(i / 5)) * 450 + 500 ),(SIN(5 * i) * SIN(f * i)) * 300 + 360),15
NEXT i
   
  sleep
   
   END 0
Code:
screen 20,8
     
dim as double i
dim as single f,p

f = 10000:p = 1

FOR i = 0 TO 4 STEP .000005
     PSET (COS(i + p) * COS(f * i) * 450 + 512,SIN(i) * SIN(f * i) * 330 + 384),i*5+1
NEXT i

sleep

   END 0


Zuletzt bearbeitet von Grafixfan am 20.05.2007, 13:54, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 04.04.2007, 18:58    Titel: Antworten mit Zitat

Schön anzuschauen, am Besten gefällt mir allerdings Nummer 2. lächeln

Weiteres erwünscht. grinsen
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
steff



Anmeldungsdatum: 24.03.2007
Beiträge: 11

BeitragVerfasst am: 05.04.2007, 22:14    Titel: Antworten mit Zitat

Interessante Sache. Thx!

stef
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 05.04.2007, 22:23    Titel: Antworten mit Zitat

Mao hat Folgendes geschrieben:
Schön anzuschauen, am Besten gefällt mir allerdings Nummer 2. lächeln

Kann ich nur zustimmen Ja!
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AndT



Anmeldungsdatum: 02.04.2007
Beiträge: 481

BeitragVerfasst am: 05.04.2007, 22:44    Titel: Antworten mit Zitat

Aus einen von denen hab ich ein Fusionsreaktor gemacht durchgeknallt
Code:
screen 20,32
     
dim as double d,i,x,y

''Mit der d-Schleife werden mehrere Lissajou-Figuren übereinandergeschrieben
''und in y-Richtung in der Größe verändert (geteilt durch d*2+1 in Zeile 21):

  FOR d = 4 TO 2100 step 1
     
 ''Reine Lissajou-Figur über 360°/2Pi/6.3 mit sin in x- und cos in y-Richtung:
 
  FOR i = 0 TO 6.3 STEP .001
    x = SIN(i) * 460
   
    ''Im Vergleich zu lissa1 Phasenverschiebung durch sin(i+...) in Zeile 21:
   
    y = COS(i * 30 + d) * 355 / (d * 2 + .1) + SIN(i + 1.6) * 200
    COL=COL+D
    PSET (500 + x,350 + y),COL
  NEXT i


NEXT d

 sleep
      END 0
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AndT



Anmeldungsdatum: 02.04.2007
Beiträge: 481

BeitragVerfasst am: 05.04.2007, 23:03    Titel: Antworten mit Zitat

Bildstörung:
Code:

SCREEN 17,8
COL = 16
VALX=1
DO
    COL=COL + INT(RND*2)+1
    A=A+1
   
    IF A=640 THEN A=0:B=B+1
    IF B= 480 THEN B=0:A=0
    PSET (A,B),COL
    M=M+1
    IF M = 100000 THEN SLEEP 5 : M=0
LOOP
sleep

Und hier ein wunderschöner Störungseffekt:
Code:

SCREEN 20,32
COL = 16
VALX=6
DO
    COL=COL + VALX
    A=A+1+INT(RND*2)
    IF A>1024 THEN A=1024
    IF A=1024 THEN A=0:B=B+1
   
    IF B= 800 THEN B=0:A=0:VALX=VALX+1
    PSET (A,B),COL
'    Kleine Routine zu entlastung der CPU auf kosten der geschwindikeit ;)
'    M=M+1
'   IF M = 10000 THEN SLEEP 10 : M=0
LOOP
sleep
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Grafixfan



Anmeldungsdatum: 24.03.2007
Beiträge: 17
Wohnort: Bayreuth

BeitragVerfasst am: 17.05.2007, 10:35    Titel: Und weiter geht's Antworten mit Zitat

Hallo, schön, daß Ihr wieder da seid!

Der Fusionsreaktor und die Störungen gefallen mir gut;
allerdings sollte man vielleicht besser die Programme nicht mischen, damit es keine Reaktorstörung gibt?

Da die Progrämmchen scheint's doch Interesse finden, möchte ich weitere Projekte vorstellen.

Viele Grüße und Spaß[img]
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