Lust auf ein paar Farben?
Verfasst: 01.06.2005 04:20
Steuerung:
- Maus bewegt Punkt 1. Punkte 2 und 3 bewegen sich von selbst.
- F1 und F2 für andere Formeln
- ALT-F4 zum Beenden oder auf das X klicken
Wer Lust und Laune hat, findet vielleicht noch mehr interessante Einstellungen oder baut das ganze für beliebig viele Punkte um.
- Maus bewegt Punkt 1. Punkte 2 und 3 bewegen sich von selbst.
- F1 und F2 für andere Formeln
- ALT-F4 zum Beenden oder auf das X klicken

Wer Lust und Laune hat, findet vielleicht noch mehr interessante Einstellungen oder baut das ganze für beliebig viele Punkte um.
Code: Alles auswählen
InitSprite()
OpenWindow(0, 0, 0, 640, 480, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "blabla")
OpenWindowedScreen(WindowID(0), 0, 0, 640, 480, 0, 0, 0)
Structure PointF
x.f
y.f
rx.f
ry.f
EndStructure
P1.PointF
P2.PointF
P2\x = Random(639)
P2\y = Random(479)
P2\rx = Random(100) / 50
P2\ry = Random(100) / 50
P3.PointF
P3\x = Random(639)
P3\y = Random(479)
P3\rx = Random(100) / 50
P3\ry = Random(100) / 50
D1.PointF
D2.PointF
D3.PointF
M_SQR = 0
M_Invert = 1
KeyTime.l
#ReleaseTime = 250
Repeat
P1\x = WindowMouseX()
P1\y = WindowMouseY()
P2\x + P2\rx
P2\y + P2\ry
P3\x + P3\rx
P3\y + P3\ry
If P2\x < 0 Or P2\x > 639 : P2\rx = -P2\rx : EndIf
If P2\y < 0 Or P2\y > 479 : P2\ry = -P2\ry : EndIf
If P3\x < 0 Or P3\x > 639 : P3\rx = -P3\rx : EndIf
If P3\y < 0 Or P3\y > 479 : P3\ry = -P3\ry : EndIf
If ElapsedMilliseconds() > KeyTime
If GetAsyncKeyState_(#VK_F1)
KeyTime = ElapsedMilliseconds() + #ReleaseTime
M_SQR ! 1
EndIf
If GetAsyncKeyState_(#VK_F2)
KeyTime = ElapsedMilliseconds() + #ReleaseTime
M_Invert ! 1
EndIf
EndIf
StartDrawing(ScreenOutput())
For x.l = 0 To 639
D1\x = x - P1\x
D2\x = x - P2\x
D3\x = x - P3\x
D1\x * D1\x
D2\x * D2\x
D3\x * D3\x
For y.l = 0 To 479
D1\y = y - P1\y
D2\y = y - P2\y
D3\y = y - P3\y
D1\y * D1\y
D2\y * D2\y
D3\y * D3\y
r.f = D1\x + D1\y
g.f = D2\x + D2\y
b.f = D3\x + D3\y
If M_SQR
r = Sqr(r)
g = Sqr(g)
b = Sqr(b)
EndIf
If M_Invert
r = 1 / r
g = 1 / g
b = 1 / b
EndIf
f.f = 1/(r+g+b)
r * f
g * f
b * f
Plot(x, y, RGB(r * 255, g * 255, b * 255))
Next
Next
DrawingMode(1)
Locate(P2\x - 4, P2\y - 8)
DrawText("2")
Locate(P3\x - 4, P3\y - 8)
DrawText("3")
Locate(0, 0)
DrawText("M_SQR: " + Str(M_SQR))
Locate(0, 16)
DrawText("M_Invert: " + Str(M_Invert))
StopDrawing()
FlipBuffers()
Until WindowEvent() = #PB_EventCloseWindow
CloseScreen()
CloseWindow(0)