import math
edge_length = 4 * math.pi / 3
print(edge_length)
2/(3**(0.5))
# 半径4/(3**(0.5))の円周に 内接する正六角形
import bpy
import math
# 半径と中心座標の設定
radius = 4 / (3 ** (0.5))
center = (0, -3 ** (0.5), 0)
# 正六角形の頂点座標の計算
vertices = []
for i in range(6):
angle = math.radians(60 * i)
x = center[0] + radius * math.cos(angle)
y = center[1] + radius * math.sin(angle)
z = center[2]
vertices.append((x, y, z))
# メッシュオブジェクトの作成
mesh = bpy.data.meshes.new(name="Hexagon")
mesh.from_pydata(vertices, [], [(0, 1, 2), (0, 2, 3), (0, 3, 4), (0, 4, 5), (0, 5, 1), (1, 5, 4, 3, 2)])
# オブジェクトの作成とシーンへの追加
obj = bpy.data.objects.new(name="Hexagon", object_data=mesh)
bpy.context.scene.collection.objects.link(obj)
# オブジェクト名を設定する
obj.name = "外接正六角形"
# 半径2の円周に 内接する正六角形
import bpy
import math
# 半径と中心座標の設定
radius = 2
center = (0, -3 ** (0.5), 0)
# 正六角形の頂点座標の計算
vertices = []
for i in range(6):
angle = math.radians(60 * i)
x = center[0] + radius * math.cos(angle)
y = center[1] + radius * math.sin(angle)
z = center[2]
vertices.append((x, y, z))
# メッシュオブジェクトの作成
mesh = bpy.data.meshes.new(name="Hexagon")
mesh.from_pydata(vertices, [], [(0, 1, 2), (0, 2, 3), (0, 3, 4), (0, 4, 5), (0, 5, 1), (1, 5, 4, 3, 2)])
# オブジェクトの作成とシーンへの追加
obj = bpy.data.objects.new(name="Hexagon", object_data=mesh)
bpy.context.scene.collection.objects.link(obj)
# オブジェクト名を設定する
obj.name = "内接正六角形"
# 半径 2/(3**(0.5)) の トーラス 0,ー√3,0
# 半径 2/(3**(0.5)) の トーラス 0,ー√3,0
import bpy
import math
from math import radians
# トーラスを作成する
bpy.ops.mesh.primitive_torus_add(major_radius=4/(3**(0.5)), minor_radius=0.05)
# 作成したトーラスを選択する
torus = bpy.context.active_object
# 回転させる軸を選択する
zion_xyz = 'zana'
if zion_xyz == 'xana':
# 軸を中心に90度回転させる
torus.rotation_euler[0] = radians(0)
torus.rotation_euler[1] = radians(90)
torus.rotation_euler[2] = radians(0)
# X軸方向に伸ばす
torus.scale[0] = 1
torus.scale[1] = 1
torus.scale[2] = 1
elif zion_xyz == 'yana':
# 軸を中心に90度回転させる
torus.rotation_euler[0] = radians(90)
torus.rotation_euler[1] = radians(0)
torus.rotation_euler[2] = radians(0)
# Y軸方向に伸ばす
torus.scale[0] = 3
torus.scale[1] = 3
torus.scale[2] = 3
elif zion_xyz == 'zana':
# Z軸を中心に90度回転させる
torus.rotation_euler[0] = radians(0)
torus.rotation_euler[1] = radians(0)
torus.rotation_euler[2] = radians(0)
# Z軸方向に伸ばす
torus.scale[0] = 1
torus.scale[1] = 1
torus.scale[2] = 1
else:
print('Invalid rotation axis selected.')
# トーラスの位置を変更する
torus.location = (0, -3**(0.5), 0)
# オブジェクト名を変更する
torus.name = "torus_半径_2/(3**(0.5))_radius"
# 半径 2 の トーラス 0,ー√3,0
import bpy
import math
from math import radians
# トーラスを作成する
bpy.ops.mesh.primitive_torus_add(major_radius= 2, minor_radius=0.05)
# 作成したトーラスを選択する
torus = bpy.context.active_object
# 回転させる軸を選択する
zion_xyz = 'zana'
if zion_xyz == 'xana':
# 軸を中心に90度回転させる
torus.rotation_euler[0] = radians(0)
torus.rotation_euler[1] = radians(90)
torus.rotation_euler[2] = radians(0)
# X軸方向に伸ばす
torus.scale[0] = 1
torus.scale[1] = 1
torus.scale[2] = 1
elif zion_xyz == 'yana':
# 軸を中心に90度回転させる
torus.rotation_euler[0] = radians(90)
torus.rotation_euler[1] = radians(0)
torus.rotation_euler[2] = radians(0)
# Y軸方向に伸ばす
torus.scale[0] = 3
torus.scale[1] = 3
torus.scale[2] = 3
elif zion_xyz == 'zana':
# Z軸を中心に90度回転させる
torus.rotation_euler[0] = radians(0)
torus.rotation_euler[1] = radians(0)
torus.rotation_euler[2] = radians(0)
# Z軸方向に伸ばす
torus.scale[0] = 1
torus.scale[1] = 1
torus.scale[2] = 1
else:
print('Invalid rotation axis selected.')
# トーラスの位置を変更する
torus.location = (0, -3**(0.5), 0)
# オブジェクト名を変更する
torus.name = "torus_2_radius"
# 電車列車 6長さ用 半径 (3**2 +3)**(0.5)の トーラス 0,ー√3,0
import bpy
import math
from math import radians
# トーラスを作成する
bpy.ops.mesh.primitive_torus_add(major_radius= (3**2 +3)**(0.5), minor_radius=0.05)
# 作成したトーラスを選択する
torus = bpy.context.active_object
# 回転させる軸を選択する
zion_xyz = 'zana'
if zion_xyz == 'xana':
# 軸を中心に90度回転させる
torus.rotation_euler[0] = radians(0)
torus.rotation_euler[1] = radians(90)
torus.rotation_euler[2] = radians(0)
# X軸方向に伸ばす
torus.scale[0] = 1
torus.scale[1] = 1
torus.scale[2] = 1
elif zion_xyz == 'yana':
# 軸を中心に90度回転させる
torus.rotation_euler[0] = radians(90)
torus.rotation_euler[1] = radians(0)
torus.rotation_euler[2] = radians(0)
# Y軸方向に伸ばす
torus.scale[0] = 3
torus.scale[1] = 3
torus.scale[2] = 3
elif zion_xyz == 'zana':
# Z軸を中心に90度回転させる
torus.rotation_euler[0] = radians(0)
torus.rotation_euler[1] = radians(0)
torus.rotation_euler[2] = radians(0)
# Z軸方向に伸ばす
torus.scale[0] = 1
torus.scale[1] = 1
torus.scale[2] = 1
else:
print('Invalid rotation axis selected.')
# トーラスの位置を変更する
torus.location = (0, -3**(0.5), 0)
# オブジェクト名を変更する
torus.name = "torus_電車列車6長さ対応_radius"
このコードは、半径2の円周に内接する正六角形と、その円周に外接する正六角形の2つのオブジェクトを作成します。内接正六角形は"内接正六角形"
という名前で、外接正六角形は"外接正六角形"
という名前で保存されます。