※タイトル 図形を回転したり座標を回転する機能 ※作者 スクリプツ・ラボ有限会社 ※ 改訂記録 ※ ※ 2026.10.02 Mind9のguilubの拡張機能として作成 ※ 当面は本ソース単独で使います。アプリケーションからは ※ [ "rotate.src"を コンパイル。 ] ※ の形で利用してください。 ※ 2026.10.10 「中心と半径と角度を指定し直線のIDを取得」を ※ test-rotate.src 内からこちらに移動した。 ※ 改訂終り ※ グローバル。 座標群を捨てるとは (X1、Y1、X2、Y2 ・・、・・、座標数 → ・) (個数を) 二倍し イベント引数を捨てる 。 透過的に多点座標をダンプとは (X1、Y1、X2、Y2 ・・、・・、座標数 → <同左>) _個数は 変数 _位置は 変数 複写し 二倍したものを _個数に 入れ _個数を _位置に 入れ ※←一番奥から処理する _個数が ゼロ? ならば 「なし」を 一行表示し 終り つぎに _個数を 2で 割り 回数指定し (TOS=パラメータ1、パラメータ2、・・、座標数) 回数が 1より 大きい ならば 「 | 」を 表示し つぎに _位置で 個数含みn番目のデータを得て 数値表示し 「,」を 表示し _位置から 一つ引き 個数含みn番目のデータを得て 数値表示し 2だけ _位置を 減少し 繰り返し 改行し 。 多点座標をダンプとは (X1、Y1、X2、Y2 ・・、・・、座標数 → ・) 透過的に多点座標をダンプし 座標群を捨てる 。 座標変換最大は 数値 50。 ローカル。 透過的に座標の個数をチェックとは 処理単語 .N (個数 → 個数、真偽) 複写したものが 1から 座標変換最大の 範囲?。 このメッセージで透過的に座標の個数を検証とは 処理単語 NS XSW (個数 → 個数) ErrorMessageは 文字列 ErrorMessageに 入れ 透過的に座標の個数をチェックし 偽? ならば (個数を) 捨て ErrorMessageで 重大エラー つぎに 。 ピクセル位置を検証とは (XまたはY → 真偽) ※−−−−−−−−−−−−−−−−−−−−−−−−−−−※ ※ 注:呼び出し側では変数に代入する前にこれを呼ぶこと ※ ※ (文字列かも知れないという検査をおこなうため) ※ ※−−−−−−−−−−−−−−−−−−−−−−−−−−−※ 複写し バイト数フィールドが ゼロ以外 ならば ※−−−−−−−−−※ ※ 文字列はエラー ※ ※−−−−−−−−−※ 捨て 偽を 返し 終り つぎに ※−−−−※ ※ 整数 ※ ※−−−−※ 絶対値をとり 0から 画面縦横最高の 範囲? でなければ ※−−−−−−−−−−−※ ※ サイズが過小・過大 ※ ※−−−−−−−−−−−※ 偽を 返し 終り つぎに 真を 返すこと。 透過的にX/Y位置を検証とは (X位置、Y位置 → [X位置、Y位置、真] | 偽) (TOS=Xsize、Ysize) 交換し (TOS=Ysize、Xsize) 複写し ピクセル位置を検証し 偽? ならば 二つ捨て (TOS=空) 偽を 返し 終り つぎに 交換し (TOS=Xsize、Ysize) 複写し ピクセル位置を検証し 偽? ならば 二つ捨て (TOS=空) 偽を 返し 終り つぎに (TOS=Xsize、Ysize) 真を 返すこと 。 一つの座標を回転とは (X、Y、中心X、中心Y、sin積、cos積 → X、Y) _X座標は 変数 _Y座標は 変数 _中心Xは 変数 _中心Yは 変数 _相対Xは 変数 _相対Yは 変数 _sin積は 小数変数 _cos積は 小数変数 _X座標と _Y座標と _中心Xと _中心Yと _sin積と _cos積に 入れ [_相対X := _X座標 − _中心X] [_相対Y := _Y座標 − _中心Y] [_相対X * _cos積 − _相対Y * _sin積 ]を 整数化し _中心Xを 加え [_相対X * _sin積 + _相対Y * _cos積 ]を 整数化し _中心Yを 加え 。 グローバル。 座標群を回転とは 処理単語 NN XSW (X1、Y1、X2、Y2 ・・ 座標数、中心X、中心Y、角度 → X1、Y1、X2、Y2、個数) _個数は 変数 _中心Xは 変数 _中心Yは 変数 _角度は 変数 _角度小数は 小数変数 _θは 小数変数 _sin積は 小数変数 _cos積は 小数変数 _座標位置は 変数 _元のXは 変数 _元のYは 変数 変換後Xは 座標変換最大の 変数 変換後Yは 座標変換最大の 変数 ※ 文言個数は 「座標群を回転に与える座標個数が誤りです」 ※ 文言座標は 「座標群を回転に与える座標が誤りです」 ※ 文言IDは 「座標群を回転に与える図形IDが誤りです」 ※ 本体とは (TOS=X1、Y1、X2、Y2 ・・、個数、中心X、中心Y、角度) _中心Xと _中心Yと _角度に 入れ (TOS=X1、Y1、X2、Y2 ・・、個数) 文言個数で このメッセージで透過的に座標の個数を検証し 複写し _個数に 入れ (個数を) 捨て ※ _角度を 小数化し _角度小数に 入れ radian(_角度小数)を _θに 入れ 0.0から sin(_θ)を f引き _sin積に 入れ ※←数学とはY軸が逆なので補正 cos(_θ)を _cos積に 入れ (TOS=X1、Y1、X2、Y2 ・・) _個数を _座標位置に 入れ _個数を 回数指定し 透過的にX/Y位置を検証し 偽? ならば 文言座標で 重大エラー つぎに _元のXと _元のYに 入れ _元のXと _元のYをつみ _中心Xと _中心Yをつみ _sin積と _cos積をつみ 一つの座標を回転し 変換後X(_座標位置)と 変換後Y(_座標位置)に 入れ _座標位置を 一つ減少し 繰り返し ※ (TOS=空) _個数を 回数指定し 変換後X(回数)と 変換後Y(回数)をつみ 繰り返し _個数といっしょに 返す 。 透過的に多点座標の中心を計算とは 処理単語 NN XSW (X1、Y1、X2、Y2、・・、座標数 → X1、Y1、X2、Y2、・・、座標数) _座標数は 変数 _Xは 変数 _Yは 変数 _累積Xは 変数 _累積Yは 変数 _位置は 変数 ※ 文言個数は 「透過的に多点座標の中心を計算に与える座標個数が誤りです」 ※ 文言座標は 「透過的に多点座標の中心を計算に与える座標が誤りです」 ※ 文言IDは 「透過的に多点座標の中心を計算に与える図形IDが誤りです」 ※ 本体とは (TOS=X1、Y1、X2、Y2、・・、座標数) 文言個数で このメッセージで透過的に座標の個数を検証し 複写し _座標数に 入れ ※ (TOS=X1、Y1、X2、Y2、・・、座標数) _累積Xを クリアし _累積Yを クリアし _座標数を 二倍し _位置に 入れ ※←一番奥から処理する _座標数を 回数指定し (TOS=X1、Y1、X2、Y2、・・、座標数) _位置で 個数含みn番目のデータを得て _Xに 入れ _位置を 一つ引き 個数含みn番目のデータを得て _Yに 入れ _Xと _Yをつみ 透過的にX/Y位置を検証し 偽? ならば 文言座標で 重大エラー つぎに (スタックのXとYを) 二つ捨て _累積Xに _Xを 加え _累積Xに 入れ _累積Yに _Yを 加え _累積Yに 入れ 2だけ _位置を 減少し 繰り返し ※ (TOS=X1、Y1、X2、Y2 ・・、座標数) _累積Xをつみ _座標数で 割り _累積Yをつみ _座標数で 割り (TOS=X1、Y1、X2、Y2 ・・、座標数、中心X、中心Y) 。 極座標を直交座標に変換とは (原点X、原点Y、距離、角度 → X、Y) 原点Xは 変数 原点Yは 変数 距離は 変数 角度は 変数 原点Xと 原点Yと 距離と 角度に 入れ 「極座標を直交座標に変換との入口」で このメッセージでスタック検査し ※/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\※ [原点X + 距離] [ 原点Y ]と 1個をつみ 原点X、原点Y 角度で 座標群を回転し ※\_____________/※ (TOS=X,Y、個数) (個数を) 捨て (TOS=X,Y) 。 ※/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\※ ※ 直線の中央座標と半径(長さの半分)を ※ ※ 指定するような描画のための処理単語 ※ 中心と半径と角度を指定し直線のIDを取得とは (キャンバスID、中心X、中心Y、半径、角度 → 図形ID) _キャンバスは 変数 中心Xは 変数 中心Yは 変数 半径1は 変数 角度は 変数 _左端Xは 変数 _左端Yは 変数 _右端Xは 変数 _右端Yは 変数 _キャンバスと 中心Xと 中心Yと 半径1と 角度に 入れ 「中心と半径と角度を指定し直線のIDを取得の入口」で このメッセージでスタック検査し _キャンバスをつみ ※/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\※ 中心Xから 半径1を 引き 中心Yをつみ 中心Xに 半径1を 加え、 中心Yをつみ 2個をつみ 中心Xと 中心Yと 角度で 座標群を回転し ※\_____________/※ (TOS=キャンバス、X1,Y1,X2,Y2、個数) (個数を) 捨て (TOS=キャンバス、X1,Y1,X2,Y2) 直線のIDを取得すること 。 ※ ※ ※\_________________________/※ ※ 終り(rotate.src) ※