2023年7月25日火曜日

20230726 円周 3つ 改造  5 √3 1

 




import bpy

import bmesh  # Import the bmesh module


# 円の半径

radius = 6.0


# 3つの円の位置(指定地に配置する座標)を修正

positions = [

    (-12, 0, 0),

    (0, 0, 0),

    (12, 0, 0)

]


# 3つの色を用意(より薄い青)

colors = [

    (0.4, 0.8, 1.0, 1.0),

    (0.3, 0.6, 1.0, 1.0),

    (0.2, 0.4, 1.0, 1.0)

]


# 3つの円を作成し、位置と色を設定

for i, (position, color) in enumerate(zip(positions, colors)):

    # 新しいメッシュを作成

    mesh = bpy.data.meshes.new(f"CircleMesh_{i}")

    obj = bpy.data.objects.new(f"Circle_{i}", mesh)


    # シーンに追加

    scene = bpy.context.scene

    scene.collection.objects.link(obj)


    # メッシュを作成

    bm = bmesh.new()

    bmesh.ops.create_circle(bm, cap_ends=True, cap_tris=False, segments=64, radius=radius)

    bm.to_mesh(mesh)

    bm.free()


    # オブジェクトの位置を設定

    obj.location = position


    # マテリアルを作成しオブジェクトに割り当てる

    mat = bpy.data.materials.new(name=f"Material_{i}")

    mat.use_nodes = False  # ノードを使用しない


    mat.diffuse_color = color

    obj.data.materials.append(mat)











改造


円の中心 000

円の半径 

√3

で 作って






import bpy

import bmesh


# 円の半径

radii = [1.0, (3 ** 0.5), 2.0]


# 3つの円の位置(指定地に配置する座標)を修正

positions = [

    (-12, 0, 0),

    (0, 0, 0),

    (12, 0, 0)

]


# 3つの色を用意(より薄い青)

colors = [

    (0.4, 0.8, 1.0, 1.0),

    (0.3, 0.6, 1.0, 1.0),

    (0.2, 0.4, 1.0, 1.0)

]


# 3つの円を作成し、位置と色を設定

for i, (position, color) in enumerate(zip(positions, colors)):

    radius = radii[i]  # Get the corresponding radius for this circle


    # 新しいメッシュを作成

    mesh = bpy.data.meshes.new(f"CircleMesh_{i}")

    obj = bpy.data.objects.new(f"Circle_{i}", mesh)


    # シーンに追加

    scene = bpy.context.scene

    scene.collection.objects.link(obj)


    # メッシュを作成

    bm = bmesh.new()

    bmesh.ops.create_circle(bm, cap_ends=True, cap_tris=False, segments=64, radius=radius)

    bm.to_mesh(mesh)

    bm.free()


    # オブジェクトの位置を設定

    obj.location = position


    # マテリアルを作成しオブジェクトに割り当てる

    mat = bpy.data.materials.new(name=f"Material_{i}")

    mat.use_nodes = False  # ノードを使用しない

    mat.diffuse_color = color

    obj.data.materials.append(mat)










import bpy

import bmesh


# 円の半径

radii = [1.0, (3 ** 0.5), 2.0]


# 3つの円の位置(指定地に配置する座標)を修正

positions = [

    (0, 0, 0),  # Set the center to (0, 0, 0)

    (0, 0, 0),  # Set the center to (0, 0, 0)

    (0, 0, 0)   # Set the center to (0, 0, 0)

]


# 3つの色を用意(より薄い青)

colors = [

    (0.4, 0.8, 1.0, 1.0),

    (0.3, 0.6, 1.0, 1.0),

    (0.2, 0.4, 1.0, 1.0)

]


# 3つの円を作成し、位置と色を設定

for i, (position, color) in enumerate(zip(positions, colors)):

    radius = radii[i]  # Get the corresponding radius for this circle


    # 新しいメッシュを作成

    mesh = bpy.data.meshes.new(f"CircleMesh_{i}")

    obj = bpy.data.objects.new(f"Circle_{i}", mesh)


    # シーンに追加

    scene = bpy.context.scene

    scene.collection.objects.link(obj)


    # メッシュを作成

    bm = bmesh.new()

    bmesh.ops.create_circle(bm, cap_ends=True, cap_tris=False, segments=64, radius=radius)

    bm.to_mesh(mesh)

    bm.free()


    # オブジェクトの位置を設定

    obj.location = position


    # マテリアルを作成しオブジェクトに割り当てる

    mat = bpy.data.materials.new(name=f"Material_{i}")

    mat.use_nodes = False  # ノードを使用しない

    mat.diffuse_color = color

    obj.data.materials.append(mat)








円の半径 5

中心 0,ー5,0

円の半径 2

中心 0,ー√3,0

円の半径 1

中心 0,-1,0


import bpy

import bmesh


# 円の半径

radii = [5.0, 2.0, 1.0]


# 3つの円の位置(指定地に配置する座標)を修正

positions = [

    (0, -5, 0),        # Center at (0, -5, 0) with a radius of 5

    (0, -3**0.5, 0),   # Center at (0, -√3, 0) with a radius of 2

    (0, -1, 0)         # Center at (0, -1, 0) with a radius of 1

]


# 3つの色を用意(ピンク、薄いから濃いへ、透明度 20%)

colors = [

    (1.0, 0.7, 0.7, 0.2),   # Light Pink

    (1.0, 0.5, 0.5, 0.2),   # Medium Pink

    (1.0, 0.3, 0.3, 0.2)    # Dark Pink

]


# 3つの円を作成し、位置と色を設定

for i, (position, color) in enumerate(zip(positions, colors)):

    radius = radii[i]  # Get the corresponding radius for this circle


    # 新しいメッシュを作成

    mesh = bpy.data.meshes.new(f"CircleMesh_{i}")

    obj = bpy.data.objects.new(f"Circle_{i}", mesh)


    # シーンに追加

    scene = bpy.context.scene

    scene.collection.objects.link(obj)


    # メッシュを作成

    bm = bmesh.new()

    bmesh.ops.create_circle(bm, cap_ends=True, cap_tris=False, segments=64, radius=radius)

    bm.to_mesh(mesh)

    bm.free()


    # オブジェクトの位置を設定

    obj.location = position


    # マテリアルを作成しオブジェクトに割り当てる

    mat = bpy.data.materials.new(name=f"Material_{i}")

    mat.use_nodes = False  # ノードを使用しない

    mat.diffuse_color = color

    obj.data.materials.append(mat)











それぞれの円の中心に

球体を作る
半径 0.15


import bpy
import bmesh

# 円の半径
radii = [5.0, 2.0, 1.0]

# 3つの円の位置(指定地に配置する座標)を修正
positions = [
    (0, -5, 0),        # Center at (0, -5, 0) with a radius of 5
    (0, -3**0.5, 0),   # Center at (0, -√3, 0) with a radius of 2
    (0, -1, 0)         # Center at (0, -1, 0) with a radius of 1
]

# 3つの色を用意(ピンク、薄いから濃いへ、透明度 20%)
colors = [
    (1.0, 0.7, 0.7, 0.2),   # Light Pink
    (1.0, 0.5, 0.5, 0.2),   # Medium Pink
    (1.0, 0.3, 0.3, 0.2)    # Dark Pink
]

# 3つの円を作成し、位置と色を設定
for i, (position, color) in enumerate(zip(positions, colors)):
    radius = radii[i]  # Get the corresponding radius for this circle

    # 新しいメッシュを作成
    mesh = bpy.data.meshes.new(f"CircleMesh_{i}")
    obj = bpy.data.objects.new(f"Circle_{i}", mesh)

    # シーンに追加
    scene = bpy.context.scene
    scene.collection.objects.link(obj)

    # メッシュを作成
    bm = bmesh.new()
    bmesh.ops.create_circle(bm, cap_ends=True, cap_tris=False, segments=64, radius=radius)
    bm.to_mesh(mesh)
    bm.free()

    # オブジェクトの位置を設定
    obj.location = position

    # マテリアルを作成しオブジェクトに割り当てる
    mat = bpy.data.materials.new(name=f"Material_{i}")
    mat.use_nodes = False  # ノードを使用しない
    mat.diffuse_color = color
    obj.data.materials.append(mat)

    # 球体を作成
    bpy.ops.mesh.primitive_uv_sphere_add(radius=0.15, location=position)











作ったった それぞれの 円中心に作った
球体のy成分 位置を使って

円の円周に 直径が交差するとこに

球体を作る
半径 0.15

To create spheres with a radius of 0.15 at the points where the spheres' y-component intersects with the circle's circumference, we can modify the existing script to achieve that. Here's the updated code:








import bpy
import bmesh
import math

# 円の半径
radii = [5.0, 2.0, 1.0]

# 3つの円の位置(指定地に配置する座標)を修正
positions = [
    (0, -5, 0),        # Center at (0, -5, 0) with a radius of 5
    (0, -3**0.5, 0),   # Center at (0, -√3, 0) with a radius of 2
    (0, -1, 0)         # Center at (0, -1, 0) with a radius of 1
]

# 3つの色を用意(ピンク、薄いから濃いへ、透明度 20%)
colors = [
    (1.0, 0.7, 0.7, 0.2),   # Light Pink
    (1.0, 0.5, 0.5, 0.2),   # Medium Pink
    (1.0, 0.3, 0.3, 0.2)    # Dark Pink
]

# 3つの円を作成し、位置と色を設定
for i, (position, color) in enumerate(zip(positions, colors)):
    radius = radii[i]  # Get the corresponding radius for this circle

    # 新しいメッシュを作成
    mesh = bpy.data.meshes.new(f"CircleMesh_{i}")
    obj = bpy.data.objects.new(f"Circle_{i}", mesh)

    # シーンに追加
    scene = bpy.context.scene
    scene.collection.objects.link(obj)

    # メッシュを作成
    bm = bmesh.new()
    bmesh.ops.create_circle(bm, cap_ends=True, cap_tris=False, segments=64, radius=radius)
    bm.to_mesh(mesh)
    bm.free()

    # オブジェクトの位置を設定
    obj.location = position

    # マテリアルを作成しオブジェクトに割り当てる
    mat = bpy.data.materials.new(name=f"Material_{i}")
    mat.use_nodes = False  # ノードを使用しない
    mat.diffuse_color = color
    obj.data.materials.append(mat)

    # 球体を作成
    bpy.ops.mesh.primitive_uv_sphere_add(radius=0.15, location=(position[0], position[1], position[2] + radius))

    # y成分位置を使って円周上の位置を計算
    circle_points = []
    for angle in range(0, 360, 180):
        x = position[0] + radius * math.cos(math.radians(angle))
        z = position[2] + radius * math.sin(math.radians(angle))
        circle_points.append((x, position[1], z))

    # 円周上の位置に球体を作成
    for point in circle_points:
        bpy.ops.mesh.primitive_uv_sphere_add(radius=0.15, location=point)













# 円の半径
radii = [5.0, 2.0, 1.0]

# 3つの円の位置(指定地に配置する座標)を修正
positions = [
    (0, -5, 0),        # Center at (0, -5, 0) with a radius of 5
    (0, -3**0.5, 0),   # Center at (0, -√3, 0) with a radius of 2
    (0, -1, 0)         # Center at (0, -1, 0) with a radius of 1
]

これを参考に 円の中心に 球体だけを作って
半径0.2


import bpy
import math

# 円の半径
radii = [5.0, 2.0, 1.0]

# 3つの円の位置(指定地に配置する座標)を修正
positions = [
    (0, -5, 0),        # Center at (0, -5, 0) with a radius of 5
    (0, -3**0.5, 0),   # Center at (0, -√3, 0) with a radius of 2
    (0, -1, 0)         # Center at (0, -1, 0) with a radius of 1
]

# 半径
sphere_radius = 0.2

# 3つの球体を作成し、位置と半径を設定
for i, position in enumerate(positions):
    # 新しいメッシュを作成
    mesh = bpy.data.meshes.new(f"SphereMesh_{i}")
    obj = bpy.data.objects.new(f"Sphere_{i}", mesh)

    # シーンに追加
    scene = bpy.context.scene
    scene.collection.objects.link(obj)

    # 球体を作成
    bpy.ops.mesh.primitive_uv_sphere_add(radius=sphere_radius, location=position)

    # マテリアルを作成しオブジェクトに割り当てる
    mat = bpy.data.materials.new(name=f"Material_{i}")
    mat.use_nodes = False  # ノードを使用しない
    mat.diffuse_color = (1.0, 0.7, 0.7, 1.0)  # ピンクの色
    obj.data.materials.append(mat)







コレクションだけを作る

”5”
”√3”
”1”
”球体中心”
”観察者”




import bpy

# コレクションを作成する名前のリスト
collection_names = ["5", "√3", "1", "Sphere Centers", "Observer"]

# 各コレクションを作成
collections = []
for name in collection_names:
    new_collection = bpy.data.collections.new(name)
    collections.append(new_collection)

# シーンにコレクションを追加
scene = bpy.context.scene
for collection in collections:
    scene.collection.children.link(collection)







あああ