こんにちは|こんばんは。カエルのアイコンで活動しております @kyamaz です。
はじめに
本稿は、数学的な対象を Blender の Geometory Nodes を使って扱うエントリです。複素関数 $ \sin{z} $ を描いてみましょう。
Blender Geometry Nodes で描く
まず最初に、Scene Collection に Plane Mesh を追加します。[3D Viewport - Object Mode] にて「Add->Mesh->Plane」で追加し、[Outline - ViewLayer] にて名前を「complex_function」に変更しておきます。このオブジェントを選択した状態で [Geometory Node Editor - Modifier] の「+NEW」でモディファイアを追加し、この名前を [Properties] にて「complex_function」としておきます。
Grid を準備する
複素平面をXY軸にマッピングするためのGridを準備します。いくつかの定数を次のように定めて利用します。
- SizeX:PlaneのX軸のサイズ
- SizeY:PlaneのY軸のサイズ
- VertecesXY:PlaneをGridにする分割数
- Scale:倍率(1未満で指定するとZoomIn、1以上でZoomOut)
次の「Named Attribute」にそれぞれの定数の値を保存します。
-
gridsize_x
:: Float <- SizeX -
gridsize_y
:: Float <- SizeY -
scale
:: Float <- Scale -
uv_map
:: Vector <- Gridより(本稿では利用しない)
パラメーターを初期化する
GridのなかのPointごとに処理されますが、そのPointに対応する複素数を上記の定数を使って求め、「Named Attribute」の z
:: Vector にその値を保持します。
その前に、汎用的な定数 pi
と e
を「Named Attribute」に保持しておきます。(ただし、本稿では pi
, e
とも利用しません。汎用的な用例として記載してあります。)
sin(z) を計算する
$ z = x + iy \quad (x,y \in \mathbb{R}, z \in \mathbb{C}) $として、
$ \sin(z) = \sin(x) \cosh(y) + i \cos(x) \sinh(y) $ となります。
実部 $\Re(\sin(z)) = \sin(x) \cosh(y)$を z軸に割り当てると次のように設定します。
虚部 $\Im(\sin(z)) = \cos(x) \sinh(y)$を z軸に割り当てると次のように設定します。
以上で、Geometory Nodes で設定する全体像となります。
おわりに
複素関数をイメージしやすく 3D で表すのには、Blender は良いツールに感じます。
本稿の環境
本稿のために使用した環境は以下となります。
- macOS: Sonoma 14.5 (chip: Apple M1)
- Blender: 4.2.0
- PYTHON INTERACTIVE CONSOLE 3.11.7 [Clang 15.0.0]
ご一読いただきまして有り難うございます。
(●)(●) Happy Hacking!
/"" __""\