2023年4月22日土曜日

20230422 bbb 半径2に修正

 




https://polyhaven.com/a/sandsloot



#あああああああああああああああああああああ 


import bpy


# カメラの位置を変更する

bpy.data.objects['Camera'].location = (0, 10, 0)


# ライトの位置を変更する

bpy.data.objects['Light'].location = (0, 10, 1)




#あああああああああああああああああああああ 










# obj_name = "half_sphere"


import bpy

import bmesh

from mathutils import Vector, Matrix

import math


zion_name ="半球 r=2"



# 半径2の球体を作成

bpy.ops.mesh.primitive_uv_sphere_add(radius=2.0, enter_editmode=False, location=(0,0,0), segments=64, ring_count=48)


# オブジェクトを取得

obj = bpy.context.object


# オブジェクトのメッシュを取得し、bmeshを作成

me = obj.data

bm = bmesh.new()

bm.from_mesh(me)


# 円周の方程式 y^2 + z^2 = 2 の y > 0 の部分の面を削除

for f in bm.faces:

    if all([v.co.y > 0 for v in f.verts]):

        bm.faces.remove(f)


# bmeshをメッシュに適用してオブジェクトを更新

bm.to_mesh(me)

me.update()


# オブジェクト名を設定

obj.name = zion_name


# オブジェクトの位置を変更

obj.location = (0, 0, 0)







obj_name = "half 環境 写真"


import bpy

import bmesh

from mathutils import Vector, Matrix

import math


zion_name ="半球 環境 r=2"



# 半径2の球体を作成

bpy.ops.mesh.primitive_uv_sphere_add(radius=2.0, enter_editmode=False, location=(0,0,0), segments=64, ring_count=48)


# オブジェクトを取得

obj = bpy.context.object


# オブジェクトのメッシュを取得し、bmeshを作成

me = obj.data

bm = bmesh.new()

bm.from_mesh(me)


# 円周の方程式 y^2 + z^2 = 2 の y > 0 の部分の面を削除

for f in bm.faces:

    if all([v.co.y > 0 for v in f.verts]):

        bm.faces.remove(f)


# bmeshをメッシュに適用してオブジェクトを更新

bm.to_mesh(me)

me.update()


# オブジェクト名を設定

obj.name = zion_name


# オブジェクトの位置を変更

obj.location = (0, 0, 0)







# "半球  math.sqrt(3) "


import bpy

import bmesh

from mathutils import Vector, Matrix

import math


zion_name ="半球  math.sqrt(3) "



# 半径 math.sqrt(3) の球体を作成

bpy.ops.mesh.primitive_uv_sphere_add(radius= math.sqrt(3) , enter_editmode=False, location=(0, -math.sqrt(3) ,0), segments=64, ring_count=48)


# オブジェクトを取得

obj = bpy.context.object


# オブジェクトのメッシュを取得し、bmeshを作成

me = obj.data

bm = bmesh.new()

bm.from_mesh(me)


# 円周の方程式 y^2 + z^2 = math.sqrt(3) , 0  math.sqrt(3)  y > 0 の部分の面を削除

for f in bm.faces:

    if all([v.co.y > 0 for v in f.verts]):

        bm.faces.remove(f)


# bmeshをメッシュに適用してオブジェクトを更新

bm.to_mesh(me)

me.update()


# オブジェクト名を設定

obj.name = zion_name


# オブジェクトの位置を変更

obj.location = (0,  -math.sqrt(3) , 0)






# 円錐 画面底面 h = math.sqrt(3)


import bpy

import math


# Height of cone

h = math.sqrt(3)


# Radius of base

r = 1.0


# Create cone

bpy.ops.mesh.primitive_cone_add(

    vertices=32,

    radius1=0.0,

    radius2=r,

    depth=h,

    location=(0, -h / 2, 0),

    rotation=(math.pi / 2, 0, 0)

)


# Select cone

cone = bpy.context.active_object


# Get coordinates of vertices

vertices = [v.co for v in cone.data.vertices]


# Select vertices of base

bottom_vertices = [v for v in vertices if abs(v.y + h / 2) < 0.00001]


# Add UV map to vertices of base

bpy.ops.object.mode_set(mode='EDIT')

bpy.ops.mesh.select_all(action='DESELECT')


for v in bottom_vertices:

    cone.data.vertices[v.index].select = True


bpy.ops.uv.smart_project(angle_limit=66, island_margin=0.05)

bpy.ops.object.mode_set(mode='OBJECT')




# 正方形 000 中心 円錐頂点 square_object.location = (0, 0, 0)


import bpy

import math


# Side length of square

a = 2 * math.sqrt(3)


# Create mesh data and object

mesh_data = bpy.data.meshes.new("Square")

square_object = bpy.data.objects.new("Square", mesh_data)


# Create vertices of square

vertices = [(a/2, 0, a/2), (-a/2, 0, a/2), (-a/2, 0, -a/2), (a/2, 0, -a/2)]


# Create faces of square

faces = [(0, 1, 2, 3)]


# Assign vertices and faces to mesh data

mesh_data.from_pydata(vertices, [], faces)

mesh_data.update()


# Move square to center

square_object.location = (0, 0, 0)


# Link square to scene

bpy.context.scene.collection.objects.link(square_object)





# 正方形 000 中心 円錐頂点 square_object.location = (0, - math.sqrt(3), 0)


import bpy

import math


# Side length of square

a = 2 * math.sqrt(3)


# Create mesh data and object

mesh_data = bpy.data.meshes.new("Square")

square_object = bpy.data.objects.new("Square", mesh_data)


# Create vertices of square

vertices = [(a/2, 0, a/2), (-a/2, 0, a/2), (-a/2, 0, -a/2), (a/2, 0, -a/2)]


# Create faces of square

faces = [(0, 1, 2, 3)]


# Assign vertices and faces to mesh data

mesh_data.from_pydata(vertices, [], faces)

mesh_data.update()


# Move square to center

square_object.location = (0, - math.sqrt(3)


, 0)


# Link square to scene

bpy.context.scene.collection.objects.link(square_object)









# 半径2の円に内接する 正六角形


import bpy

import math


# Radius of circle

r = 2


# Side length of hexagon

a = r


# Create mesh data and object for hexagon

mesh_data = bpy.data.meshes.new("Hexagon")

hexagon_object = bpy.data.objects.new("Hexagon", mesh_data)


# Create vertices of hexagon

vertices = []

for i in range(6):

    angle = math.pi/3 * i

    x = a * math.cos(angle)

    y = a * math.sin(angle)

    vertices.append((x, y, 0))


# Create faces of hexagon

faces = [(0, 1, 2, 3, 4, 5)]


# Assign vertices and faces to mesh data

mesh_data.from_pydata(vertices, [], faces)

mesh_data.update()


# Move hexagon to center of circle

hexagon_object.location = (0, 0, 0)


# Link hexagon to scene

bpy.context.scene.collection.objects.link(hexagon_object)



blender python

正方形を作る


zion_name =" 列車速度” このようにオブジェクト名を 定義する




正方形を作る 正方形の中心を

zion_square_center = (0,-2 * math.sqrt(3),0)

正方形の長さを

zion_square_length = 2 * math.sqrt(3)


正方形の全体は 

y= -2 * math.sqrt(3) 平面に 含まれる正方形を作る

zion_y = -2 * math.sqrt(3) このように定義する



正方形のx軸方向の長さを2倍にするのは 

zion_x_longer = 2 このように定義する


水平平面 z=0


import bpy

import math


# オブジェクト名を定義

zion_name = "列車速度"


# 正方形の中心座標を定義

zion_square_center = (0, -2 * math.sqrt(3), 0)


# 正方形の長さを定義

zion_square_length = 2 * math.sqrt(3)


# 平面に正方形を作るためにy座標を定義

zion_y = -2 * math.sqrt(3)


# 正方形のx軸方向の長さを2倍にするために定義

zion_x_longer = 2


# 平面の正方形を作成

bpy.ops.mesh.primitive_plane_add(location=zion_square_center, size=zion_square_length)

bpy.context.object.name = zion_name


# オブジェクトを選択

bpy.ops.object.select_all(action='DESELECT')

bpy.data.objects[zion_name].select_set(True)

bpy.context.view_layer.objects.active = bpy.data.objects[zion_name]


# 縮小・拡大

bpy.ops.transform.resize(value=(zion_x_longer, 1, 1), orient_type='GLOBAL')







#電車列車平面  -2 * math.sqrt(3)

import bpy

import math


# オブジェクト名を定義

zion_name = "改造 いらないが 実験地面 2倍"


# 正方形の中心を定義

zion_square_center = (0, -2 * math.sqrt(3), 0)


# 正方形の長さを定義

zion_square_length = 2 * math.sqrt(3)


# 平面に正方形を作るためにy座標を定義

zion_y = -2 * math.sqrt(3)


# 正方形のx軸方向の長さを2倍にするために定義

zion_x_longer = 2


# 立方体を作成

bpy.ops.mesh.primitive_plane_add(location=zion_square_center, size=zion_square_length)

bpy.context.object.name = zion_name


# オブジェクトを選択

bpy.ops.object.select_all(action='DESELECT')

bpy.data.objects[zion_name].select_set(True)

bpy.context.view_layer.objects.active = bpy.data.objects[zion_name]


# 縮小・拡大

bpy.ops.transform.resize(value=(zion_x_longer, 1, 1), orient_type='GLOBAL')


# x軸を中心に90度回転

bpy.ops.transform.rotate(value=math.radians(90), orient_axis='X', orient_type='GLOBAL')






#電車列車平面  - math.sqrt(3)

import bpy

import math


# オブジェクト名を定義

zion_name = "実験範囲2倍"


# 正方形の中心を定義

zion_square_center = (0, - math.sqrt(3), 0)


# 正方形の長さを定義

zion_square_length = 2 * math.sqrt(3)


# 平面に正方形を作るためにy座標を定義

zion_y = - math.sqrt(3)


# 正方形のx軸方向の長さを2倍にするために定義

zion_x_longer = 2


# 立方体を作成

bpy.ops.mesh.primitive_plane_add(location=zion_square_center, size=zion_square_length)

bpy.context.object.name = zion_name


# オブジェクトを選択

bpy.ops.object.select_all(action='DESELECT')

bpy.data.objects[zion_name].select_set(True)

bpy.context.view_layer.objects.active = bpy.data.objects[zion_name]


# 縮小・拡大

bpy.ops.transform.resize(value=(zion_x_longer, 1, 1), orient_type='GLOBAL')


# x軸を中心に90度回転

bpy.ops.transform.rotate(value=math.radians(90), orient_axis='X', orient_type='GLOBAL')