###################### ##Hausuebung 0####### ##Michael Mueggenburg# ##Gruber 03########### ###################### import rhinoscriptsyntax as rs import random, time, sys ### sys.path.append("P:\WWW\ultimum\DM2") ### add path where "DM_lib.py" can be found !!! import DM_lib as dm ### reload(dm) ############################## rs.EnableRedraw (0) dm.eA() print dm.pntRandCoords (-1,1)[0] def DrawCube(rad): vecCu = [] center= [0,0,0] vecA = vecCu.append( rs.VectorAdd( center, rs.VectorScale( [rad,rad,-rad], 1))) vecB = vecCu.append( rs.VectorAdd( center, rs.VectorScale( [-rad,rad,-rad], 1))) vecC = vecCu.append( rs.VectorAdd( center, rs.VectorScale( [rad,-rad,-rad], 1))) vecD = vecCu.append( rs.VectorAdd( center, rs.VectorScale( [-rad,-rad,-rad], 1))) vecE = vecCu.append( rs.VectorAdd( center, rs.VectorScale( [rad,rad,rad], 1))) vecF = vecCu.append( rs.VectorAdd( center, rs.VectorScale( [-rad,rad,rad], 1))) vecG = vecCu.append( rs.VectorAdd( center, rs.VectorScale( [rad,-rad,rad], 1))) vecH = vecCu.append( rs.VectorAdd( center, rs.VectorScale( [-rad,-rad,rad], 1))) baseCrv = rs.AddCurve( [vecCu[0], vecCu[1], vecCu[3], vecCu[2], vecCu[0]], 1 ) topCrv = rs.AddCurve( [vecCu[4], vecCu[5], vecCu[7], vecCu[6], vecCu[4]], 1 ) rightCrv = rs.AddCurve( [vecCu[0], vecCu[4], vecCu[6], vecCu[2], vecCu[0]], 1 ) leftpCrv = rs.AddCurve( [vecCu[1], vecCu[5], vecCu[7], vecCu[3], vecCu[1]], 1 ) return vecCu def DrawPointSphere(rad, anz,cenS): vecS= [] vec = [rad, 0, 0] vecX = rs.VectorRotate (vec, 90, [0,0,1] ) 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, cenS ) vecS.append(vecX) return vecS edgeLen1 = int(random.uniform(5, 10)) edgeLen2 = int(random.uniform(0, 5)) eP1 = (edgeLen1,edgeLen1,edgeLen1) eP2 = (edgeLen2,edgeLen2,edgeLen2) vecVer = rs.VectorAdd(eP1,eP2) sphereCen = [] vecVer = rs.VectorRotate(vecVer, 90, [0,0,1]) sphereCen.append(vecVer) sphereCen.append(-vecVer) vecVer = rs.VectorRotate(vecVer, 90, [0,0,1]) sphereCen.append(vecVer) sphereCen.append(-vecVer) vecVer = rs.VectorRotate(vecVer, 90, [0,0,1]) sphereCen.append(vecVer) sphereCen.append(-vecVer) vecVer = rs.VectorRotate(vecVer, 90, [0,0,1]) sphereCen.append(vecVer) sphereCen.append(-vecVer) rs.AddPoints(sphereCen) anz = 3001 rad1 = random.uniform(5,20) rad2 = random.uniform(5,10) rad3 = random.uniform(1,5) sphVecS = DrawPointSphere(rad1, anz, sphereCen[0]) sphVecS2 = DrawPointSphere(rad2, anz, [0,0,0]) sphVecS3 = DrawPointSphere(rad3, anz, [0,0,0]) pnts = rs.AddPoints( sphVecS ) pnts2 = rs.AddPoints( sphVecS2 ) pnts3 = rs.AddPoints( sphVecS3 ) vecCu1 = DrawCube (edgeLen1) vecCu2 = DrawCube (edgeLen2) for i,cor in enumerate(sphVecS): if abs(cor[2]) > edgeLen1 or abs(cor[0]) > edgeLen1 or abs(cor[1]) > edgeLen1: pass rs.ObjectColor( pnts[i], [200,0,0]) else: rs.ObjectColor( pnts[i], [0,100,100]) for i,cor in enumerate(sphVecS2): #pnt = rs.AddPoint( cor ) if abs(cor[2]) > edgeLen1 or abs(cor[0]) > edgeLen1 or abs(cor[1]) > edgeLen1: pass rs.DeleteObject( pnts2[i] ) else: rs.ObjectColor( pnts2[i], [0,0,200]) for i,cor in enumerate(sphVecS3): if abs(cor[2]) > edgeLen2 or abs(cor[0]) > edgeLen2 or abs(cor[1]) > edgeLen2: pass rs.DeleteObject( pnts3[i] ) else: rs.ObjectColor( pnts3[i], [100,100,0]) rs.AddPoint(0,0,0)