Blenderでコッホ曲線の万華鏡を作った

ちょろっとPythonスクリプトを書けば自動化ができる。コッホ曲線の鏡を作ってみた。
フリーのツールをダウンロードして数十行コードを書くだけでこんなのが作れるとはいい時代になったものだ。レンダリング時間もノートPCで作業しているのに一番長いので5分程度だし。


import BPyAddMesh
import Blender
from math import cos, sin, pi
Vector = Blender.Mathutils.Vector

def turtle():
    verts = []
    faces = []
    context = dict(x=0, y=0, dir = (1, 0))
    verts.append(Vector(context["x"], context["y"], 0))
    verts.append(Vector(context["x"], context["y"], 1))
    
    def forward(mag):
        dir = context["dir"]
        context["x"] += dir[0] * mag 
        context["y"] += dir[1] * mag 

        verts.append(Vector(context["x"], context["y"], 0))
        verts.append(Vector(context["x"], context["y"], 1))
        i = len(verts)
        faces.append((i - 1, i - 2, i - 4, i - 3))

    def rot(rad):
        dir = context["dir"]
        context["dir"] = (
            dir[0] * cos(rad) - dir[1] * sin(rad),
            dir[0] * sin(rad) + dir[1] * cos(rad))
    

    def deg(x):
        return 2 * pi / 360 * x

    def koch(level=1):
        if level == 0:
            forward(1)
        else:
            koch(level - 1)
            rot(deg(60))
            koch(level - 1)
            rot(deg(-120))
            koch(level - 1)
            rot(deg(60))
            koch(level - 1)

    koch(1)
    rot(deg(-120))
    koch(1)
    rot(dega(-120))
    koch(1)

    BPyAddMesh.add_mesh_simple('Turtle', verts, [], faces)

turtle()