// ----------------------------------------
// HSV to RGB Convert
// H: 0.0 - 360.0 degree
// S: 0.0 - 1.0
// V: 0.0 - 1.0
Function HSV(c_h as Double, c_s as Double, c_v as Double) as Long {
Dim f as Double
Dim p as Double
Dim q as Double
Dim t as Double
Dim hi as Double
Dim r as Double
Dim g as Double
Dim b as Double
hi = CInt(c_h / 60.0) mod 6
f = (c_h / 60.0) - hi
p = c_v * (1 - c_s)
q = c_v * (1 - (f * c_s))
t = c_v * (1 - (1 - f) * c_s)
if (hi == 0) then
r = c_v
g = t
b = p
elseif (hi == 1) then
r = q
g = c_v
b = p
elseif (hi == 2) then
r = p
g = c_v
b = t
elseif (hi == 3) then
r = p
g = q
b = c_v
elseif (hi == 4) then
r = t
g = p
b = c_v
else
r = c_v
g = p
b = q
end if
return RGB(CInt(r * 255) ,CInt(g * 255) ,CInt(b * 255))
}
エージェントの表示色を変数によって動的に設定します。
モデルツリー上のエージェントにcolor等の適当な変数を整数型で作成します。
マップ出力設定画面で、表示色を動的に設定させたいエージェントを選択します
エージェント表示色を「固定色」ではなく「変数指定」にし、先程設定した変数(color等)を選択します。
エージェントルール上にHSVをRGB形式に変換するユーザ定義関数を作成します(ここでは関数名をHSVとします)
エージェントルール上で表示色を表わす変数にHSV関数を用いて色を設定します
HSVユーザ定義関数
// ---------------------------------------- // HSV to RGB Convert // H: 0.0 - 360.0 degree // S: 0.0 - 1.0 // V: 0.0 - 1.0 Function HSV(c_h as Double, c_s as Double, c_v as Double) as Long { Dim f as Double Dim p as Double Dim q as Double Dim t as Double Dim hi as Double Dim r as Double Dim g as Double Dim b as Double hi = CInt(c_h / 60.0) mod 6 f = (c_h / 60.0) - hi p = c_v * (1 - c_s) q = c_v * (1 - (f * c_s)) t = c_v * (1 - (1 - f) * c_s) if (hi == 0) then r = c_v g = t b = p elseif (hi == 1) then r = q g = c_v b = p elseif (hi == 2) then r = p g = c_v b = t elseif (hi == 3) then r = p g = q b = c_v elseif (hi == 4) then r = t g = p b = c_v else r = c_v g = p b = q end if return RGB(CInt(r * 255) ,CInt(g * 255) ,CInt(b * 255)) }
HSVユーザ定義関数の利用例
Agt_Step{ My.Color = HSV((getCountStep() + (My.ID * 20)) mod 360,1.0, 1.0) }
HSVユーザ定義関数を利用したサンプルモデル