見出し画像

【Blender Python】交差する円柱の共通部分の図形を描く

底面の半径が r の円柱を直角に交差させたときの共通部分の体積を求めよ。

高校数学の積分でおなじみの問題ですね。

解けるかどうかはともかく、この図形がどんな形をしているのかなかなかイメージができず苦労した記憶があります。
(「球体になるんじゃないの…?」などと思っていました。)

数学の先生が一生懸命黒板に描いてくれましたがなんだかよく分からず仕舞いでした。

そこで今回はこの図形をBlenderとPythonを使って描いてみたいと思います。
Blenderのバージョンは2.93 LTSです。

1. コード

import math
import bpy


# 既存のメッシュオブジェクトを削除
for msh in bpy.data.meshes:
   bpy.data.meshes.remove(msh)


# 1つ目の円柱
bpy.ops.mesh.primitive_cylinder_add(location=(0, 0, 0), radius=1, depth=4,
    rotation=(math.radians(0), math.radians(0), math.radians(0)), vertices=256)
cyl1 = bpy.context.object

# 2つ目の円柱
bpy.ops.mesh.primitive_cylinder_add(location=(0, 0, 0), radius=1, depth=4,
    rotation=(math.radians(90), math.radians(0), math.radians(0)), vertices=256)
cyl2 = bpy.context.object

# Modifierを追加
mod1 = cyl1.modifiers.new('bool1', 'BOOLEAN')
mod1.operation = 'INTERSECT'
mod1.object = cyl2
mod1.solver = 'EXACT'

# Modifierを適用
bpy.context.view_layer.objects.active = cyl1
bpy.ops.object.modifier_apply(modifier='bool1')

# 不要な部分を除去
bpy.data.objects.remove(cyl2, do_unlink=True)

2. 実行結果

画像1

2つの円筒によって切り取られたような図形になっているのが分かりますね。

平行投影で正面から見た図

画像2

正面から見ると正方形になっています。

平行投影で横から見た図

画像3

横から見ると円形になっています。

まとめ

交差する円柱の共通部分の図形を描いてみました。

Blenderは数学の勉強にも役立つかも知れませんね。


この記事が気に入ったらサポートをしてみませんか?