長方形と正四面体パズル

難しい問題が目の前に現れた時に、考え込んで止まってしまう場合があります。熟慮した解答で一発でクリアするのは快感でしょう。天才です。
手足や体を動かして自ら動きながら考えるのは天才風ではないですが、それはそれで楽しいものです。長方形と正四面体パズルは、天才肌では無い方に送る無窮の時間です。

遊び方は簡単です。
14個のピースを箱に詰めたり、積み上げて正四面体に組み上げましょう。考え込んでいないでピースを手に持って動かしましょう。慣れてくればピースの向きを変えて自由自在に配置することができるようになります。
ピース1個は4個の小さな立体が接着されてできています。14個のピースは14 x 4 = 56なので56個の立体で作られています。すべてのピースを平面に並べた一辺が7と8の長方形も7 x 8で56個の立体です。ピースを積み上げた一辺が6個の正四面体は 1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+4+5)+(1+2+3+4+5+6) で 56個の立体です。

ピースの説明

テトラへクスと呼ばれている正六角形を4個並べた7種類のピースをベースにしているパズルです。ピースの名前は、形が似ているアルファベットにちなんで、C型、I型、J型、P型、S型、Y型、Z型と呼ばれています。各ピースは「内接球を持つ切稜立方体」を4個接着したものです。写真で見てみましょう。

C型ピース2個

I型ピース2個

J型ピース鏡像各1個

P型ピース鏡像各1個

S型ピース2個

Y型ピース鏡像各1個

Z型ピース2個

C型、I型、S型、Z型は同じものが2個ありますが、J型、P型、Y型は鏡像関係にある各1個です。

内接球を持つ切稜立方体

このパズルで使っている「内接球を持つ切稜立方体」は一辺が30mmの立方体のすべての辺(稜)を45度で切り落としたものです。下の写真手前右側が立方体、手前左側が内接球を持つ切稜立方体です。パズルでは写真奥左側のように内接球を持つ切稜立方体の六角形の3面が接する頂点が真上を向くように傾けて使います。画面奥の右側のように立方体の頂点が真上を向いているような置き方に対応しています。

一辺が30mmのアカマツの角材から立方体を切り出します。

一辺が30mmの立方体の12個の辺を45度の角度で切り落としたものが18の面を持つ切稜立方体となります。切り落とす深さを調整して18の面すべてで直径30mmの球が内接するようにしたものが、「内接球を持つ切稜立方体」です。加工治具は3Dプリンターで作りました。

元々の立方体の面は小さな正方形として6個残り、切り落としてできた12面は細長い六角形となります。このパズルでは六角形の面が接して長方形や正四面体が出来上がります。下の図はZ型ピースの上に「内接球を持つ切稜立方体」を乗せようとしている様子です。赤、青、緑の3個の面で作られた窪みの中に「内接球を持つ切稜立方体」の下の面が収まります。

下の方から見た図を示します。接する面は完全に一致するようになっています。

つまり「内接球を持つ切稜立方体」の上下の面は180度回転した形なので、乗せた時に収まりが良いということになります。このような特徴があるので、J型、P型、Y型は鏡像関係にある一対となりました。

球であればJ型、P型、Y型も同じものが2個になります。球ならば置くことのできた配置でも「内接球を持つ切稜立方体」を使ったパズルでは窪みに収まらなくなってしまいます。そのような制約があるため「内接球を持つ切稜立方体」で作ったパズルの方が8倍程度難しくなると考えられます。

なぜ「内接球を持つ切稜立方体」を使うのか

Sendai Micro Maker Faire 2020(2020.1.25)では「球体による長方形と正四面体パズル」の初期検討モデルを展示しました。商店街などが年末のくじ引きに使うガラガラポンのプラスチック玉で作りました。小さくてたくさん手に入ったので一辺が8個の正多面体にしました。1+(1+2)+(1+2+3)+    +(1+2+3+    +n)が4で割り切れれば同じ構成のピースで組むことができます。

Maker Faire Tokyo 2020(2020.10.3/4)では木製モデルを展示しました。檜の湯玉用の木球を購入して穴と細い丸棒で球同士を接着しました。会場では多くの方に見ていただきましたが、気合を入れて完成させた方が一名いらっしゃいました。

球はシンプルで美しくて良いのですが、地元の木材を使って球体を自分で作るのは難しいのが難です。

正四面体パズルは高校の化学の授業で説明される面心立方格子構造です。球以外の立体を考えた時に、菱形12面体という多面体は面心立方格子構造で完全に空間を充填できるのでこのパズルに最もふさわしい立体と考えました。

でも、角材から六角柱に加工してさらに鉛筆を削るようなイメージで三面ずつ加工するため少し手間がかかります。その時に「内接球を持つ切稜立方体」も考えましたが、立方体の面影を残しているので下のように積み上げるピラミッドのような四角錐のパズルにしかできないと思ってしまいました。

 

半年以上経ってから「内接球を持つ切稜立方体」も方向を変えれば面心立方格子構造で積むことができることに気がつきました。治具も簡単なので採用ということになりました。

 

長方形と正四面体パズルは難しい?

初めてこのパズルに触った人は少し難しいと感じるかもしれません。小さい頃から直交座標に慣れ親しんでいるので、六角形が連結されたピースを箱詰めしたり、正四面体の面に沿ってピースを組み立てたりする経験があまりなかったからです。

正方形と立方体のパズルは、直交座標なので小学生でも積み木感覚で遊ぶことができます。

スクエアキューブパズル

長方形と正四面体パズルも慣れればひねりの効いた置き方を工夫したりして楽しくなっていくでしょう。このパズルは正解がたくさんあります。BurrToolsというプログラムで解の数を調べることができるので試してみました。長方形への詰め方は球形タイプの場合で約150万通りあるようです。これは1.7時間で終了しました。正四面体の組み方は、プログラムが終了するまでに500年かかるという表示が出たので、7時間動かしたところで止めたのですが、その時点で約200万通りでした。コンピュータにとっても手間のかかるパズルのようですが、膨大な組み合わせがあることはわかりました。長方形よりも正四面体の方が多様な組み方があるということわかりました。

感覚的には長方形よりも正四面体の方が簡単で、数個ピースを適当に置いても工夫すれば組み上げることができるようです。

無料で使えるパズルソルバーBurrTools(Win/Mac/Linux版)

数日かけても問題が解けないと元々解がない問題なのだろうかと考えてしまいがちです。そんな時にはパズルソルバーを使ってみましょう。
要領さえわかれば使い方は簡単です。使い方を紹介する記事を書きましたので上から順番にご覧ください。
パズルソルバーBurrToolsでスクエアキューブパズルを解く
パズルソルバーBurrToolsで正四面体パズルを解く

 

木のぬくもりを感じながら無窮の時間を楽しんでください。

 

いわてメイカー展@11/28に出展します

今年もいわてメイカー展@11/28に出展します。

https://fabterrace.site/makerfesiwate/

山の地形の3Dプリントを紹介します。岩手山、鳥海山、秋田駒ヶ岳などの3Dプリントを手にとって登山路などを辿ると思い出が蘇ることでしょう。

趣味なら無料で使えるLabVIEW Communityもデモします。

 

LabVIEW Communityの講習会@11/18岩手県

LabVIEW Communityの電子ブック「LabVIEW CommunityEditionでプログラミングを楽しもう」をベースにして講習会を開催することになりました。

日 時:令和3年11月18日(木) 9:00~17:00 (受付8:30~9:00)

会 場:岩手県立大学 地域連携棟2F 組込みシステム実験室 (滝沢市巣子152-89)

アクセス: http://i-mos.iwate-pu.ac.jp/access/

対象者:LabVIEWに興味があり研究や技術開発のためにLabVIEWプログラミングを始めたいと考えている方、「LabVIEW CommunityEditionでプログラミングを楽しもう」をダウンロードして一読していただき、内容に興味を覚えた方

<無料電子ブックのダウンロードURL> http://quatsys.com/labview/1109/lvproraku.jp.html

定  員:8名(先着順)

申込期限:令和3年11月15日(月)17:00

受 講 料:無 料

詳細は下記リンクから

http://i-mos.iwate-pu.ac.jp/docs/2021101400016/

対象となりそうな方がいらっしゃったら紹介をお願いします。

好きな山域を3Dプリントしよう

山の立体ディスプレイ
遠くから眺めてよし、頂を目指すもよし。頂から遠くの山を眺めるもよし。
思い出の山、これから登る山を3Dプリントしてみましょう。地理院地図の3Dツールを使って好きな山域のSTLファイルを作成します。STLファイルは小さな3角形のメッシュで3次元形状を表現するファイル形式で、多くのアプリケーションで共通に使われています。地理院地図の3Dツールは緯度、経度に沿った長方形の範囲の標高データをSTLファイルで出力します。そのまま3Dプリントしても良いのですが、手に持って色々な方向から山域を眺めるには外形が円形の方が便利ですから、ここでは外径115mmのディスク状にする方法を説明します。
黒部渓谷・立山・剱岳を含む山域の3Dプリントの例です。PLAクリアフィラメントでプリントしてフルカラーLEDで下から照らすと立体感が増します。

OLYMPUS DIGITAL CAMERA

大まかな作成手順
(1) 地理院地図の3Dツールを使って立体ディスプレイを作る山域(正方形)のSTLファイルを作成します。
(2)Fusion360を使って直径115mmの円筒状にくり抜くツールとなるSTLファイルを作成します。
(3) Fusion360に山域のSTLファイルを読み込んで縮尺を調整します。
(4)くり抜きツールのSTLファイルも読み込んで、山域メッシュとツールメッシュの両方に含まれる部分を結合ツール(交差)で取り出してSTL形式で保存します。
(5) 3Dプリンターでプリントします。

 

(1) 地理院地図の3Dツールで山域のSTLファイルを作成
まず地理院地図で作成する山域を表示します。ここでは富士山で説明します。
「作図・ファイル」ツールでプリントしたい範囲に円を描きましょう。
3Dツールでは3D化する範囲の指定方法として「大(縦横2048px)」「小(縦横1024px)」「カスタム」がありますので、「カスタム」を選び、四隅の選択点をドラッグして先ほど描いた円に外接する正方形を指定して「OK」ボタンを押します。
ブラウザに新しいタブが作られて指定した範囲の3次元の地図が表示されます。
画面の右下端に3種類のファイルのダウンロードボタンが表示されますので、STLファイルをダウンロードします。画面の立体表示には等高線などが描かれていますが、STLファイルには描かれません。dem.stlという名前になっていますので、MtFuji.stlなど分かりやすい名前に変更すると良いでしょう。このSTLデータは一辺(長方形の場合は長辺)が150mmのデータになっています。

(2) 円筒形状のツールSTLファイルの作成(2回目以降は不要)
Fusion360のソリッドモードで、左上のブラウザの原点タブにあるXY面を右クリックしてスケッチを作成します。原点を中心として直径115mmの円を描いてスケッチを終了します。スケッチで描いた円をクリックして押し出しツールで115mmの長さの円筒を作成します。ブラウザのボディタブで円筒のボディを右クリックして「メッシュとして保存」を選択します。Cylinder.stlとして保存し、このデザインを閉じます。

(3) 山域STLファイルの読み込みと縮尺変更
新規デザインで新しいページを開きます。「挿入」メニューの「メッシュを挿入」を選択し、MtFuji.stlを開きます。この時、「上方向を反転」ボタンを押して、Y軸とZ軸の方向を反転します。「中心」ボタンを押して、メッシュデータの中心を原点に移動し、「地面に移動」ボタンを押してデータの底面がXY面と一致させます。
メッシュモードを選択し、「修正→メッシュを尺度指定」を使って一辺150mmの正方形の範囲のデータを一辺115mmに縮小します。縮小してもデータの底面がXY面になるように、「点」(縮小拡大の基準点)に底面の中心を指定します。視点を「下」にすれば選択しやすくなります。「エンティティ」は縮小拡大するメッシュを指定します。150mmを115mmに縮小したいので縮小倍率は0.77(≒115/150)と入力して「OK」ボタンを押します。データの底面がXY面にあることを確認してください。
(4) ツールSTLファイルの読み込みと結合ツール(交差)
Cylinder.stlを読み込みます。メッシュモードの結合ツール(交差)を選択し、「ターゲットボディ」にMtFujiメッシュボディ、「ツールボディ」にCylinderメッシュボディを指定します。もしも厚みが大きくてプリント時間が余分にかかりそうな場合は、結合ツールを実行する前にMtFujiメッシュボディをZ軸のマイナス側に移動します。下げすぎて底に穴を開けないように注意します。
作成したメッシュボディを右クリックし、「メッシュとして保存」を選んで、例えばMtFujiDisk.stlのようにファイル名をつけて保存します。

(5) 3Dプリンターでプリント
作成したSTLファイル(たとえば、MtFujiDisk.stl)を3Dプリンターでプリントします。

OLYMPUS DIGITAL CAMERA

LibreOffice DrawのSVGファイルをAI風のSVGファイルに変換する方法

背景
レーザー加工用の切断データはパス(Path)と呼ばれるベクトルデータで作成します。周知のようにベクトルグラフィックソフトのデファクトスタンダードはAdobe Illustrator(AI)ですが比較的高価なため、趣味として切断データを作成する場合にはLibreOffice Drawなど無料のベクトルグラフィックソフトを使います。

課題
自宅でLibreOffice Drawを使って切断データを作成し、SVG形式のファイルをUSBメモリに保存してレーザー加工機のあるファブ施設に向かいます。ファブ施設ではデファクトスタンダードなAIがレーザー加工機のインターフェースとなっている場合が多いので、LibreOffice DrawのSVGファイルをAIに読み込ませます。AIで開くと、一見、作成した時と同じ図形のように表示されますが、実際は同じ図形が二重になっています。そのままレーザー加工機で加工を行うとレーザーが二度通過するために多くの時間がかかったり、切断面が焦げてしまいます。慣れないAIを使って手作業で重なったパスを取り除くのはかなり苦痛な作業です。AIはプロが素早く作業ができることを目指していて、素人が使うようにはできていないのです。
SVGファイルならば全て二重になるかといえば、そんなことはありません。AIで作成した切断データをSVG形式で保存して、それをAIで読み込んだ場合は二重になるような不具合は生じません。
SVGファイルはテキストで書かれているので、テキストエディタで開いて両方のファイルを比べてみると、AIで作成したSVGファイルはヘッダーとパスしかないシンプルなファイルであることがわかりました。つまり、AI風なSVGならOK!!

無料のベクトルグラフィックソフトで作成した加工図を使って不具合なくレーザー加工をするために、「LibreOffice DrawのSVGファイルをAIで作成したSVGファイルのように変換したい」

解決方法
LibreOffice DrawのSVGファイルからAIが必要とする部分だけを抽出して新しいファイルを作成する。テキストファイルの文字列操作なので、ほとんどのプログラム言語で容易に作成することができるはずです。ここではMac OS、Windows 10、Linux用に実行ファイルを作成できるProcessing(バージョン3.3.5)を使用しました。個々のPCで実行するためには無料のJava実行環境をインストールする必要があります。Mac OSとWindows 10では動作を確認しましたが、Linuxでの動作は未確認です。

プログラムを実行し、ユーザーが変換するファイルを指定すると、「xml:space=”preserve”>」が含まれるヘッダー行と「<path fill=”none”」が含まれるパスデータだけを抽出して、ファイルの末尾に「</svg>」を置きます。そしてファイル名の末尾に「_ai」を追加した新しいファイルを作成します。

ProcessingプログラムファイルとサンプルSVGファイル
実行ファイル(Javaランタイムエンジンを別途ダウンロードする必要がある)
Windows64bit
Windows32bit
Mac OS
Linux64
Linux32
LinuxArm64
LinuxArmV6hf

その他
InkscapeのSVGファイルも同様な処理をすればAI風なSVGにできると思いますが、私にはInkscapeが使いづらいので確認する意欲がありません。Inkscapeの好きな人は多いと思いますのでどなたか検討していただけるとありがたいと感じてくれる人が多いのではないかと思います。

LibreOffice Drawは使いやすいですよ。

 

無料で使えるドローソフトGravit Designerの紹介

ドローソフトの定番はイラストレータですが、プロ用の高機能・高価格なアプリケーションなので自宅での趣味に使う人にはお勧めできません。

これまでは無料で使えるオープンオフィスドローを勧めていたのですが、これからはGravit Designerです。

レーザーカッターの加工図を描く時にどの程度使えるか理解してもらえるように
ベクターデータ作成の手引き
を作成しました。ぜひダウンロードして目を通してみてください。

画像のトレースについて付録に追加しました。(b04—-2020.11.04)

 

 

 

 

Maker Faire Tokyo 2020に出展します

今年は「チームいわて」で参加します。コロナウィルスへの対応で、チームメンバーに展示を託すリモート参加です。出展作品は次の2点です。
(1)「LabVIEW Community Edition用の無料の電子ブック紹介」
(2)「球体をテトラヘクス結合したピースによるピラミッドパズル」

「LabVIEW Community Edition用の無料の電子ブック紹介」

LabVIEWは研究開発や工場の自動化などで使われているプログラミング環境で、計測・制御分野で強みを持っています。今年の5月に非商用であれば無料で使えるCommunity Editionがリリースされましたので、ArduinoやRaspberry Piを使っているメイカーに使い方を紹介したいと考えています。

電子ブックのダウンロードサイト
日本語版
英語版
初めてLabVIEWに触る人でもこの本だけで使いこなせるように、29個のサンプルプログラムを用意しました。きっとプログラムを動かしながら理解を深められると思います。
電子ブックの内容
1章 : LabVIEWで学ぶプログラミング
2章 : LabVIEWコミュニティ版を使ってみよう
3章 : グラフィカルプログラミングにふれる
4章 : 自分のアプリを作ってみる
5章 : LabVIEWとArduino
6章 : LEDの特性を調べてみよう
7章 : 半導体センサを使ってみる

「球体をテトラヘクス結合したピースによるピラミッドパズル」

六角形を4個並べた図形をテトラへクスと言い、7種類の図形があります。

OLYMPUS DIGITAL CAMERA

六角形の内接円でテトラへクスを作ると下のようになります。
薄い円形の板ではなく球でピースを作ります。
7種類を2セットで、14個のピースを作るには56個の球が必要です。
56個の球を積み上げると一辺が6個の正四面体になります。
1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+4+5)+(1+2+3+4+5+6) = 56

さて、球体をテトラヘクス結合した14個のピースでうまく正四面体が出来上がるでしょうか?

OLYMPUS DIGITAL CAMERA
OLYMPUS DIGITAL CAMERA
OLYMPUS DIGITAL CAMERA
OLYMPUS DIGITAL CAMERA

難しいパズルだと感じるかもしれませんが、組立手順はたくさんあります。

問題です。球に外接する立体を使って同じように正四面体を作るにはどんな立体を使えば良いでしょうか?

OLYMPUS DIGITAL CAMERA

菱形12面体と言います。表裏が120°ずれているので、表裏違いのピースが3種類増えます。表裏違いのピースを組みとして、7組14個でパズルを作ったのですが、球のパズルよりも8倍難しいと考えられます。

来場者にこんな話をしたかったのですが、今年は残念です。

ESP32でI2Sを使ってみる

ESP32はWiFiやBluetoothが使える高機能なボードです。I2S(Inter-IC Sound)というサウンドをデジタル通信できる機能も持っていて、I2S対応のマイクモジュールやアンプモジュールを接続してArduino IDEで制御することができます。

OLYMPUS DIGITAL CAMERA

ESP32のプログラムガイド」や「ESP32のI2Sマイク研究」、「I2Sマイク、ESP32、Arduino、SPH0645LM4H」などの記事を参考にしながら試してみました。

結論から書くと、マイクからの入力をイヤフォンで聞くことができましたが、音質がどうこうというレベルにはなっていません。タイムラグをまったく感じないのは今後に期待できるかもしれません。

興味のある方への参考と、自分のための備忘録

ESP32は「 MH-ET LIVE MiniKit」を使用しました。マイクは「Sipeed 1マイクモジュール」2個、アンプは「GY-PCM5102」を使用しました。

ESP32のI2Sは2本あり、入力か出力どちらかを選択できます。今回はI2S_0をマイク入力、I2S_1をアンプ出力に使います。それぞれバッファメモリが使えますので、マイクの入力バッファからデータを読んで、32ビット符号付整数に変換して、処理(たんなる掛け算)して、バイト配列に戻してから、アンプ出力のバッファに書き込みます。delay()を入れずに繰り返して呼び出していますが、アンプ出力を見る限りではバッファがうまく丸く収めてくれているようです。

OLYMPUS DIGITAL CAMERA

マイクモジュールの配線
DA — IO18(1kΩでGNDに接続)
CK — IO23
LR — L:3.3V, R:GND
WS — IO19
V — 3.3V
G — GND

OLYMPUS DIGITAL CAMERA

アンプモジュールの配線
SCK — GND
BCK — IO16
DIN — IO21
LCK — IO17
GND — GND
VIN — 3.3V

OLYMPUS DIGITAL CAMERA

 

フルカラーウェルカムボードの製作

OLYMPUS DIGITAL CAMERA

壁時計に使っているESP32と32×8 LEDパネルのスケッチを書き換えてSendai Micro Maker Faire用のウェルカムボードを作りました。

使用部品と配線はESP32と32×8フルカラーLEDでデジタル壁時計をつくるを参照してください。
外装についてはデジタル壁時計の組み立てを参照してください。

英数字の5×8フォントを作って表示させたのが新しい点です。フォントデータが96行あるので見苦しいですが、それ以外はシンプルに書いたつもりです。左端から右端に向かってLEDの色が変化していくプログラムに、”フォントピクセルだけ表示する”という条件をつけています。

フォントデータはAppleⅡeの資料を見かけたのでデータ化してみました。