Excelで幾何学模様を自動作図するツールを作りました|リサージュ・トロコイド曲線
- yuji fukami
- 2 日前
- 読了時間: 6分
このツールでできること
7つのパラメータ(R, r, D, N, a, b, M)の値を変えるだけで、複雑な幾何学模様がその場で描き変わるExcelマクロツールです。数学の講師の方向けのレッスンに対応する形で作った実装例の一つで、リサージュ曲線の周期性と内トロコイドの回転運動を組み合わせた曲線を、ワークシート上に直接作図します。
まずは下の動画で、実際の動作をご覧ください。
パラメータのセルを選ぶと増減ボタンが現れ、ボタンを押すたびに数値が変わり、それに合わせて曲線が描き直されていきます。値を少しずつ動かしながら「ちょうどいい形」を探す、という使い方ができます。
なお、この記事ではExcel側の実装方法を中心に紹介します。曲線そのものの数式や数学的な成り立ちについては、曼荼羅エクストリームの数学的原理のページで解説していますので、そちらを参照してください。また、同じ曲線をブラウザ上で描けるWebアプリ版(曼荼羅エクストリーム)も公開しています。Excelを開かなくても、スライダーを動かすだけで模様の変化を試せます。
解説動画
このツールの内容について、コメントを付けながら解説した動画を公開しています。実際の操作の様子や、どういう考え方で作ったのかを話しているので、こちらも併せてご覧ください。
数学などを教えている講師の方向けのレッスンに対応する形で作ったもので、「Excelでこういう実装例も作れます」という一例としてご覧いただければと思います。
ダウンロード
マクロ付きのExcelブック本体を下記からダウンロードできます。実際にパラメータを動かして、どんな模様が描けるか試してみてください。
主な機能
ここからは、このツールに組み込んでいる主な機能を紹介します。それぞれの機能で使っている汎用プロシージャには個別の解説記事があるので、実装の詳細はそちらを参照してください。
参考ページ・Webアプリ版の起動
シート上部のボタンから、曲線の数学的な原理を解説したページと、同じ曲線をブラウザ上で描けるWebアプリ版を開けます。

それぞれのボタンから開くページは、次の2つです。
曼荼羅エクストリームの数学的原理:この曲線がどういう数式で描かれているのかを解説したページ
Webアプリ版(曼荼羅エクストリーム):同じ曲線をブラウザ上で描けるツール。スライダーでパラメータを動かせるほか、SVG・JPG・PNGでの出力にも対応しています
ボタンを押すと、既定のブラウザで対応するページが開きます。この処理には OpenURL という汎用プロシージャを使っていて、URLの文字列を渡すだけで既定のブラウザを起動できます。ツールから関連する解説ページやWeb版へ誘導したいとき、この方法なら数行で実装できます。
パラメータの値増減ボタン
パラメータのセルを選択すると、そのセルの右に増減ボタンが自動的に表示されます。

パラメータごとに増減の幅と上限・下限が違うので、選んだセルに応じたボタンが出るようにしています。ボタンを押すと値が変わり、それをきっかけに曲線が再描画されます。
この仕組みには EventShowSpinButton_Multi を使っています。増減の幅を複数指定できるので、粗く動かして当たりを付けてから細かく詰める、という調整ができます。
線の色・背景色の変更
「線の色」「背景色」のセルの塗りつぶし色を変えて、隣のボタンを押すと、その色が曲線に反映されます。

また「塗潰し設定」のセルは、ダブルクリックするだけでONとOFFが切り替わります。この切り替えには EventChangeValueFromDropdownlist を使っていて、ドロップダウンリストを開かずに次の候補へ順送りできます。
曲線はポリラインとして作図
描かれた曲線は画像ではなく、ワークシート上のシェイプ(ポリライン)として作図されています。図形を右クリックして「頂点の編集」を選ぶと、曲線が多数の頂点でつながった線であることが確認できます。

計算で求めたXY座標の一覧を、そのままシート上の図形にしています。ここには2つの汎用プロシージャを使っています。
ConvXYListForSheetCenter:数学のグラフの座標(右がX・上がY)を、ワークシートの作図座標(右がLeft・下がTop)に変換します。この変換をしないと、上下が反転した図形が描かれてしまいます。
DrawPolyLineAddPolyLine:変換後の座標を AddPolyline メソッドでポリラインとして作図します。
画像出力
作図した曲線は、画像ファイルとして保存できます。「画像出力」ボタンはそのままのサイズで、「画像出力(ピクセル数指定)」ボタンは指定した横幅ピクセル数で出力します。

出力するファイル名には、そのとき設定していたパラメータの値をすべて並べています(例:9_4_0.71_21_6.911_-6.911_344_OFF.jpg)。あとから画像を見返したときに、どのパラメータで描いたものかがファイル名だけで分かるようにするためです。
この処理には OutputShapeToPicture を使っています。Excelにはシェイプを直接画像ファイルにする機能がないため、内部ではグラフ(ChartObject)を経由して書き出しています。
ボタンの色変化演出
このツールに置いてあるボタンは、クリックすると一瞬だけ色が変わって元に戻ります。押した手応えを分かりやすくするための小さな演出です。
これには ChangePushedButtonColor を使っています。ボタンごとに元の色から自動でクリック時の色を計算する応用版も用意しているので、色をいちいち指定しなくても、複数のボタンに統一感のある演出を持たせられます。
全体のコード構成
シートモジュール側は、イベントを受け取って各機能へ中継するだけの薄い層にしています。
標準モジュールは機能ごとに分けています。
入力補助:パラメータのセルを選択したときに増減ボタンを配置する
作図:パラメータの変更を検知して曲線を再計算・再作図する
画像出力:作図済みのシェイプを画像ファイルへ出力する
参考ページ:外部URLをブラウザで開く
アドインから:個人用アドインに置いてある汎用プロシージャ群
このツールで使っている汎用プロシージャの多くは、他の案件でも使い回している共通の部品です。そのため、それぞれの部品には個別の解説記事を用意していて、このツール側のコードは「部品をどう組み合わせるか」だけに集中できるようにしています。汎用プロシージャを部品として蓄積しておくと、新しいツールを作るときの手間が大きく減ります。
まとめ
Excelのワークシート上で、パラメータを動かしながら幾何学模様を描けるツールを紹介しました。個々の機能はどれも汎用プロシージャの組み合わせで作られていて、それぞれの実装の詳細は下記の記事で解説しています。
OpenURL:指定したURLを既定のブラウザで起動する
EventShowSpinButton_Multi:セルを選択すると増減ボタンが自動表示される
EventChangeValueFromDropdownlist:ダブルクリックでドロップダウンの値を切り替える
ConvXYListForSheetCenter:XY座標をワークシートの作図座標に変換する
DrawPolyLineAddPolyLine:座標の配列からポリラインを作図する
OutputShapeToPicture:ワークシート上の図形を画像ファイルとして出力する
ChangePushedButtonColor:クリックした図形の色を一瞬変える
ブック本体はダウンロードできるようにしてありますので、実際に動かしながらコードを覗いてみてください。
曲線そのものの数式や、ブラウザ上で試せるWeb版については、下記のページで公開しています。



