### homework 3 ### Domen Jug ### 20241024 ############### import rhinoscriptsyntax as rs import random, time, sys ### sys.path.append("P:/") sys.path.append("P:/WWW/domain8/dm2/") ### add path where "DM_lib.py" can be found !!! import DM_lib as dm ### reload(dm) ############################## rs.UnitSystem(3) rs.ShowGrid(view=None, show=0) rs.ShowGridAxes(view=None, show=0) rs.ViewDisplayMode(view=None, mode="Wireframe") rs.EnableRedraw(0) dm.PointRadius(displayModeX=0, rad=3, styl=1) rs.DeleteObjects(rs.AllObjects()) ###################################### anz = random.choice( range(2**4, 2**8, 4) ) dm.allCoords = dm.setUp_hu_03( anz ) coordsCir = dm.allCoords[0] ### calling def from DM_lib to get *new* set of coords coordsCub = dm.allCoords[1] ### calling def from DM_lib to get *new* set of coords ###################################### randomVec = [random.uniform(-30,30) for i in range(3)] coordsCub = [rs.VectorRotate(cor, randomVec[0], randomVec) for cor in coordsCub] coordsCir = [rs.VectorRotate(cor, randomVec[0], randomVec) for cor in coordsCir] siz = rs.Distance( coordsCub[0], coordsCub[1] ) ### edge length of cubus #dm.textDots( coordsCub ) #rs.AddCurve( coordsCub, 1 ) #rs.AddCurve( coordsCir, 1 ) #dm.textDots( coordsCir ) anz = len(coordsCub) print "*** anz =", anz print "*** siz =", round(siz, 2), "/ edge lenght =", round(siz, 2),"*",int(anz/4),"=", round(siz*anz/4, 2) print "*** **********\n" ### here we go: d = random.randint(1,20) pointA = [0,0,0] pointB = rs.VectorAdd(pointA, [d,0,0]) pointC = rs.VectorAdd(pointB, [0,d,0]) pointD = rs.VectorAdd(pointC, [-d,0,0]) pointE = rs.VectorAdd(pointA, [0,0,d]) pointF = rs.VectorAdd(pointE, [d,0,0]) pointG = rs.VectorAdd(pointF, [0,d,0]) pointH = rs.VectorAdd(pointG, [-d,0,0]) bottomcurve = rs.AddCurve([pointA, pointB, pointC, pointD, pointA], 1) topcurve = rs.AddCurve([pointE, pointF, pointG, pointH, pointE], 1) for i,car in enumerate(["A","B","C","D","E","F","G","H"]): rs.AddTextDot( car, [pointA, pointB, pointC, pointD, pointE, pointF, pointG, pointH][i]) #cube points# newcoords =[] for x in range(d+2): for y in range(d+2): for z in range(d+2): cor = [x,y,z] newcoords.append(cor) cubeclr= rs.AddPoints(newcoords) rs.AddCurve(newcoords,2) for point in cubeclr: clr = [255,255,0] rs.ObjectColor(point, clr) cen= dm.pntInbetween(pointA, pointG) coords = rs.DivideCurve(topcurve, d, 0) for i, cor in enumerate(coords): vec= rs.VectorSubtract(cor, cen) unitVec= rs.VectorUnitize(vec) scalVec= rs.VectorScale(unitVec, 1/2) circPoint= rs.VectorAdd(cen,scalVec) if 1%2==0: rs.AddLine(cor, circPoint) rs.ObjectColor(rs.AddPoint(circPoint),[200,20,200]) #ball coords0 = [] for i in range(100): scalVec = rs.VectorRotate(scalVec, random.uniform(-90,90), [random.uniform(-1,1)for i in range(3)]) coords0.append(rs.VectorAdd( cen, scalVec)) #rs.AddPoints(coords0) ballclr= rs.AddPoints(coords0) rs.AddCurve(coords0,20) for point in ballclr: clr0 = [20,255,2] rs.ObjectColor(point, clr0) ################ rs.ZoomExtents()