###hue4
###lisa fixl 
###dm2
##############################
import rhinoscriptsyntax as rs
import random, time, sys   ###                                              
sys.path.append("P:/")     ### add path where "DM_lib.py" can be found !!!                                              
sys.path.append("P:/DM2/")     ### add path where "DM_lib.py" can be found !!!                                              
sys.path.append("P:/WWW/limafi/dm2")     ### add path where "DM_lib.py" can be found !!!                                              
import DM_lib as dm        ### reload(dm)    
############################## 
import random
import rhinoscriptsyntax as rs

###wuerfel
anz2 = 5 
base_side_length = 7.0  
growth_factor = 1.5  
center = [0, 0, 20]  

#Punkte innerhalb des Wuerfels
num_random_points = 3000  

#wuerfel wird exponentiell groesser 
#erstellt mithilfe von ki
for i in range(anz2):
    side_length = base_side_length * (growth_factor ** i)  
    half_length = side_length / 2

    #versetzen der wuerfel in x-richtung
    offset = [i * (side_length + 2), 0, 0]  
    current_center = rs.VectorAdd(center, offset)  

#wuerfel erstellt wie in der letzten hu

    base_vectors = [
        [half_length, half_length, half_length],
        [-half_length, half_length, half_length],
        [-half_length, -half_length, half_length],
        [half_length, -half_length, half_length],
        [half_length, half_length, -half_length],
        [-half_length, half_length, -half_length],
        [-half_length, -half_length, -half_length],
        [half_length, -half_length, -half_length]
    ]

    # Eckpunkte
    vertices = [rs.VectorAdd(vec, current_center) for vec in base_vectors]

    # punkte
    rs.AddPoints(vertices)

    # punkte innerhalb 
    for _ in range(num_random_points):
        x = random.uniform(-half_length, half_length) + current_center[0]
        y = random.uniform(-half_length, half_length) + current_center[1]
        z = random.uniform(-half_length, half_length) + current_center[2]
        
        rs.AddPoint([x, y, z])
        



###kreis

anz2 = 5 
base_radius = 3.5  
growth_factor = 1.5  
center2 = [0, 10, 27]  

num_points = 2000

#wuerfel wird exponentiell groesser 
#erstellt mithilfe von ki
for i in range(anz2):
    rad2 = base_radius * (growth_factor ** i)  
    vec2 = [rad2, 0, 0]  
    deltaangle2 = 360 / (32 * 4) 

    # Versetze der kreise
    offset = [i * (rad2 * 2 + 2), 0, 0]  
    current_center = rs.VectorAdd(center2, offset)  

    rs.AddPoint(vec2)  # Punkt zum Visualisieren hinzufgen

    #punkte 
    for j in range(num_points):
        vecX2 = rs.VectorRotate(vec2, deltaangle2 * j, rs.VectorCreate([0, 0, 1], [0, 0, 0]))  
        vecX2 = rs.VectorScale(vecX2, random.uniform(0, 1))  
        vecX2 = rs.VectorAdd(vecX2, current_center)  

        point2 = rs.AddPoint(vecX2)  
        
        #farbe
        color2 = [0, random.randint(100, 255), 0]  
        rs.ObjectColor(point2, color2)

