2023年7月8日土曜日

20230709 sun 天球 三角測量

 







blender python 

半径1のトーラスを作る

オブジェクトに名前を付ける


マイナー半径 0.05

トーラスの中心位置 000




# トーラス 半径1円周


import bpy


# トーラスを作成

bpy.ops.mesh.primitive_torus_add(

    align='WORLD',

    location=(0, 0, 0),

    rotation=(0, 0, 0),

    major_radius=1,

    minor_radius=0.01,

    major_segments=48,

    minor_segments=24

)


# 作成したオブジェクトに名前を付ける

obj = bpy.context.active_object

obj.name = "MyTorus"




追加のトーラスを作る

x軸を回転軸にして 90度回転





# xz 平面の 単位円 円周トーラス

import bpy

import math


# トーラスを作成

bpy.ops.mesh.primitive_torus_add(

    align='WORLD',

    location=(0, 0, 0),

    rotation=(0, 0, 0),

    major_radius=1,

    minor_radius=0.01,

    major_segments=48,

    minor_segments=24

)


# 作成したオブジェクトに名前を付ける

obj = bpy.context.active_object

obj.name = "MyTorus"


# 追加のトーラスを作成

bpy.ops.object.duplicate(linked=False)


# 回転を設定

rotation_rad = math.radians(90)  # 90度をラジアンに変換

bpy.context.active_object.rotation_euler = (rotation_rad, 0, 0)




太さ 0.05 で 円柱を 2つ作る

円柱長さ 1


円柱中心軸の中心は 1,1,0 と 1,0,0 の中間

円柱中心軸の中心は 1,-1,0 と 1,0,0 の中間位置


x軸を回転軸にして 90度回転




# 被写体 円柱

import bpy

import math


# 円柱を作成する関数

def create_cylinder(center_point, end_point, index):

    # 中心点と終点の座標から方向ベクトルと長さを計算

    direction = [end_point[i] - center_point[i] for i in range(3)]

    length = sum([i**2 for i in direction])**0.5


    # 円柱を作成

    bpy.ops.mesh.primitive_cylinder_add(

        align='WORLD',

        location=(center_point[0] + direction[0] / 2, center_point[1] + direction[1] / 2, center_point[2] + direction[2] / 2),

        depth=length,

        rotation=(math.pi/2, 0, 0),  # x軸を回転軸にして90度回転

        radius=0.015

    )


    # 作成した円柱に連番の名前を付ける

    obj = bpy.context.active_object

    obj.name = "Cylinder{}".format(index)


# 円柱1の中心軸の中間位置の座標

center_point_1 = ((1 + 1) / 2, (1 + 0) / 2, 0)

end_point_1 = (1, 0, 0)


# 円柱1を作成

create_cylinder(center_point_1, end_point_1, 1)


# 円柱2の中心軸の中間位置の座標

center_point_2 = ((1 + 1) / 2, (-1 + 0) / 2, 0)

end_point_2 = (1, 0, 0)


# 円柱2を作成

create_cylinder(center_point_2, end_point_2, 2)






円柱で円板を複数作る

半径1

半径 √2/2

半径 √3/2

半径√2

半径√3

半径 2

中心   1,0,0


色を塗れるように

マテリアルをrgba で設定






コレクションを作る

名前は

”単位円 円周トーラス"
”原点 円柱"
”窓面 円柱"
”実物 円柱"

”原点 数学 XY 円柱円板"
”原点 正面窓 YZ 円柱円板"
”原点 土台 ZX 円柱円板"

”窓面 数学 XY 円柱円板"
”窓面 正面窓 YZ 円柱円板"
”窓面 土台 ZX 円柱円板"

”実物 数学 XY 円柱円板"
”実物 正面窓 YZ 円柱円板"
”実物 土台 ZX 円柱円板"






”立方体 表面 red100"
”球体 内部 blue1000"
”球体 内部 red100"
”球体 表面 blue1000"






import bpy

”単位円 円周トーラス"
cube_inner_blue_collection = bpy.data.collections.new(”単位円 円周トーラス")
bpy.context.scene.collection.children.link(cube_inner_blue_collection)

# 立方体内部の赤いオブジェクト用コレクションの作成
cube_inner_red_collection = bpy.data.collections.new("立方体 内部 red100")
bpy.context.scene.collection.children.link(cube_inner_red_collection)

# 立方体表面の青いオブジェクト用コレクションの作成
cube_surface_blue_collection = bpy.data.collections.new("立方体 表面 blue1000")
bpy.context.scene.collection.children.link(cube_surface_blue_collection)

# 立方体表面の赤いオブジェクト用コレクションの作成
cube_surface_red_collection = bpy.data.collections.new("立方体 表面 red100")
bpy.context.scene.collection.children.link(cube_surface_red_collection)

# 球体内部の青いオブジェクト用コレクションの作成
sphere_inner_blue_collection = bpy.data.collections.new("球体 内部 blue1000")
bpy.context.scene.collection.children.link(sphere_inner_blue_collection)

# 球体内部の赤いオブジェクト用コレクションの作成
sphere_inner_red_collection = bpy.data.collections.new("球体 内部 red100")
bpy.context.scene.collection.children.link(sphere_inner_red_collection)

# 球体表面の青いオブジェクト用コレクションの作成
sphere_surface_blue_collection = bpy.data.collections.new("球体 表面 blue1000")
bpy.context.scene.collection.children.link(sphere_surface_blue_collection)

# 球体表面の赤いオブジェクト用コレクションの作成
sphere_surface_red_collection = bpy.data.collections.new("球体 表面 red100")
bpy.context.scene.collection.children.link(sphere_surface_red_collection)









ああああ