############################## ### DM2_w24 hu_04_setUp ### ### _diag / 2024 11 07 ### ### Lea Koraimann ### ############################## import rhinoscriptsyntax as rs import random, math ### ############################## def create_small_cube_points(center, side_length, points_per_side): points = [] step = side_length / (points_per_side - 1) for x in range(points_per_side): for y in range(points_per_side): for z in range(points_per_side): pt = (center[0] + x * step - side_length / 2, center[1] + y * step - side_length / 2, center[2] + z * step - side_length / 2) points.append(pt) rs.AddPoint(pt) return points def create_circle_points(center, radius, num_points): points = [] angle_step = 2 * math.pi / num_points for i in range(num_points): angle = i * angle_step x = center[0] + radius * math.cos(angle) y = center[1] + radius * math.sin(angle) z = center[2] pt = (x, y, z) color = (random.randint(150, 255), random.randint(150, 255), random.randint(150, 255)) points.append(pt) point_id = rs.AddPoint(pt) if point_id: rs.ObjectColor(point_id, color) return points def connect_circle_to_cube(circle_points, cube_center): for circle_pt in circle_points: rs.AddLine(circle_pt, cube_center) def arrange_cubes_with_circles(num_cubes, radius, cube_side_length, points_per_side, circle_radius, num_circle_points): cube_centers = [] angle_step = 360.0 / num_cubes for i in range(num_cubes): angle = math.radians(i * angle_step) x = radius * math.cos(angle) y = radius * math.sin(angle) cube_center = (x, y, 0) cube_centers.append(cube_center) # kleine mittlere Wuerfel create_small_cube_points(cube_center, cube_side_length, points_per_side) # Kreis um den Wuerfel circle_points = create_circle_points(cube_center, circle_radius, num_circle_points) # Verbindung der Punkte des Kreises mit dem Mittelpunkt des Wuerrfels connect_circle_to_cube(circle_points, cube_center) return cube_centers # Parameter cube_side_length = 30 # Groesse der Wuerfel points_per_side = 10 # Punkte der Wuerfel outer_circle_radius = 80 # Radius fuer ausseren Kreis num_circle_points = 100 # Punkte fuer ausseren Kreis num_cubes = 6 # Anzahl der symmetrisch angeordneten Wuerfel # Wuerfel cube_centers = arrange_cubes_with_circles(num_cubes, outer_circle_radius, cube_side_length, points_per_side, outer_circle_radius + 20, num_circle_points) # Mittlerer Kreis central_sphere_center = (0, 0, 0) central_sphere_radius = 30 # kleinerer Radius fuer mittleren Kreiis num_central_sphere_points = 1000 # Punkte mittlerer Kreis central_sphere_points = create_circle_points(central_sphere_center, central_sphere_radius, num_central_sphere_points) ################ rs.ZoomExtents()