###hausuebung04
###emma kretz

import rhinoscriptsyntax as rs
import dm2_library as dm2

#alles loeschen
dm2.eA()

#definieren
def testFunc(pnt0 = [ 0,0,0 ], vec0 = [ 0,0,1 ]):
    pnt1 = rs.VectorAdd( pnt0, vec0 )
    rs.AddPoint(pnt0)
    rs.AddPoint(pnt1)
    rs.AddCurve([pnt0, pnt1])
    return pnt1


#dodecaederpunkte einfuegen
dode_coords = dm2.getDodecaCoords( floating=0 )
rs.AddPoints( dode_coords )


#pentaeder
dode_penta = dm2.getPentaIndices()

#definieren
def abcd(penta = 0) :
    pnt0 = dode_coords[ dode_penta[penta] [0] ] 
    pnt1 = dode_coords[ dode_penta[penta] [1] ]
    pnt2 = dode_coords[ dode_penta[penta] [2] ]
    pnt3 = dode_coords[ dode_penta[penta] [3] ]
    pnt4 = dode_coords[ dode_penta[penta] [4] ]
    penta_coords = [pnt0, pnt1, pnt2, pnt3, pnt4]
    crv = rs.AddCurve( penta_coords, 1 )
    cnt = dm2.pntCentroid(penta_coords) 
    rs.AddPoint (cnt)
    vec0 = rs.VectorSubtract(cnt, pnt0)
    vec1 = rs.VectorSubtract(cnt, pnt1)
    cross = rs.VectorCrossProduct(vec0, vec1)
    cross = rs.VectorUnitize(cross)
    cross = rs.VectorScale(cross, 50)
    

#curves erzeugen
    pntc = testFunc(cnt, cross) #curve lotrecht zur flaeche
    strahl1 = rs.AddCurve ( [pnt0, pntc, pnt1],2 ) #curve von ecke0 zu ecke1 ueber lotrechte, degree 2
    strahl2 = rs.AddCurve ( [pnt0, pntc, pnt2],2 ) #curve von ecke0 zu ecke2 ueber lotrechte
    strahl3 = rs.AddCurve ( [pnt0, pntc, pnt3],2 ) #curve von ecke0 zu ecke3 ueber lotrechte
    strahl4 = rs.AddCurve ( [pnt0, pntc, pnt4],2 ) #curve von ecke0 zu ecke4 ueber lotrechte
 
    strahl5 = rs.AddCurve ( [pnt0, pntc*2, pnt1],3 ) #gleiches schema, versetzung des crosspoints, degree 3
    strahl6 = rs.AddCurve ( [pnt0, pntc*3, pnt2],3 )
    strahl7 = rs.AddCurve ( [pnt0, pntc*4, pnt3],3 )
    strahl8 = rs.AddCurve ( [pnt0, pntc*5, pnt4],3 )
    

for x in range(0,11): #ausfuehrung der befehle pro seitenflaeche
    abcd (x)
