はじめに
年配の方はどこかで見たことがある絵だと思われたかもしれません。
昔、日経さんが企業の成績を人の顔に見立てる「NEEDS FACE」(綴りが違うかもしれません)という手法を使われていていました。グラフィックを使うサンプルプログラムとして面白いと思ったので、よく似た絵を使うことを日経さんから許諾を得て作成し「Mind」という日本語プログラミング言語の初版(1985年)を出す時にこのサンプルプログラムをパッケージに含めました。
本家さんと同じようにポイントはパラメータによって顔が変化する点です。目の傾きと口の上げ下げを変化させられ、これにより「元気な顔」と「困った顔」の2種を描画しています。
プログラム表記
さて、仕掛けや見栄えは後回しにしてプログラムの上位部(メインのあたり)に注目してください。
~略~
顔全体をかくとは
顔の下地をかき
目をかき 眉をかき 鼻をかき 口をかくこと。
メインとは
キャンバスを設置処理し
既定値設定し
顔位置を左に設定し 元気な顔を設定し 顔全体をかく
顔位置を右に設定し 困った顔を設定し 顔全体をかくこと。
Mindをまったく知らない方でも、上のプログラムを見ればこれが何をしようとしているかお分かりになるかと思います。
一般的なプログラム(コードと言わずにあえてプログラムと言います)の表記とは違うなと、あるいは「これプログラムなの?」と思われるかもしれません。
他方、一般的なプログラムでは日本語ではなく英字が使われています(あえて「英語で」とは言いません)、ほかに記号が多く使われます。( ) とか ; とか { } などの記号です。
上のMindのプログラムではそれらすべて登場しないことで「プログラムのように見えない」のですが、これで正しく動作するなら一般的なプログラミング言語で多用される記号のようなものはプログラムの本質ではない(本当はプログラムとしては必要ない)ことが分かっていただけると思います。
私の考える「プログラム」の定義は「コンピュータへの指示を文字として表したもの」です。上記はその通りになっています。プログラムって本質を突き詰めればこんなもので、あまり大上段に構える必要は無いのですね。
プログラムの説明
大昔のMind初版(PC-9801用のグラフィック用)用に書かれたものをMind9(Mind Version 9)向け修正したものです。
顔の輪郭(下地)は2つの円を重ねて表現します。旧プログラムはタイル機能を使って疑似的に肌色を出していましたが今やその必要は無いので直接に肌色を使って塗りつぶします。
目は、眉と目本体に分かれます。
眉は直線を傾けて描きます。外付けの図形回転ライブラリを使っています。
目本体のうち白目部分は同じ座標回転で斜めの楕円を描いています。黒目は円なので回転しても同じなので変化させる必要はありません。
口は円弧を使いますが、中心点を口の上に置くか下に置くかで変化させています。
━━━━━━━━━━━━━━━━┓
┃ ソースコード(face2.src) を表示 ┃
┗━━━━━━━━━━━━━━━━┛
※タイトル Mindサンプルプログラム - 元気な顔と困った顔
※ファイル名 face2
※ライブラリ gullib
※副ソース
※ Copyright (C) 1985 Rigy Corporation ※
※ Copyright (C) 2026 Scripts Lab Inc. ※
※説明 グラフィックを使って元気な顔と困った顔を画面に表示します
※ 改訂記録 ※
※ 2026.09.15 Mind9向けに修正
※ 2026.10.10 9801libは使わず、guilib直結にする
※ 関連し、座標のY,X のスタック積みをX,Yの順に変更
※ 改訂終り ※
"rotate.src"を コンパイルする。
キャンバスの右下座標は 640と 400。 ※9801のディスプレイサイズ
キャンバスIDは ID。
キャンバスを設置処理とは (・ → ・)
※
親ID・サイズ・背景色を積むとは (・ → Xサイズ、Yサイズ)
メインウィンドゥをつみ
キャンバスの右下座標をつみ
黒色をつむ
※
本体とは
親ID・サイズ・背景色を積み キャンバスを立て キャンバスIDに 入れること。
描画色は 文字列実体 長さ 24桁。
角度は 変数。 ※単位は度
※/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\※
回転角設定とは (回転角(度) --> ・)
角度に 入れること。
※\_________________/※
開始角度は 変数。
終了角度は 変数。
※/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\※
開始/終了角設定とは (開始角、終了角 --> ・)
開始角度と 終了角度に 入れること。
※\_________________/※
画面中心Xは 変数。
画面中心Yは 変数。
※/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\※
顔位置モードは 変数。 (0:左 1:右)
顔X位置は (・ → X位置)
顔位置モードが 真?
ならば 480をつみ
さもなければ
160をつみ
つぎに。
顔Y位置は (・ → Y位置)
画面中心Yを 返すこと。
顔位置を左に設定とは
顔位置モードを クリア。
顔位置を右に設定とは
1を 顔位置モードに 入れる。
※\___________________/※
顔サイズは ワード変数。
顔上下長さ%は ワード変数。
顔上半分Y半径%は ワード変数。
顔上半分X半径%は ワード変数。
顔下半分Y半径%は ワード変数。
顔下半分X半径%は ワード変数。
顔サイズ既定値は 数値 100。
顔上下長さ%既定値は 数値 35。
顔上半分Y半径%既定値は 数値 100。
顔上半分X半径%既定値は 数値 120。
顔下半分Y半径%既定値は 数値 115。
顔下半分X半径%既定値は 数値 130。
顔下地既定値設定とは
顔サイズ既定値を 顔サイズに 入れる
顔上下長さ%既定値を 顔上下長さ%に 入れる
顔上半分Y半径%既定値を 顔上半分Y半径%に 入れる
顔上半分X半径%既定値を 顔上半分X半径%に 入れる
顔下半分Y半径%既定値を 顔下半分Y半径%に 入れる
顔下半分X半径%既定値を 顔下半分X半径%に 入れる。
%補正とは
(値、%値 --> 値)
掛け 100で 割る。
顔上下長さは 顔サイズを 顔上下長さ%で %補正し。
顔上半分Y半径は 顔サイズを 顔上半分Y半径%で %補正し。
顔上半分X半径は 顔サイズを 顔上半分X半径%で %補正し。
顔下半分Y半径は 顔サイズを 顔下半分Y半径%で %補正し。
顔下半分X半径は 顔サイズを 顔下半分X半径%で %補正し。
顔上半分Y位置は
顔Y位置から 顔上下長さを 引いたもの。
顔下半分Y位置は
顔Y位置に 顔上下長さを 加えたもの。
楕円を塗るとは (中心X、中心Y、X半径、Y半径 --> ・)
中心Xは 変数
中心Yは 変数
X半径は 変数
Y半径は 変数
左上Xは 変数
左上Yは 変数
右下Xは 変数
右下Yは 変数
楕円IDは 図形ID
※ ※
※ 枠線は抑制 ※
※ ※
中心Xと 中心Yと X半径と Y半径に 入れ
※
[ 左上X := 中心X - X半径 ]
[ 左上Y := 中心Y - Y半径 ]
[ 右下X := 中心X + X半径 ]
[ 右下Y := 中心Y + Y半径 ]
キャンバスIDと
左上Xと 左上Yと 右下Xと 右下Yで
楕円のIDを取得し 楕円IDに 入れ
0を 楕円IDに 線の太さを設定し
描画色を 楕円IDに 満たす色を設定し
楕円IDを 描画し
。
顔の下地をかくとは
「#fce2c4」を 描画色に 入れ ※←肌色
顔X位置と 顔上半分Y位置に 顔上半分X半径と 顔上半分Y半径で、
楕円を塗る
顔X位置と 顔下半分Y位置に 顔下半分X半径と 顔下半分Y半径で、
楕円を塗る
。
目上方向%は ワード変数。
目左右%は ワード変数。
目Y半径%は ワード変数。
目X半径%は ワード変数。
瞳半径%は ワード変数。
目上がり角度は 変数。
眉上方向%は ワード変数。
目上方向%既定値は 数値 23。
目左右%既定値は 数値 40。
目Y半径%既定値は 数値 10。
目X半径%既定値は 数値 23。
瞳半径%既定値は 数値 6。
目上がり角度既定値は 数値 7。
眉上方向%既定値は 数値 27。
目既定値設定とは
目上方向%既定値を 目上方向%に 入れる
目左右%既定値を 目左右%に 入れる
目Y半径%既定値を 目Y半径%に 入れる
目X半径%既定値を 目X半径%に 入れる
瞳半径%既定値を 瞳半径%に 入れる
目上がり角度既定値を 目上がり角度に 入れる
眉上方向%既定値を 眉上方向%に 入れる。
目上方向オフセットは
顔上半分Y半径の 目上方向%で %補正し。
目左右オフセットは
顔上半分X半径の 目左右%で %補正し。
目X半径は
顔上半分X半径の 目X半径%で %補正し。
目Y半径は
顔上半分X半径の 目Y半径%で %補正し。
瞳半径は
顔上半分X半径の 瞳半径%で %補正し。
目Y位置は
顔Y位置から 目上方向オフセットを 引く。
左目X位置は
顔X位置から 目左右オフセットを 引く。
右目X位置は
顔X位置に 目左右オフセットを 加える。
鼻上端%は ワード変数。
鼻長さ%は ワード変数。
口上がり角度は 変数。
口Y位置%は ワード変数。
口長さ%は ワード変数。
鼻上端%既定値は 数値 30。
鼻長さ%既定値は 数値 50。
口上がり角度既定値は 数値 10。
口Y位置%既定値は 数値 65。
口長さ%既定値は 数値 60。
鼻と口既定値設定とは
鼻上端%既定値を 鼻上端%に 入れる
鼻長さ%既定値を 鼻長さ%に 入れる
口上がり角度既定値を 口上がり角度に 入れる
口Y位置%既定値を 口Y位置%に 入れる
口長さ%既定値を 口長さ%に 入れる。
※※※※ 目をかく ※※※※
円半径は 変数。
左上Y座標は 変数。
左上X座標は 変数。
右下Y座標は 変数。
右下X座標は 変数。
斜めの楕円を描くとは (中心X、中心Y、X半径、Y半径、角度 → ・)
※ ※
※ 白目を描くのが目的 ※
※ ※
中心Xは 変数
中心Yは 変数
X半径は 変数
Y半径は 変数
斜め角度は 変数
左上Xは 変数
左上Yは 変数
右上Xは 変数
右上Yは 変数
左下Xは 変数
左下Yは 変数
右下Xは 変数
右下Yは 変数
図形1は 図形ID
中心Xと 中心Yと X半径と Y半径と 斜め角度に 入れ
(左下)
[ 左下X := 中心X - X半径 ]
[ 左下Y := 中心Y + Y半径 ]
(左上)
[ 左上X := 左下X ]
[ 左上Y := 中心Y - Y半径 ]
(右下)
[ 右下X := 中心X + X半径 ]
[ 右下Y := 左下Y ]
(右上)
[ 右上X := 右下X ]
[ 右上Y := 左上Y ]
キャンバスIDをつみ
左上X 左上Y 右上X 右上Yと ※多角形の座標
右下X 右下Y 左下X 左下Yと
4個で
中心X 中心Yと ※回転の中心
斜め角度で
座標群を回転し
多角形のIDを取得し 図形1に 入れ
描画色を 図形1に 線の色を設定し
2を 図形1に 線の太さを設定し
※ 3を 図形1に 線の太さを設定し
0を 図形1に スムージングを設定し
図形1を 描画し
。
暗黙の角度で斜めの楕円を描くとは (中心X、中心Y、X半径、Y半径 → ・)
角度をつみ 斜めの楕円を描くこと。
円を塗るとは (中心X、中心Y、半径 --> ・)
中心Xは 変数
中心Yは 変数
半径1は 変数
円IDは 図形ID
中心Xと 中心Yと 半径1に 入れ
キャンバスIDと
中心Xと 中心Yと 半径1で
円のIDを取得し 円IDに 入れ
描画色を 円IDに 満たす色を設定し
円IDを 描画し
。
片方の目をかくとは (中心X、中心Y、X半径、Y半径 → ・)
中心Xは 変数
中心Yは 変数
X半径は 変数
Y半径は 変数
中心Xと 中心Yと X半径と Y半径に 入れ
(白目)
黒色を 描画色に 入れ
中心Xと 中心Yと X半径と Y半径で 暗黙の角度で斜めの楕円を描き
(瞳)
黒色を 描画色に 入れ
中心X 中心Yに 瞳半径で 円を塗る
。
左目をかくとは
目上がり角度の 負数をとり 回転角設定し
左目X位置、目Y位置、目X半径、目Y半径で 片方の目をかく
。
右目をかくとは
目上がり角度を 回転角設定し
右目X位置、目Y位置、目X半径、目Y半径で 片方の目をかく。
目をかくとは
左目をかき 右目をかくこと。
※※※※ 眉をかく ※※※※
眉長さの半分とは 目X半径。
眉Y位置は
目Y位置から、
顔上半分Y半径の 眉上方向%ので %補正を
引く。
左眉をかくとは
直線IDは 図形ID
キャンバスIDをつみ
左目X位置と 眉Y位置と
眉長さの半分と 目上がり角度の 負数をとり
中心と半径と角度を指定し直線のIDを取得し 直線IDに 入れ
3を 直線IDに 線の太さを設定し
描画色を 直線IDに 線の色を設定し
直線IDを 描画し
。
右眉をかくとは
直線IDは 図形ID
キャンバスIDをつみ
右目X位置と 眉Y位置と
眉長さの半分と 目上がり角度で
中心と半径と角度を指定し直線のIDを取得し 直線IDに 入れ
3を 直線IDに 線の太さを設定し
描画色を 直線IDに 線の色を設定し
直線IDを 描画し
。
眉をかくとは
黒色を 描画色に 入れ
左眉をかき 右眉をかく。
※※※※ 鼻をかく ※※※※
鼻上端Y位置は
顔下半分Y位置から、
顔下半分Y半径の 鼻上端%で %補正を
引く。
鼻下端Y位置は
鼻上端Y位置に、
顔上半分Y半径の 鼻長さ%で %補正を
加える。
※/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\※
太い直線とは (開始X、開始Y、終了X、終了Y --> ・)
開始X座標は 変数
開始Y座標は 変数
終了X座標は 変数
終了Y座標は 変数
直線IDは 図形ID
開始X座標と 開始Y座標と 終了X座標と 終了Y座標に 入れ
キャンバスIDと
開始X座標と 開始Y座標と 終了X座標と 終了Y座標で
直線のIDを取得し 直線IDに 入れ
3を 直線IDに 線の太さを設定し
※ 2を 直線IDに 線の太さを設定し
描画色を 直線IDに 線の色を設定し
直線IDを 描画する。
※\___________________________/※
鼻をかくとは
黒色を 描画色に 入れ
顔X位置、鼻上端Y位置、顔X位置、鼻下端Y位置に 太い直線をかく。
※※※※ 口をかく ※※※※
口長さは
顔下半分X半径の 口長さ%ので %補正し。
口Y位置は
顔下半分Y位置に、
顔下半分Y半径の 口Y位置%で %補正を
加える。
口半径は 変数。
開始角は 変数。
終了角は 変数。
口開き角の半分は 変数。
口中心Y位置は 変数。
口パラメータ計算は
顔下半分Y半径に 10を 掛け、
口上がり角度を 複写し 負?
ならば 負数をとり
つぎに
複写し ゼロ?
ならば 1を 加え
つぎに
割り 口半径に 入れる
口長さに 100を 掛け 口半径で 割り 57を 掛け 100で 割り
2で 割り 口開き角の半分に 入れる
口上がり角度が 正?
ならば 270
さもなければ 90
つぎに
複写したものから 口開き角の半分を 引き 開始角に 入れ
口開き角の半分を 加え 終了角に 入れ
口上がり角度が 正?
ならば 口Y位置から 口半径を 引き
さもなければ
口Y位置に 口半径を 加え
つぎに
口中心Y位置に 入れる。
太さを指定し円弧をかくとは (中心X座標、中心Y座標、半径、太さ --> ・)
中心Xは 変数
中心Yは 変数
半径1は 変数
_太さは 変数
_描画角度は 変数
円弧IDは 図形ID
中心Xと 中心Yと 半径1と _太さに 入れる
キャンバスIDをつみ
中心Xと 中心Yと
半径1で
円弧のIDを取得し 円弧IDに 入れ
終了角度から 開始角度を 引き _描画角度に 入れ
開始角度と _描画角度を 円弧IDに 開始・描画角度を設定し
円弧単独で 円弧IDに 円弧の種類を設定
描画色を 円弧IDに 線の色を設定し
_太さを 円弧IDに 線の太さを設定し
円弧IDを 描画し
。
口をかくとは
黒色を 描画色に 入れ
口パラメータ計算し
開始角、終了角で 開始/終了角設定し
顔X位置、口中心Y位置に 口半径と 3で 太さを指定し円弧をかき
。
※※※※ メインブロック ※※※※
既定値設定とは
_Xサイズは 変数
_Yサイズは 変数
キャンバスの右下座標を _Xサイズと _Yサイズに 入れ
_Xサイズの 二分の一を 画面中心Xに 入れ
_Yサイズの 二分の一を 画面中心Yに 入れ
顔下地既定値設定し 目既定値設定し 鼻と口既定値設定し
白色を 描画色に 入れること。
元気な顔を設定とは
7度を 目上がり角度に 入れ
10度を 口上がり角度に 入れること。
困った顔を設定とは
-7度を 目上がり角度に 入れ
-10度を 口上がり角度に 入れること。
顔全体をかくとは
顔の下地をかき
目をかき 眉をかき 鼻をかき 口をかくこと。
メインとは
キャンバスを設置処理し
既定値設定し
顔位置を左に設定し 元気な顔を設定し 顔全体をかく
顔位置を右に設定し 困った顔を設定し 顔全体をかくこと。
※ 終り(face2.src) ※
━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ 座標回転の拡張ライブラリのソース(rotate.src)を表示 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛
※タイトル 図形を回転したり座標を回転する機能
※作者 スクリプツ・ラボ有限会社
※ 改訂記録 ※
※ 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) ※
--------------------
Mindのホームページ:
日本語プログラミング言語 Mind
Mindのダウンロードページ:
日本語プログラミング言語 Mind ダウンロードページ
$\tiny{(Mindで開発されたソフトウェアは多くの商用プログラム/サービスに使われた実績があります)}$
--------------------
(ソースコード埋め込みのアコーディオン表示は
@miso_develop さんの記事を参考にさせていただきました)
