2023年8月18日金曜日

20230818 ミンコフスキー時空図









BLENDER PYTHON


トーラスを作る

メジャー半径1

マイナー半径 0.01

中心 0,0,ー1

中心 0,0,0

中心 0,0,1



名前は 位置を使って 小数点2桁まで


import bpy

import math


# トーラスのパラメータ

major_radius = 1.0

minor_radius = 0.01

positions = [(0, 0, -1), (0, 0, 0), (0, 0, 1)]


# トーラスを生成する関数

def create_torus(name, major_radius, minor_radius, position):

    bpy.ops.mesh.primitive_torus_add(

        align='WORLD',

        location=position,

        rotation=(0, 0, 0),

        major_radius=major_radius,

        minor_radius=minor_radius

    )

    torus = bpy.context.active_object

    torus.name = name


# 位置情報から名前を生成する関数

def generate_name(position):

    return f"Torus_{position[0]:.2f}_{position[1]:.2f}_{position[2]:.2f}"


# トーラスを生成

for pos in positions:

    torus_name = generate_name(pos)

    create_torus(torus_name, major_radius, minor_radius, pos)






球体を作る
半径 0.03

-1,0,-1 から
0,0,0 に等間隔で
11個の球体を作る

名前は"ミンコフスキー"





球体を作る

半径 0.03


-1,0,-1 から

0,0,0 に等間隔で

11個の球体を作る


名前は"ミンコフスキー"



import bpy

import math


# 球体のパラメータ

radius = 0.03

num_spheres = 11

start_position = (-1, 0, -1)

end_position = (0, 0, 0)


# 球体を生成する関数

def create_sphere(name, radius, position):

    bpy.ops.mesh.primitive_uv_sphere_add(

        radius=radius,

        location=position

    )

    sphere = bpy.context.active_object

    sphere.name = name


# 位置情報から名前を生成する関数

def generate_name(base_name, index):

    return f"{base_name}_{index}"


# 等間隔に球体を生成

for i in range(num_spheres):

    t = i / (num_spheres - 1)

    position = (

        start_position[0] + t * (end_position[0] - start_position[0]),

        start_position[1] + t * (end_position[1] - start_position[1]),

        start_position[2] + t * (end_position[2] - start_position[2])

    )

    sphere_name = generate_name("ミンコフスキー", i)

    create_sphere(sphere_name, radius, position)





球体を作る

半径 0.03


-1,0,0 から

0,0,0 に等間隔で

11個の球体を作る


名前は"線路 rail"



import bpy

import math


# 球体のパラメータ

radius = 0.03

num_spheres = 11

start_position = (-1, 0, 0)

end_position = (0, 0, 0)


# 球体を生成する関数

def create_sphere(name, radius, position):

    bpy.ops.mesh.primitive_uv_sphere_add(

        radius=radius,

        location=position

    )

    sphere = bpy.context.active_object

    sphere.name = name


# 位置情報から名前を生成する関数

def generate_name(base_name, index):

    return f"{base_name}_{index}"


# 等間隔に球体を生成

for i in range(num_spheres):

    t = i / (num_spheres - 1)

    position = (

        start_position[0] + t * (end_position[0] - start_position[0]),

        start_position[1] + t * (end_position[1] - start_position[1]),

        start_position[2] + t * (end_position[2] - start_position[2])

    )

    sphere_name = generate_name("線路_rail", i)

    create_sphere(sphere_name, radius, position)





球体を作る

半径 0.03


-1,0,0 から

0,0,0 に等間隔で

11個の球体を作る

この11個の球体を

x成分と z成分は変えず

x成分の数値を利用し

x^2+y^2=1の円周位置に移動させる


名前は"円周 screen"








 

 

 

 

#  コレクションを作る 重複の場合 作らない

 

import bpy

 

# List of collection names

collection_names = [ 


"円周 screen",

"ミンコフスキー",

"線路 rail"


 

]

 

# Function to create a new collection if it doesn't exist

def create_collection_if_not_exists(name):

    if name not in bpy.data.collections:

        collection = bpy.data.collections.new(name)

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

 

# Create collections

for name in collection_names:

    create_collection_if_not_exists(name)

 

 

 





 

基本系 配布 001 単位円 torus と xyz軸 円柱

https://drive.google.com/file/d/1adh0pC0n5MUfaPnsQcab8CnTvHu_JqLg/view?usp=drive_link

 

基本系 配布 002 単位2長さ balls

https://drive.google.com/file/d/1vyg5oFWmw_TK8nwp5TmVSfLH94I6rTaY/view?usp=drive_link

 

基本系 配布 003 単位2長さ balls 光時計セット 

https://drive.google.com/file/d/1u2Rn_nVBcewe39Vokua9C5n25cdivyyL/view?usp=drive_link

 

blender 基本系 配布 カタログ 2023 - zionad_mainのブログ https://mokuji000zionad.hatenablog.com/entry/2023/07/31/095208 






以下 ChatGPT との対話 修正記録 と メモ・ノート


ああああああああああああああああああああああああああああああああああああああああああああ