字幕をつける
※前提として、InternalCorner ツールが必要です。
①テキスト、基準点、基準位置を作成
CapA = (0,0)
capText = Text["<字幕にしたい文字列>", CapA]
②点capPを作成
点capPは、字幕を置きたい場所に応じて、以下のように定義する*1。
中段中央に作成したい場合
Midpoint[Corner[1], Corner[3]] - (Distance[Corner[capText, 2], Corner[capText, 1]] / 2, Distance[Corner[capText, 4], Corner[capText, 1]] / 2) + Vector[Corner[capText, 1], CapA]
下段左に作成したい場合
InternalCorner[1] + Vector[Corner[capText, 1], CapA]
下段中央に作成したい場合
Midpoint[InternalCorner[1], InternalCorner[2]] - (Distance[Corner[capText, 2], Corner[capText, 1]] / 2, 0) + Vector[Corner[capText, 1], CapA]
下段右に作成したい場合
InternalCorner[2] - (Distance[Corner[capText, 2], Corner[capText, 1]], 0) + Vector[Corner[capText, 1], CapA]
中段右に作成したい場合
Midpoint[InternalCorner[2], InternalCorner[3]] - (Distance[Corner[capText, 2], Corner[capText, 1]], Distance[Corner[capText, 4], Corner[capText, 1]] / 2) + Vector[Corner[capText, 1], CapA]
上段右に作成したい場合
InternalCorner[3] - (Distance[Corner[capText, 2], Corner[capText, 1]], Distance[Corner[capText, 4], Corner[capText, 1]]) + Vector[Corner[capText, 1], CapA]
上段中央に作成したい場合
Midpoint[InternalCorner[3], InternalCorner[4]] - (Distance[Corner[capText, 2], Corner[capText, 1]] / 2, Distance[Corner[capText, 4], Corner[capText, 1]]) + Vector[Corner[capText, 1], CapA]
上段左に作成したい場合
InternalCorner[4] - (0, Distance[Corner[capText, 4], Corner[capText, 1]]) + Vector[Corner[capText, 1], CapA]
中段左に作成したい場合
Midpoint[InternalCorner[1], InternalCorner[4]] - (0, Distance[Corner[capText, 4], Corner[capText, 1]] / 2) + Vector[Corner[capText, 1], CapA]
③フレームcapFrameを作成
capFrame = Polygon[(x(Corner[1]), y(Corner[capText, 1])), (x(Corner[2]), y(Corner[capText, 2])), (x(Corner[2]), y(Corner[capText, 3])), (x(Corner[1]), y(Corner[capText, 4]))]
④できあがった点capPのOn Update スクリプト
UpdateConstruction[]
SetValue[CapA,Translate[CapA,(10,10)]]
SetValue[CapA,Translate[CapA,(-10,-10)]]
SetValue[CapA,capP]
⑤整形
capA, capPを非表示にする。
capFrameの色、透明度、レイヤーを調節する。
応用例
クリックしたオブジェクトの定義を字幕で表示する。
*1:字幕の位置を、変数に依存させることも可能である。変数capNumの値と位置を、0(中段中央)、1(下段左)、1.5(下段中央)、2(下段右)、2.5(中段右)、3(上段右)、3.5(上段中央)、4(上段左)、4.5(中段左)というように関連づけるためには、capPの定義を、以下のように定義する。
If[If[0 ≤ capNum < 5, floor(2capNum) / 2, 0] ≟ 0 ∨ If[0 ≤ capNum < 5, floor(2capNum) / 2, 0] ≟ 0.5, Midpoint[Corner[1], Corner[3]] - (Distance[Corner[capText, 2], Corner[capText, 1]] / 2, Distance[Corner[capText, 4], Corner[capText, 1]] / 2) + Vector[Corner[capText, 1], CapA], If[0 ≤ capNum < 5, floor(2capNum) / 2, 0] ≟ 1, InternalCorner[1] + Vector[Corner[capText, 1], CapA], If[0 ≤ capNum < 5, floor(2capNum) / 2, 0] ≟ 1.5, Midpoint[InternalCorner[1], InternalCorner[2]] - (Distance[Corner[capText, 2], Corner[capText, 1]] / 2, 0) + Vector[Corner[capText, 1], CapA], If[0 ≤ capNum < 5, floor(2capNum) / 2, 0] ≟ 2, InternalCorner[2] - (Distance[Corner[capText, 2], Corner[capText, 1]], 0) + Vector[Corner[capText, 1], CapA], If[0 ≤ capNum < 5, floor(2capNum) / 2, 0] ≟ 2.5, Midpoint[InternalCorner[2], InternalCorner[3]] - (Distance[Corner[capText, 2], Corner[capText, 1]], Distance[Corner[capText, 4], Corner[capText, 1]] / 2) + Vector[Corner[capText, 1], CapA], If[0 ≤ capNum < 5, floor(2capNum) / 2, 0] ≟ 3, InternalCorner[3] - (Distance[Corner[capText, 2], Corner[capText, 1]], Distance[Corner[capText, 4], Corner[capText, 1]]) + Vector[Corner[capText, 1], CapA], If[0 ≤ capNum < 5, floor(2capNum) / 2, 0] ≟ 3.5, Midpoint[InternalCorner[3], InternalCorner[4]] - (Distance[Corner[capText, 2], Corner[capText, 1]] / 2, Distance[Corner[capText, 4], Corner[capText, 1]]) + Vector[Corner[capText, 1], CapA], If[0 ≤ capNum < 5, floor(2capNum) / 2, 0] ≟ 4, InternalCorner[4] - (0, Distance[Corner[capText, 4], Corner[capText, 1]]) + Vector[Corner[capText, 1], CapA], If[0 ≤ capNum < 5, floor(2capNum) / 2, 0] ≟ 4.5, Midpoint[InternalCorner[1], InternalCorner[4]] - (0, Distance[Corner[capText, 4], Corner[capText, 1]] / 2) + Vector[Corner[capText, 1], CapA]]