2023年4月18日火曜日

内接 外接 正六角形 厚さ なし  20230418 tue



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つのオブジェクトを作成します。内接正六角形は"内接正六角形"という名前で、外接正六角形は"外接正六角形"という名前で保存されます。