皆さん、わかりやすく見やすいソースコードを書いていただき、本当にありがとうございます。
最終的に、このようなソースコードになりました。ベースは(’’さんのソースコードです。
#module//HSVをRGBに変換するモジュール→http://ror.cs.land.to/hsp/colortest.html
;; 四捨五入マクロ
#define global Round(%1) double(int((%1)+0.5))
#define global Round2(%1) int((%1)+0.5) ;実数に戻さない
;; HSVをRGBに変換
;; HSVは、Hは0.0〜360.0、SVは0.0〜1.0で指定
;; RGBは0〜255で結果を返す
#deffunc HSV2RGB double dH , double dS , double dV , var vR , var vG , var vB
if dS=0.0{ ;dS(彩度)がゼロ
vR = int(dV*255) ;無彩色なので全てdVの値になる
vG = vR
vB = vR
}else{
tH = dH
repeat ;dHを0.0〜360.0に揃える
if tH>=360.0 : tH - 360.0 : continue
if tH<0.0 : tH + 360.0 : continue
break
loop
Hi = int(tH/60)
f = tH / 60 - Hi
p = Round2( dV * (1.0 - dS) * 255 ) ;HSP標準命令の「hsvcolor」に近づけようと思ったら
q = Round2( dV * (1.0 - dS * f) * 255 ) ;四捨五入する必要があるっぽい?
t = Round2( dV * (1.0 - dS * (1.0 - f)) * 255 )
iV = int( dV * 255 )
if Hi<=2{ ;見づらくならない程度に分岐を整理
if Hi=0 : vR = iV : vG = t : vB = p
if Hi=1 : vR = q : vG = iV : vB = p
if Hi=2 : vR = p : vG = iV : vB = t
}else{
if Hi=3 : vR = p : vG = q : vB = iV
if Hi=4 : vR = t : vG = p : vB = iV
if Hi=5 : vR = iV : vG = p : vB = q
}
}
return
#global
Screen 0,1000,1000
縦サイズ=ginfo_winy
横サイズ=ginfo_winx
中心点x=ginfo_sx/2//円のx方向の中心点
中心点y=ginfo_sy/2//円のy方向の中心点
円サイズplus=490.0/255.0//円の半径/255
V=255//HSVのVの位置を代入
repeat 縦サイズ
y=cnt
repeat 横サイズ
x=cnt
x2=x-中心点x:y2=y-中心点y
//x,yの点の色を求める
angle=atan(x2,y2)
distance=sqrt(x2*x2+y2*y2)//距離
S=distance/円サイズplus
元CNT=360.0-(angle*114.59156)
HSV2RGB (元CNT/2),(S/255),(V/255) , R,G,B//HSV→RGBに変換
color R,G,B //カレントカラーを変更。
pset x,y
loop
await
loop
(’’さん、FunnyMakerさん、きのよーさん、本当にありがとうございました。