#!/usr/local/bin/cz --

# try ./wheel.b 0.88 0.5 1

Main()
	num red_factor, green_factor, blue_factor
	if args % 3 == 1
		rb_smoothness = atof(arg[0])
		++arg ; --args
	which args
	0	red_factor = green_factor = blue_factor = 1
	3	red_factor = atof(arg[0])
		green_factor = atof(arg[1])
		blue_factor = atof(arg[2])
	else	usage("[red_factor green_factor blue_factor]")

	int size = atoi(Getenv("size", "400"))

	space(size, size)

	repeat
		clear()

		hsv_init()

		num r = h_2 - 10
		num da = 1
		num a = -da/2
		move(X, Y)

		for a=0 ; a<360-da/2 ;
			num i = a/30
			rainbow(i)
			move(0, 0)
			a += da/2
			triangle(X, Y)
			a += da/2

		Paint()
		
		Rsleep(0.2)

#def rainbow(a) hsv(a, 0, 0)
#def hsv(a, w, b) hsv_(a, w, b)
#colour hsv_(num a, num white, num black)
#	# from [0, 12)
#	a *= 2
#	int i0 = a
#	int i1 = (i0+1) % 24
#	num blend = (a - i0)
#	blend = pow(fabs(blend-0.5) * 2, 1/smoothness)*fsgn(blend-0.5)/2 + 0.5
#	num red0 = rb_cols[i0].red
#	num green0 = rb_cols[i0].green
#	num blue0 = rb_cols[i0].blue
#	num red1 = rb_cols[i1].red
#	num green1 = rb_cols[i1].green
#	num blue1 = rb_cols[i1].blue
#	num red = (red1-red0)*blend+red0
#	num green = (green1-green0)*blend+green0
#	num blue = (blue1-blue0)*blend+blue0
#	whiten()
#	blacken()
#	return rgb(red, green, blue)

def X Sin(a)*r
def Y Cos(a)*r

use b
use lib_extra.b
