Jump to content

Color wheel: Difference between revisions

Line 223:
img.write(file => 'color_wheel.png')</lang>
 
=={{header|SidefSmart Basic}}==
{{trans|Perl 6Basic}}
<lang Smart Basic>
<lang ruby>require('Imager')
' Colour Palette Circle
GET SCREEN SIZE sw,sh
xmax=0.45*3/7*(sw+sh)
x0=sw/2!y0=sh/2
twopi=2*3.1415926
GRAPHICS
GRAPHICS CLEAR
DIM triX(1000), triY(1000)
triX(0)=x0 ! triY(0)=y0
steps=INT(1^2*360)+1
dAngle=twopi/steps
dAngle2=dAngle/2
REFRESH OFF
FOR i=0 TO steps-1
pal(i/steps+TintOffset)
ANGLE=i*dAngle
FILL COLOR pal.r,pal.g,pal.b
DRAW COLOR pal.r,pal.g,pal.b
x=x0+(xmax-radius)*COS(ANGLE)
y=y0-(xmax-radius)*SIN(ANGLE)
k=0
FOR j=-dAngle2 TO dAngle2 STEP 0.02
)k+=1
triX(k)=x0+xmax*COS(ANGLE+j)
triY(k)=y0-xmax*SIN(ANGLE+j)
NEXT j
k+=1
triX(k)=x0+xmax*COS(ANGLE+dAngle2)
triY(k)=y0-xmax*SIN(ANGLE+dAngle2)
DRAW POLY triX,triY COUNT k+1
FILL POLY triX,triY COUNT k+1
NEXT i
REFRESH ON
END
 
DEF pal(tint)
var (width, height) = (300, 300)
tint=tint*360
var center = Complex(width/2 , height/2)
h=(tint%360)/60 ! f=FRACT(h) ! z=1-f ! ic=FLOOR(h)+1
 
ON ic GOTO s1,s2,s3,s4,s5,s6
var img = %s|Imager|.new(
s1: r=1 ! g=f ! b=0 ! GOTO done
xsize => width,
s2: r=z ! g=1 ! b=0 ! GOTO done
ysize => height,
s3: r=0 ! g=1 ! b=f ! GOTO )done
s4: r=0 ! g=z ! b=1 ! GOTO done
 
s5: r=f ! g=0 ! b=1 ! GOTO done
for y, x in (^height ~X ^width) {
s6: r=1 var vector! g=0 (center! - xb=z -! y.i)done:
END DEF
var magnitude = (vector.abs * 2 / width)
</lang>
var direction = ((Num.pi + atan2(vector.real, vector.imag)) / Num.tau)
img.setpixel(
x => x,
y => y,
color => Hash(hsv => [360*direction, magnitude, magnitude < 1 ? 1 : 0])
)
}
 
img.write(file => 'color_wheel.png')</lang>
 
=={{header|zkl}}==
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.