import rhinoscriptsyntax as rs
import random
allRhinos = rs.AllObjects ()
rs.DeleteObjects( allRhinos)
rs.EnableRedraw (0)

###################################
###02_uebung
### Langmann_Sven
### 20241011
###################################
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("C:\Users\Sven\OneDrive\Tu Graz\DM2")### add path where "DM_lib.py" can be found !!!                                              
import DM_lib as dm        ### reload(dm) 
##################################
def DrawPointSphere(rad, anz):
    dm.eA()
    #rad = 5.0
    vec = [rad, 0, 0]
    vecX = rs.VectorRotate (vec, 90,[0,0,1] )
    ####
    center = [0, 0, 0]
    #anz = 500
    deltaAngle = 360/anz
    ####
    for i in range(anz):
        vecX = rs.VectorRotate( vec, deltaAngle*i, dm.pntRandCoords(-1, 1)[0] )
        #vecX = rs.VectorScale( vecX, random.uniform(0.7, 1) )
        vecX = rs.VectorAdd( vecX, center )
        rs.AddPoint( vecX )
        vecS.append(vecX)
    return vecS       
def DrawCube(rad):
    rad= rad-2
    cords = []
    cords.append( [0,0,0] )
    center= [0,0,0]
    #vec= []
    
    vecC.append( rs.VectorAdd( center, rs.VectorScale( [rad,rad,-rad], 1)))  #=Vector A =0
    vecC.append( rs.VectorAdd( center, rs.VectorScale( [-rad,rad,-rad], 1))) #=Vector B =1
    vecC.append( rs.VectorAdd( center, rs.VectorScale( [rad,-rad,-rad], 1))) #=Vector C =2
    vecC.append( rs.VectorAdd( center, rs.VectorScale( [-rad,-rad,-rad], 1)))#=Vector D =3
    ###
    vecC.append( rs.VectorAdd( center, rs.VectorScale( [rad,rad,rad], 1)))   #=Vector E =4
    vecC.append( rs.VectorAdd( center, rs.VectorScale( [-rad,rad,rad], 1)))  #=Vector F =5
    vecC.append( rs.VectorAdd( center, rs.VectorScale( [rad,-rad,rad], 1)))  #=Vector G =6
    vecC.append( rs.VectorAdd( center, rs.VectorScale( [-rad,-rad,rad], 1))) #=Vector H =7
    ###
    baseCrv = rs.AddCurve( [vecC[0], vecC[1], vecC[3], vecC[2], vecC[0]], 1 ) 
    topCrv  = rs.AddCurve( [vecC[4], vecC[5], vecC[7], vecC[6], vecC[4]], 1 ) 
    rightCrv  = rs.AddCurve( [vecC[0], vecC[4], vecC[6], vecC[2], vecC[0]], 1 ) 
    leftpCrv  = rs.AddCurve( [vecC[1], vecC[5], vecC[7], vecC[3], vecC[1]], 1 ) 
    ###
    for i,car in enumerate(["A","B","C","D","E","F","G","H"]):
        rs.AddTextDot( car, [vecC[0], vecC[1], vecC[2], vecC[3],vecC[4], vecC[5], vecC[6], vecC[7]][i] )
    rs.ObjectColor(rs.AllObjects()[5], [200,20,20] )
    return baseCrv, topCrv;
    return vecC
    
def DrawDiff(baseCrv, topCrv, anz):
    coords = rs.DivideCurve(baseCrv, anz, 0)
    for y,corC in enumerate(coords):
        rs.ObjectColor( rs.AddPoint( corC ), [10,10,120] )
    #coords += rs.DivideCurve(topCrv, anz, 0)
    ran = random.uniform(4,16)
    ###
    #cen = dm.pntInbetween(vecC[0], vecC[6])

    for i,corS in enumerate(vecS):
        rs.ObjectColor( rs.AddPoint( corS ), [200,20,200] )
        #for y,corC in enumerate(coords):
            #vec1 = rs.VectorSubtract( corS, corC )
            #unitVec = rs.VectorUnitize( vec1 )
            #rs.ObjectColor( rs.AddPoint( corS ), [200,20,200] )


if( __name__ == "__main__" ):
    vecS= []
    anz = 500
    rad = 10
    DrawPointSphere(rad, anz)
    vecC= []
    baseCrv, topCrv = DrawCube(rad)    
    DrawDiff(baseCrv, topCrv, anz)
    
