2023年4月19日水曜日

20230419 00c 正六角形の説明に 斜め円柱 追加

 blender python で


円柱を作る オブジェクト名 付けて

半径 0.1


両端が

2,0,-2 と

0,0,0


0,-2,-2 と

0,0,0


円柱 2本を 作って






# コレクションを作成

import bpy


collection_name = "時空 斜線 軌跡"

if collection_name not in bpy.data.collections:

    zionad_collection = bpy.data.collections.new(collection_name)

    bpy.context.scene.collection.children.link(zionad_collection)

else:

    zionad_collection = bpy.data.collections[collection_name]







import bpy
import math
import mathutils

# オブジェクト名を指定
obj_name = "cylinder"

# 半径と高さを指定
radius = 0.1
height = 2

# 2つの座標を指定
p1 = mathutils.Vector((2, 0, -2))
p2 = mathutils.Vector((0, -2, -2))

# 座標の中心点を計算
center = (p1 + p2) / 2

# 2点間の距離を計算
distance = (p2 - p1).length

# 回転を計算
direction = (p2 - p1).normalized()
up = mathutils.Vector((0, 0, 1))
rotation = up.rotation_difference(direction).to_euler()

# 頂点座標を計算
vertices = []
for i in range(4):
    angle = 2 * math.pi * i / 4
    x = radius * math.cos(angle)
    y = radius * math.sin(angle)
    z = height
    vertex = mathutils.Vector((x, y, z))
    vertices.append(vertex)

# 座標を回転
for vertex in vertices:
    vertex.rotate(rotation)

# 座標を移動
for vertex in vertices:
    vertex += center

# メッシュを作成し、オブジェクトを作成
mesh = bpy.data.meshes.new(obj_name)
mesh.from_pydata(vertices, [], [(0, 1, 2), (0, 2, 3), (0, 3, 1), (1, 2, 3)])
mesh.update()

obj = bpy.data.objects.new(obj_name, mesh)
bpy.context.scene.collection.objects.link(obj)
obj.data.bevel_depth = radius