ハイパーピクトグラミング 例6 錯視

posted in: 開発者ブログ | 0

ハイパーピクトグラミングで錯視を作成しました。

人型ピクトグラムを反転させ左右に移動させてみたり、線を増やしたり。

どのようにみえますか?

 

 

 

 

 

説明

 

① 画面の準備

<pa id=“pa” type=“n” scale=“1” background-color=“#ffffff”>
</pa>

🔹 <pa ...>

描画エリア(キャンバス)をつくっています。

  • id="pa"
    → この画面を「pa」という名前で使います。

  • type="n"
    → 通常モード。

  • scale="1"
    → 拡大率1倍。

  • background-color="#ffffff"
    → 背景色は白。


② 縦線をたくさん描く

for(let i=-320; i<=320; i+=40){
pa.L(“”,i,320,i,320);
};

🔹 for(let i=-320; i<=320; i+=40)

  • i を -320 から 320 まで

  • 40ずつ増やしながらくり返す

つまり
-320, -280, -240 … 320 まで動く


🔹 pa.L("",i,-320,i,320);

線を描く命令です。

pa.L(色, x1, y1, x2, y2);

ここでは

  • x1 = i

  • y1 = -320

  • x2 = i

  • y2 = 320

つまり

👉 上から下までの縦線

それを40ピクセル間隔で並べています。

🟦 結果:縦しま模様の背景


③ 1人目のピクトグラム

pa.HP(“pic1”);

→ 「pic1」という人を作る


pic1.CL(“#0000ff”);

→ 色を青にする


pic1.R(“body”,90,0);

→ 体(body)を90度回転

つまり横向きになります。


pic1.SC(0.3);

→ サイズを0.3倍(小さくする)


④ 2人目のピクトグラム

pa.HP(“pic2”);

→ 「pic2」を作る


pic2.CL(“#ffff00”);

→ 色を黄色にする


pic2.M(0,100);

→ 上に100移動する


pic2.R(“body”,90,0);

→ 横向きに回転


pic2.SC(0.3);

→ 小さくする


⑤ 10回くり返しアニメーション

for (let i = 0; i < 10; i++) {

→ 10回くり返す


🔹 左へ少し動く

pic1.MW(300,0,2);
pic2.MW(300,0,2);

MW(x,y,分割数)
なめらかに移動します。

  • 左へ300動く

  • 2ステップで


🔹 反転

pic1.R(“body”,180,0);
pic2.R(“body”,180,0);

→ 180度回転
→ 進行方向が逆になる


🔹 右へ大きく移動

pic1.MW(600,0,4);
pic2.MW(600,0,4);

→ 右へ600動く
→ 4ステップで


🔹 もう一度反転

pic1.R(“body”,180,0);
pic2.R(“body”,180,0);

→ また向きを変える


🔹 左へ戻る

pic1.MW(300,0,2);
pic2.MW(300,0,2);

→ 元の中央へ戻る

 

プログラム

錯視

 

 

 

 

 

 

[ピクトグラミング] バンコクのトイレサイン、なぜ色が日本と違うのか

posted in: 開発者ブログ | 0

2026-02-23_17.45.09

画像に写っているのは、バンコクの建物や公共施設に見られる「トイレ」案内サインです。このサインには、左側に青い女性のピクトグラム、右側に黄色い男性のピクトグラムが描かれ、その右側には「TOILET」という英語表記と、タイ語の「ห้องน้ำ」(ハーン・ナム、=トイレ)が記されています。さらに、左向きの赤い矢印が付いており、トイレの方向を示しています。このサインの特徴として、日本で一般的に見られる「女性=ピンク、男性=青」の色配置とは異なり、女性を青、男性を黄色と表現している点が目立ちます。これは、単なるデザインの違いではなく、文化的・実務的な背景が関係している可能性があります。

まず、このサインの本質は「利用者の方向性と区別を明確にするための視覚的案内」です。ピクトグラムは、抽象的な「トイレ」や「男女」の概念を、視覚的に具体的に表現するための手段です。この場合、女性を青、男性を黄色と表現しているのは、色の心理的・文化的な意味を活かしたデザイン選択と考えられます。日本では、女性をピンク、男性を青と表現することが一般的ですが、タイや他の東南アジア諸国では、色の使い方が異なります。例えば、タイでは黄色は「王族・権力」を連想させる色であり、男性を表すのに適しているとされることがあります。また、青は「冷静・落ち着き」を連想させる色として、女性のイメージに使われることがあります。このように、色の使い方は、文化や社会の価値観に根ざしている場合があります。

このサインが設置される場所は、バンコクのホテル、駅、商業施設、学校、病院など、多くの公共空間に見られます。これらの場所では、利用者の国籍や言語が多様であり、英語やタイ語の表記に加えて、国際的に通用するピクトグラムが求められます。また、方向性を明確にするための矢印が付いている点も、利用者の迷いを減らすための工夫です。このように、このサインは、単なる案内サインではなく、文化的・実務的な観点から設計された「多言語・多国籍対応」のサインです。

利用者への注意点として、このサインの色配置が日本と異なる点を認識することが重要です。日本では、女性をピンク、男性を青と表現しているため、このサインを見た利用者は、色の配置が「逆」であると感じることがあります。しかし、これは単なるデザインの違いではなく、文化的・実務的な配慮が反映されたものである可能性があります。また、このサインには、タイ語の「ห้องน้ำ」が記されている点も、利用者への注意点として挙げられます。タイ語を理解できない利用者は、この表記を無視してしまう可能性があります。そのため、英語の「TOILET」が併記されている点は、非常に重要な工夫です。

関連規格や設計観点から見ると、このサインは、国際的な「トイレ案内サイン」の基準に準拠している可能性があります。国際標準化機構(ISO)や、国際建築協会(IAC)などでは、トイレ案内サインのデザインや色の使い方が規定されています。例えば、ISO 7001では、女性を青、男性を黄色と表現することが推奨されています。また、このサインは、視覚的・文化的な配慮を考慮したデザインであるため、国際的な「多言語・多国籍対応」のサインとして設計されている可能性があります。

誤解されやすい点としては、このサインの色配置が「逆」であると感じてしまう点が挙げられます。日本では、女性をピンク、男性を青と表現しているため、このサインを見た利用者は、色の配置が「逆」であると感じてしまう可能性があります。しかし、これは単なるデザインの違いではなく、文化的・実務的な配慮が反映されたものである可能性があります。また、このサインには、タイ語の「ห้องน้ำ」が記されている点も、利用者への注意点として挙げられます。タイ語を理解できない利用者は、この表記を無視してしまう可能性があります。そのため、英語の「TOILET」が併記されている点は、非常に重要な工夫です。

関連する補足として、このサインのデザインは、タイの文化や社会の価値観に根ざしている可能性があります。例えば、タイでは、黄色は「王族・権力」を連想させる色であり、男性を表すのに適しているとされることがあります。また、青は「冷静・落ち着き」を連想させる色として、女性のイメージに使われることがあります。このように、色の使い方は、文化や社会の価値観に根ざしている場合があります。また、このサインは、国際的な「トイレ案内サイン」の基準に準拠している可能性があります。国際標準化機構(ISO)や、国際建築協会(IAC)などでは、トイレ案内サインのデザインや色の使い方が規定されています。例えば、ISO 7001では、女性を青、男性を黄色と表現することが推奨されています。また、このサインは、視覚的・文化的な配慮を考慮したデザインであるため、国際的な「多言語・多国籍対応」のサインとして設計されている可能性があります。

ハイパーピクトグラミング 例5 黄色の花

posted in: 開発者ブログ | 0

ハイパーピクトグラミングのペンの機能を使い、黄色い花を描いてみました。
今回はBODYにペンを持たせましたが、LUAやLLAなどでも描けるので試してみてください。
持たせる場所で違う形になったりしておもしろいですよ。

 

 

 

 

 

 

 

プログラム

 

黄色の花

 

ハイパーピクトグラミングにアクセスしていただければ使い方の説明も記載されています。

 

 

 

ブログ作成者 Reiko Sugiyama

 

ハイパーピクトグラミング 例2 推し活バンド

posted in: 開発者ブログ | 0

ハイパーピクトグラミングのグループの機能を使ってドラムやギターマイクなどの作成と、ギターを持って移動させる機能を使ってます。
色も透明化してます。

 

 

 

 

プログラム クリックしてね

バンド

 

 

バンドのアニメを読み解く

ドラム、ボーカル、2人のギタリストを、独自タグ(<hp>, <ellipse>, <line>, <group> など)と簡単なアニメ API(M, MW, RW, W)で動かすプログラムです。指定された6つの観点でポイントを整理します。

グループ化

  • ギターは部品(胴=楕円×2+ネック=線)を <group id="guitar" x="200" y="150" color="#222325"> ... </group> にまとめています。

  • グループには座標や色が付き、子要素はそれを継承します(子で色を指定した場合は上書き)。

  • まとまりで移動できるので、guitar.MW(-100, 0, waveTime) のように ギター全体を一度の命令で動かせる のが利点。もしグループ化していなければ、胴やネックを個別に動かす必要が出ます。

ギターの透明化

  • 透明度は 8桁の16進色の末尾2桁(アルファ)で表現。
    例:#808080aa(グレー+aaの半透明)、#99ffffaa(シアン+半透明)。

  • これにより本体の上に重ねたハイライトや、身体のパーツが透けて見える表現が可能になります(ピックガードやボディの“光り感”を演出)。

ギターが動いてとまって、また動く

  • 反復アニメは perform()stop() の分離で実現:

    • perform() 内で

      • pic3.M(-100, 0, waveTime); ... pic3.M(100, 0, waveTime);(右側ギタリストの本体を左右へ)

      • guitar.MW(-100, 0, waveTime); ... guitar.MW(100, 0, waveTime);ギターのグループも追従)

      • RW("LLA", ±waveAngle, waveTime)(腕を振る)

    • stop()W(stopTime) を各オブジェクトに出して一斉に待機

  • 最後に perform(); stop(); perform(); stop(); ... と並べて、動→静→動の“止めどころ”を作っています。

  • ここで使う API の読み方(本コードの文脈)

    • M(dx, dy, t) / MW(dx, dy, t):位置アニメーション(グループや個体を t 秒で平行移動)。

    • RW(target, angle, t):指定部位(例:"LLA"=左前腕)の回転。

    • W(t):t 秒間待機。
      *ギターを本体と別オブジェクトにしておくと、将来“ギターだけ止める/遅らせる”などの演出も簡単になります。

線の使い方

  • ネックやスティック、スタンド、マイク<line x1 y1 x2 y2 width color> で作成。

  • 太さは width、色は16進(不透明/半透明どちらも可)。

  • ドラムスティック(id="stick")のように 線オブジェクト自体をアニメstick.MW(0, 30, waveTime))して叩く動きを出しています。

  • 直線は“方向性”を強く示すので、演奏の勢い視線の誘導に有効。

楕円の使い方

  • ドラム面

    • 外側の濃いリム #333132<ellipse ... width="75" height="75">

    • 内側の皮 #fffff2<ellipse ... width="65" height="65">
      同心の2枚で“縁取り”と“面”を分ける

  • ギター胴

    • 角度付き(angle="20")の楕円を重ね、輪郭と質量感を表現。

  • マーカー/ハイライト:半透明楕円を重ねて**当たり(ストローク領域)**を見せています。

楕円を2重にするとどうなるか

  • 色や大きさを変えて重ねると視覚効果が生まれます:

    1. 縁取り効果(ドラムのように外=濃色・内=淡色で厚みが出る)

    2. 重なりの合成(半透明同士は重なった部分が濃くなる=“影/ハイライト”や“グロス感”を演出)

    3. 方向の強調angle を変えると、歪みの差で動きの向きが伝わる)


ちょっとした注意

  • <ellipse ...></ellipse>1 のようにタグ直後の 1 はそのまま描画される可能性があるので、不要なら削除を。

  • 使っていない stick1 は、将来の追加演出に使うか、未使用なら整理しておくとコードが読みやすくなります。

以上。グループ化で“道具”をまとめ、半透明楕円の重ねと線の強さで“演奏の勢い”を作り、perform()/stop() の分離で“止めどころ”を演出しているのが、このプログラムの肝です。

ブログ作成者 Reiko Sugiyama