うしブログ

うしブログ

趣味で運営する、GeoGebraの専門ブログ。

(作業メモ)StartPoint要検証(2行の場合;テキスト変更時未定義問題)

(要修復)ToggleButton・RollPolygonWithoutSlipping・貯金時計・直感力トレーニング

グラデーション・トライアングル(ボタン版)

グラデーション・トライアングル(ボタン版)

 

 

参考情報

前提オブジェクト

数値

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]

※線分の選択を不許可にする。 

 

バージョン情報

Version: 6.0.451.0-w (28 March 2018)