Seite 1 von 1

Kreisförmig anordnen

Verfasst: 05.01.2008 13:02
von roherter
Ich möchte eine bestimmte anzahl von bilder kreisförmig anordenen mit angabe in welchem radius das passieren soll und angabe der anzahl der bilder wie mache ich das am besten?

Verfasst: 05.01.2008 13:23
von Scarabol
Hi,

suchst du jetzt nur die Rechnung dazu?

Oder wie man es später am Besten dem User präsentiert?

Gruß
Scarabol

Verfasst: 05.01.2008 13:38
von Macros
  1. Du setzt den Mittelpunkt deines Kreises

  2. For a=1 to Bilder
    BildMittelpunktx=Kreismittelpunktx+cos(2*#PI/Bilder*a)*Radius
    BildMittelpunkty=Kreismittelpunkty+sin(2*#PI/Bilder*a)*Radius
    next
  3. Du errechnest aus dem Mittelpunkt für jedes Bild die Koordinaten der linken oberen Ecke
  4. Du zeigst das ganze an
(3 und 4 gehören dann auch in die For Schleife)

Weitere Fragen beantworte ich dir gerne

edit: Beispielcode

Code: Alles auswählen

;- Code by Macros
;- Order images on a circle

OpenWindow(1,0,0,600,600,"Kreistest",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
CreateGadgetList(WindowID(1))
ImageGadget(1,0,0,600,600,0)
CreateImage(0,600,600)

Bilder=10
For a=1 To Bilder
  width=Random(80)+40
  height=Random(80)+40
  CreateImage(a,width,height)
  StartDrawing(ImageOutput(a))
  Box(0,0,width,height,RGB(Random(255),Random(255),Random(255)))
  Box(2,2,width-4,height-4,RGB(Random(255),Random(255),Random(255)))
  StopDrawing()
Next

Repeat
  kreislauf.f+0.01
  ;-Schritt 1
  mittelpunktx=300
  mittelpunkty=300
  Radius=200
  StartDrawing(ImageOutput(0))
  Box(0,0,600,600,0) ; Hintergrund löschen
  For a=1 To Bilder
    ;-Schritt 2
    ; BildMittelpunktx=mittelpunktx+Cos(2*#PI/Bilder*a)*Radius
    ; BildMittelpunkty=mittelpunkty+Sin(2*#PI/Bilder*a)*Radius
    ;-Schritt 2 mit Umlauf
    BildMittelpunktx=mittelpunktx+Cos(2*#PI/Bilder*a+kreislauf)*Radius
    BildMittelpunkty=mittelpunkty+Sin(2*#PI/Bilder*a+kreislauf)*Radius
    ;- Schritt 3
    Bildx=BildMittelpunktx-ImageWidth(a)/2
    Bildy=BildMittelpunkty-ImageHeight(a)/2
    ;- Schritt 4
    DrawImage(ImageID(a),Bildx,Bildy)
    ;- Nur zur Verdeutlichung (grüne Ankerkreise)
    Circle(BildMittelpunktx,BildMittelpunkty,5,$ff00) 
  Next
  ;- wie auch das hier (der Kreis auf dem die Bilder liegen)
  DrawingMode(#PB_2DDrawing_Outlined)
  Circle(mittelpunktx,mittelpunkty,Radius,$ff) 
  StopDrawing()
  SetGadgetState(1,ImageID(0))

  Delay(10)
Until WindowEvent()=#PB_Event_CloseWindow

Verfasst: 05.01.2008 13:58
von roherter
Danke! :D

Verfasst: 05.01.2008 14:01
von Macros
Hab noch kurz einen Beispielcode hinzugefügt

Verfasst: 05.01.2008 15:14
von roherter
Jo den hatte ich auch schon gefunden,trotzdem danke.
Danke für das anpassen des codes an meine bedürfnisse!

Ich brauche das für mandalas.

Verfasst: 05.01.2008 17:27
von #NULL
saubere arbeit :D