グラデーション・トライアングル(ボタン版)
グラデーション・トライアングル(ボタン版)
参考情報
前提オブジェクト
数値
freq = 20 : グラデーションを構成する線分の描画頻度
多角形
poly1 = Polygon[A,B,C]
関数
par(x) = x / (floor( (x( (Max[{x(A), x(B), x(C)}], Min[{y(A), y(B), y(C)}]) ) - x( (Min[{x(A), x(B), x(C)}], Min[{y(A), y(B), y(C)}]) ) ) freq) - 1)
r(x) = If[0 ≤ x < 1 / 5, 1, 1 / 5 ≤ x < 2 / 5, -5x + 2, 2 / 5 ≤ x < 3 / 5, 0, 3 / 5 ≤ x < 4 / 5, 0, 4 / 5 ≤ x ≤ 1, 5x - 4]
g(x) = If[0 ≤ x < 1 / 5, 5x, 1 / 5 ≤ x < 2 / 5, 1, 2 / 5 ≤ x < 3 / 5, 1, 3 / 5 ≤ x < 4 / 5, -5x + 4, 4 / 5 ≤ x ≤ 1, 0]
b(x) = If[0 ≤ x < 1 / 5, 0, 1 / 5 ≤ x < 2 / 5, 0, 2 / 5 ≤ x < 3 / 5, 5x - 2, 3 / 5 ≤ x < 4 / 5, 1, 4 / 5 ≤ x ≤ 1, 1]
「execute」ボタンのOn Click スクリプト
Execute[list2]
Execute[list1]
Execute[list3]
Execute[list4]
list2の定義
Sequence["Delete[seg" + (t) + "_1]", t, 0, ceil( (x(Corner[2]) - x(Corner[1]) ) freq)]
※グラデーションを構成する線分を一旦すべて削除する。
list1の定義
Sequence["seg" + (t) + "=IntersectionPaths[Segment[(Min[{x(A), x(B), x(C)}], Min[{y(A), y(B), y(C)}])+(" + (t) + "/freq,0),(Min[{x(A), x(B), x(C)}], Max[{y(A), y(B), y(C)}])+(" + (t) + "/freq,0)],poly1]", t, 1, floor( (x( (Max[{x(A), x(B), x(C)}], Min[{y(A), y(B), y(C)}]) ) - x((Min[{x(A), x(B), x(C)}], Min[{y(A), y(B), y(C)}]) ) ) freq) - 1]
※グラデーションを構成する線分を新たに作成し、名前をseg1, seg2, ...とする。仕様上、生成されるオブジェクト名には、seg1_1, seg2_1,...というように、「_1」が付く。
list3の定義
Sequence["SetColor[seg" + (t) + "_1,r(par(" + (t) + ") ),g(par(" + (t) + ") ),b(par(" + (t) + ") )]", t, 1, floor( (x((Max[{x(A), x(B), x(C)}], Min[{y(A), y(B), y(C)}]) ) - x( (Min[{x(A), x(B), x(C)}], Min[{y(A), y(B), y(C)}]) ) ) freq) - 1]
※線分に色をつける。
list4の定義
Sequence["SetFixed[seg" + (t) + "_1,false,false]", t, 1, floor( (x( (Max[{x(A), x(B), x(C)}], Min[{y(A), y(B), y(C)}]) ) - x( (Min[{x(A), x(B), x(C)}], Min[{y(A), y(B), y(C)}]) ) ) freq) - 1]
※線分の選択を不許可にする。