2023年7月15日土曜日

20230716 sun 三角測量 位置関係

 

ちゃんとできなかったので

手動で 追加














。指定された位置と半径で4つの大きな球体を作成し、それらの間に6つの線分に相当する位置に均等に9つの0.01の球体を配置するスクリプトを以下に示します。



4つの球体で

6つの 線分相当が

できるから


その6つの線分相当に

均等間隔で 9つの0.02 球体 描いて


blender python 


球体を作る

半径 0.03



位置は

0,0,0.5

1,√3,0

1,0,0

0,0,0


4点の間 それぞれに

9個の球体を作る

この球体の半径 0.04


4点の間を

”あ”

”い”

”う”

”か”

”き”

”く”


と 名付け



半径 0.02の球体に 連番で

”あ01" "あ02"  このように名付ける








import bpy

import math


# 4つの大きな球体の位置を指定

positions = [

    (0, 0, 0.5),

    (1, math.sqrt(3), 0),

    (1, 0, 0),

    (0, 0, 0)

]


# 大きな球体の半径を指定

large_radius = 0.04


# 4つの大きな球体を作成

for i, position in enumerate(positions):

    bpy.ops.mesh.primitive_uv_sphere_add(radius=large_radius, location=position)

    bpy.context.active_object.name = f"大{i+1}"






import bpy

# コレクションを作成する
def create_collections():
    # 線分の名前リスト
    line_names = ["aa", "bb", "cc", "dd", "ee", "ff"]

    # コレクションを作成
    for i, line_name in enumerate(line_names):
        collection = bpy.data.collections.new(line_name)
        bpy.context.scene.collection.children.link(collection)

create_collections()






import bpy

import math

# 9つの球体を均等に配置する関数

def create_small_spheres(start_pos, end_pos):

    # 9つの球体を均等に配置

    for j in range(9):

        t = j / 8.0

        pos = [

            start_pos[0] * (1-t) + end_pos[0] * t,

            start_pos[1] * (1-t) + end_pos[1] * t,

            start_pos[2] * (1-t) + end_pos[2] * t

        ]


        bpy.ops.mesh.primitive_uv_sphere_add(radius=0.01, location=pos)


# 各線分区間に球体を配置する

def create_small_spheres_for_all_lines():

    # 線分区間の開始点と終了点のリスト

    positions = [

        [(0, 0, 0.5), (1, math.sqrt(3), 0)],    # aa

        [(0, 0, 0.5), (1, 0, 0)],                 # bb

        [(0, 0, 0.5), (0, 0, 0)],                 # cc

        [(1, math.sqrt(3), 0), (1, 0, 0)],        # dd

        [(1, math.sqrt(3), 0), (0, 0, 0)],        # ee

        [(1, 0, 0), (0, 0, 0)]                     # ff

    ]


    # 各線分区間に球体を配置

    for i in range(len(positions)):

        start_pos, end_pos = positions[i]

        create_small_spheres(start_pos, end_pos)


create_small_spheres_for_all_lines()





import bpy

import math


# 20個の球体を均等に配置する関数

def create_small_spheres(start_pos, end_pos):

    # 20個の球体を均等に配置

    for j in range(20):

        t = j / 19.0

        pos = [

            start_pos[0] * (1-t) + end_pos[0] * t,

            start_pos[1] * (1-t) + end_pos[1] * t,

            start_pos[2] * (1-t) + end_pos[2] * t

        ]


        bpy.ops.mesh.primitive_uv_sphere_add(radius=0.02, location=pos)


# 各線分区間に球体を配置する

def create_small_spheres_for_all_lines():

    # 線分区間の開始点と終了点のリスト

    positions = [

        [(0, 0, 0.5), (1, math.sqrt(3), 0)],    # aa

        [(0, 0, 0.5), (1, 0, 0)],                 # bb

        [(0, 0, 0.5), (0, 0, 0)],                 # cc

        [(1, math.sqrt(3), 0), (1, 0, 0)],        # dd

        [(1, math.sqrt(3), 0), (0, 0, 0)],        # ee

        [(1, 0, 0), (0, 0, 0)]                     # ff

    ]


    # 各線分区間に球体を配置

    for i in range(len(positions)):

        start_pos, end_pos = positions[i]

        create_small_spheres(start_pos, end_pos)


create_small_spheres_for_all_lines()






4つの球体から

2つの球体を両端とする

線分に名前を付ける

6つできるハズ


aa,bb,cc,dd,ee,ff

それをコレクション名とし

まずコレクションだけ作る





3次元座標 xyz で  

(0,0,1) から 

(1,2,0)までの


直線距離と

数式を 書いて


できれば 絵図も




3次元座標 xyz で  

(0,0,0.5) から 

(1,0,0)までの


直線距離と

数式を 書いて