04-20-2025, 03:36 AM
ey bud, try this for a color wheel. i promise you wont find it elsewhere unless the AI already scraped me
Code: (Select All)
_Title "Color wheel" ' madscijr 2025-04-19
Const pi = 3.14159
Const fps = 120
Const cShowValues = _FALSE
Type PointType
x As Long
y As Long
d As Integer
End Type
Dim xmin, ymin As Integer
Dim xmax, ymax As Integer
Dim dx, dy As Integer
Dim OldMouseX, OldMouseY As Integer
Dim arr(1 To 2) As PointType
Dim i As Integer
Dim count As Integer
Dim m$
Dim hue#
Dim dhue#
Dim sat#
Dim dsat#
Dim c~&
Randomize Timer
xmin = 0: ymin = 0: xmax = 640: ymax = 480
'xmax = _DesktopWidth - 1: ymax = _DesktopHeight - 1
Screen _NewImage(xmax, ymax, 32)
_FullScreen
_Delay 2 ' wait a couple seconds before getting mouse coords
While _MouseInput: Wend: OldMouseX = _MouseX: OldMouseY = _MouseY ' initial mouse placement
arr(1).x = 0: arr(1).y = 0: arr(1).d = 1
arr(2).x = xmax: arr(2).y = ymax: arr(2).d = 3
dx = 1: dy = 1
count = 0
hue# = 0
dhue# = 1
sat# = 0
dsat# = -.25
While _KeyDown(27) = 0
''color32value~& = _HSBA32(hue#, saturation#, brightness#, alpha#)
c~& = hpRGB~&(hue# / 360, .25) '_HSBA32(hue#, sat#, 100, 100)
Line (arr(1).x, arr(1).y)-(arr(2).x, arr(2).y), c~&
For i = 1 To 2
Select Case arr(i).d
Case 1:
arr(i).x = arr(i).x + dx
If arr(i).x >= xmax Then arr(i).x = xmax: arr(i).d = 2
Case 2:
arr(i).y = arr(i).y + dy
If arr(i).y >= ymax Then arr(i).y = ymax: arr(i).d = 3
Case 3:
arr(i).x = arr(i).x - dx
If arr(i).x <= xmin Then arr(i).x = xmin: arr(i).d = 4
Case 4:
arr(i).y = arr(i).y - dy
If arr(i).y <= ymin Then arr(i).y = ymin: arr(i).d = 1: 'count = count + 1
End Select
Next i
hue# = hue# + dhue#
If hue# > 359 Then
hue# = 0
End If
sat# = sat# + dsat#
If sat# <= 0 Then
sat# = 0: dsat# = -dsat#
ElseIf dsat# >= 100 Then
dsat# = 100: dsat# = -dsat#
End If
' If user moves mouse, quit
While _MouseInput: Wend: If _MouseX <> OldMouseX Or _MouseY <> OldMouseY Then Exit While
_Display
'_Limit fps
Wend
'_AutoDisplay
'Sleep
System
Function hpRGB~& (h As Double, p As Double)
Dim As Double r0, g0, b0
Dim As Double r, g, b
Dim As Double x, f, m, hh
hh = h ^ 1.5
x = pi * (hh + 1 / 2)
r0 = Abs(Sin(x))
g0 = Abs(Sin(x - pi / 3))
b0 = Abs(Sin(x + pi / 3))
f = p * (1 - r0 - g0 - b0)
r = r0 + f
g = g0 + f
b = b0 + f
m = 1 / Max3##(r, g, b)
r = r * m
g = g * m
b = b * m
If (r < 0) Then r = 0
If (g < 0) Then g = 0
If (b < 0) Then b = 0
hpRGB~& = _RGB32(r * 255, g * 255, b * 255, 255)
End Function
Function Max3## (x As Double, y As Double, z As Double)
Dim TheReturn As Double
TheReturn = x
If (y > TheReturn) Then TheReturn = y
If (z > TheReturn) Then TheReturn = z
Max3## = TheReturn
End Function