Figur (Koch'sche Schneeflocke)

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Smily

Betreff: Figur (Koch'sche Schneeflocke)

BeitragMo, Jul 02, 2007 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mal wieder einen code für eine kleine grafik fabriziert:
Die entstehende Figur hatte auch irgendeinen namen. An diesen kann mich nur leider nicht mehr erinnern Laughing

Code: [AUSKLAPPEN]
Graphics 1024,768,16,1
Setbuffer backbuffer()
x1 = 0
x2 = 1024
y1 = 600
y2 = 600
c = 6
Repeat
   If KeyHit(203) c = c - 1
   If KeyHit(205) c = c + 1
   If c < 0 c = 0
   cls
   sline x1,y1,x2,y2,c
   Line MouseX()-5,mousey()-5,mousex()+5,mousey()+5
   Line MouseX()-5,mousey()+5,mousex()+5,mousey()-5
   If MouseDown(1) x1 = MouseX(): y1 = MouseY()
   If MouseDown(2) x2 = MouseX(): y2 = MouseY()
   Flip 0
Until KeyHit(1)
WaitKey()

Function sline(x1,y1,x2,y2,c)
;   Line x1,y1,x2,y2
   ab = Sqr((x2-x1)^2 + (y2-y1)^2)
   ri = ATan2(y2-y1,x2-x1)
   xt1 = x1+cos(ri)*ab/4
   yt1 = y1+sin(ri)*ab/4
   xt2 = x2-cos(ri)*ab/4
   yt2 = y2-sin(ri)*ab/4
   mx = (x1+x2)/2
   my = (y1+y2)/2
   tx = mx-cos(ri+90)*ab/2
   ty = my-sin(ri+90)*ab/2
   Line x1, y1, xt1, yt1
   If c
      sLine xt1,yt1,tx,ty, c-1
      sLine tx,ty,xt2,yt2, c-1
   Else
      Line xt1,yt1,tx,ty
      Line tx,ty,xt2,yt2
   End if
   Line xt2, yt2, x2, y2
End function
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
  • Zuletzt bearbeitet von Smily am Mo, Jul 02, 2007 18:19, insgesamt 3-mal bearbeitet
 

Froggy

BeitragMo, Jul 02, 2007 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Sieht mir nach einem Fraktal aus.

Du solltest übrigens Setbuffer Backbuffer() in die zweite Programmzeile schreiben, da sonst bei Flip nichts angezeigt wird.

EDIT: Wenn du jetzt noch hinkriegst, dass man das immer mehr verästeln kann, dann ist es richtig geil.

Smily

BeitragMo, Jul 02, 2007 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
dass das eine fraktal ist weis ich auch. Aber diese Spezielle figur hatte auch einen namen. (Ich glaube sie wurde nach dem Erfinder benannt)

Ich hab übrigens die hauptschleife mal überarbeitet, um zu zeigen, dass das teil in echtzeit funktioniert Wink

mit linker + rechter maustaste können start und endkoordinaten der figur angegeben werden.
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

Froggy

BeitragMo, Jul 02, 2007 18:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt könntest du ja auch noch programmieren, dass man mit linker bzw. rechter Pfeiltaste die Verästelung verringert bzw. Erhöhen kann. Bei einem Fraktal kann man da ja unendlich viele Verästelungen machen.

Smily

BeitragMo, Jul 02, 2007 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Froggy hat Folgendes geschrieben:
Jetzt könntest du ja auch noch programmieren, dass man mit linker bzw. rechter Pfeiltaste die Verästelung verringert bzw. Erhöhen kann. Bei einem Fraktal kann man da ja unendlich viele Verästelungen machen.


schon geschehen Very Happy
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

Froggy

BeitragMo, Jul 02, 2007 18:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Geil, echt voll gelungen.

Aber es gibt ja noch mehr Fraktale Very Happy
 

FWeinb

ehemals "ich"

BeitragMo, Jul 02, 2007 21:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja ich kannte den namen auch mal aber leider weiß ich ihn jetzt auch nicht mehr ^^
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs
 

ke^kx

BeitragDi, Jul 03, 2007 10:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich kanns mir von hier jetzt nicht anschauen (bin in der Schule Smile) aber das bekannteste Fraktal ist wohl das Mandelbrot-Fraktal. Ansonsten gibt es wie immer auf Wikipedia zahlreiche Erläuterungen.

Jiriki
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM

Moep

BeitragDi, Jul 03, 2007 17:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Müsste die Koch-Flocke sein^^
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42

Achtung: Suchtgefahr!
moep123.ohost.de

DAK

BeitragMi, Jul 04, 2007 20:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab auch mal ein Fraktal programmiert (für die schule)

Code: [AUSKLAPPEN]
Graphics 1280,1024,16,1

Type entity
   Field x#,y#,dir#,scale#
   Field handled, art ;Art: 1 = Quadrat, 2 = Dreieck
End Type

Const variante = 1 ;1 = In eine Richtung, 2 = in 2 Richtungen

If variante = 1 Then
   t.entity = New entity
   t\x# = 580
   t\y# = 900
   t\dir# = 0
   t\scale# = 180
   t\handled = 0
   t\art = 1
Else
   t.entity = New entity
   t\x# = 580
   t\y# = 602
   t\dir# = 0
   t\scale# = 100
   t\handled = 0
   t\art = 1
   
   t.entity = New entity
   t\x# = 680
   t\y# = 602
   t\dir# = 180
   t\scale# = 100
   t\handled = 0
   t\art = 2
EndIf

Const tiefe = 50
Const logtype = 2 ;0=kein, 1=write, 2=text
Const waitk = 0 ;waitkey enabled/disabled

For i = 0 To tiefe
   If logtype = 1 Then
      Write i+";"
   EndIf
   If logtype = 2 Then
      Color 0,0,0
      Rect 9,9,100,20
      Color 255,255,255
      Text 10,10,i+"/"+tiefe
   EndIf
   
   For t.entity = Each entity ;DREIECK
      If KeyHit(1) Then End
      If t\handled = 0 Then
         If t\art = 2 Then
            t\handled = 1
            ;drawtriangle(t\x#,t\y#,t\dir#,t\scale#)
            
            e.entity = New entity
            e\x# = t\x#
            e\y# = t\y#
            e\dir# = t\dir#-37
            e\scale = t\scale*.8
            e\handled = 0
            e\art = 1
            
            e.entity = New entity
            e\x# = t\x#+Cos(t\dir#-37)*t\scale#*.8
            e\y# = t\y#+Sin(t\dir#-37)*t\scale#*.8
            e\dir# = t\dir#+53
            e\scale = t\scale*.6
            e\handled = 0
            e\art = 1
            Delete t.entity
         EndIf
      EndIf
   Next
   
   For t.entity = Each entity ;QUADRATE
      If KeyHit(1) Then End
      If t\handled = 0 Then
         If t\art = 1 Then
            t\handled = 1
            drawquad(t\x#,t\y#,t\dir#,t\scale#)
            
            e.entity = New entity
            e\x# = t\x#+Cos(t\dir#-90)*t\scale
            e\y# = t\y#+Sin(t\dir#-90)*t\scale
            e\dir# = t\dir#
            e\scale = t\scale
            e\handled = 0
            e\art = 2
            Delete t.entity
         EndIf
      EndIf
   Next
   If i = tiefe Then Text 640,10,"FERTIG",1,1
   If waitk Then WaitKey
Next
WaitKey




;#### FUNCTIONS ####

Function drawtriangle(x#,y#,dir#,scale#)
   up1# = Sin(dir#)*scale#
   rig1# = Cos(dir#)*scale#

   up2# = Sin(dir#-37)*scale#*.8
   rig2# = Cos(dir#-37)*scale#*.8

   Line(x#,y#,x#+rig1#,y#+up1#)
   Line(x#,y#,x#+rig2#,y#+up2#)
   Line(x#+rig2#,y#+up2#,x#+rig1#,y#+up1#)
End Function

Function drawquad(x#,y#,dir#,scale#)
   uppast# = y#
   rigpast# = x#
   For i = 0 To 270 Step 90
      uppast# = uppast#+up#
      rigpast# = rigpast#+rig#
      up# = Sin(dir#-i)*scale#
      rig# = Cos(dir#-i)*scale#
      Line(rigpast#,uppast#,rigpast#+rig#,uppast#+up#)
   Next
End Function


Is das Pythagoras-Fraktal
Gewinner der 6. und der 68. BlitzCodeCompo

Waveblue

Betreff: Re: Figur (kA name ist mir entfallen o.O)

BeitragMi, Jul 04, 2007 22:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Smily0412 hat Folgendes geschrieben:
Die entstehende Figur hatte auch irgendeinen namen. An diesen kann mich nur leider nicht mehr erinnern Laughing


Hm, wars nicht das Apfelmännchen?
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name

Triton

BeitragFr, Jul 06, 2007 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mir mal erlaubt, den namen im Titel zu ergänzen Wink
Coding: silizium-net.de | Portfolio: Triton.ch.vu

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group