モデルの作り方(自習用)

エージェントの色をHSVで指定する

概要

エージェントの色をHSVで指定します。

方法

エージェントの表示色を変数によって動的に設定します。

  1. モデルツリー上のエージェントにcolor等の適当な変数を整数型で作成します。
  2. マップ出力設定画面で、表示色を動的に設定させたいエージェントを選択します
  3. エージェント表示色を「固定色」ではなく「変数指定」にし、先程設定した変数(color等)を選択します。
  4. エージェントルール上にHSVをRGB形式に変換するユーザ定義関数を作成します(ここでは関数名をHSVとします)
  5. エージェントルール上で表示色を表わす変数に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ユーザ定義関数を利用したサンプルモデル