###hausuebung 3### ###Lorene Seufert# ###Gruber 3####### import rhinoscriptsyntax as rs import random, time, sys import math sys.path.append("P:/WWW/los2003/dm2/03_hausuebung") sys.path.append("P:/") import DM_lib as dm rs.UnitSystem(3) rs.ShowGrid(view=None, show=0) rs.ShowGridAxes(view=None, show=0) rs.ViewDisplayMode(view=None, mode="Arctic") rs.EnableRedraw(0) dm.PointRadius(displayModeX=0, rad=1, styl=1) rs.DeleteObjects(rs.AllObjects()) anz = random.choice( range(2**4, 2**8, 4) ) coordsCir = dm.allCoords[0] coordsCub = dm.allCoords[1] 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] ) vecX = rs.VectorSubtract( coordsCub[1], coordsCub[0] ) vecY = rs.VectorSubtract( coordsCub[-1], coordsCub[0] ) vecZ = dm.normVec3pnts(coordsCub[0], coordsCub[1], coordsCub[-1]) vecZ = rs.VectorScale( vecZ, siz ) ptA = coordsCub[0] ptB = rs.VectorAdd( ptA, rs.VectorScale( vecX, anz/4) ) ptC = rs.VectorAdd( ptB, rs.VectorScale( vecY, anz/4) ) ptD = rs.VectorAdd( ptC, rs.VectorScale( vecX, -anz/4) ) ptE = rs.VectorAdd( ptA, rs.VectorScale( vecZ, anz/4) ) ptF = rs.VectorAdd( ptB, rs.VectorScale( vecZ, anz/4) ) ptG = rs.VectorAdd( ptC, rs.VectorScale( vecZ, anz/4) ) ptH = rs.VectorAdd( ptD, rs.VectorScale( vecZ, anz/4) ) baseCrv = rs.AddCurve( [ptA, ptB, ptC, ptD, ptA], 1 ) topCrv = rs.AddCurve( [ptE, ptF, ptG, ptH, ptE], 1 ) if 0: for i,car in enumerate(["A","B","C","D","E","F","G","H"]): rs.AddTextDot( car, [ptA, ptB, ptC, ptD,ptE, ptF, ptG, ptH][i] ) rs.ZoomExtents() dirX = rs.CurveArrows (rs.AddLine(ptA, ptB), 2) dirY = rs.CurveArrows (rs.AddLine(ptA, ptD), 2) dirZ = rs.CurveArrows (rs.AddLine(ptA, ptE), 2) rs.ObjectColor(rs.AllObjects()[2], [200,20,20] ) rs.ObjectColor(rs.AllObjects()[1], [20,200,20] ) rs.ObjectColor(rs.AllObjects()[0], [20,20,200] ) k = rs.AddLine(ptB, ptF) l = rs.AddLine(ptD, ptH) m = rs.AddLine(ptC, ptG) n = rs.AddLine(ptA, ptE) centerpnt = dm.pntInbetween(ptA, ptG) # wuerfel mittelpnt #rs.AddPoint(centerpnt) #rs.AddLine(ptA, centerpnt) #rs.AddLine(ptB, centerpnt) #rs.AddLine(ptC, centerpnt) #rs.AddLine(ptD, centerpnt) #rs.AddLine(ptE, centerpnt) #rs.AddLine(ptF, centerpnt) #rs.AddLine(ptG, centerpnt) #rs.AddLine(ptH, centerpnt) line = [k,l,m,n] A1 = dm.pntInbetween(ptA, centerpnt) #rs.AddPoint(A1) a = dm.pntInbetween(ptA, A1) #rs.AddPoint(a) B1 = dm.pntInbetween(ptB, centerpnt) b = dm.pntInbetween(ptB, B1) #rs.AddPoint(b) C1 = dm.pntInbetween(ptC, centerpnt) c = dm.pntInbetween(ptC, C1) #rs.AddPoint(c) D1 = dm.pntInbetween(ptD, centerpnt) d = dm.pntInbetween(ptD, D1) #rs.AddPoint(d) E1 = dm.pntInbetween(ptE, centerpnt) e = dm.pntInbetween(ptE, E1) #rs.AddPoint(e) F1 = dm.pntInbetween(ptF, centerpnt) f = dm.pntInbetween(ptF, F1) #rs.AddPoint(f) G1 = dm.pntInbetween(ptG, centerpnt) g = dm.pntInbetween(ptG, G1) #rs.AddPoint(g) H1 = dm.pntInbetween(ptH, centerpnt) h = dm.pntInbetween(ptH, H1) #rs.AddPoint(h) cube1 = rs.AddLine(a,b) cube2 = rs.AddLine(b,c) cube3 = rs.AddLine(c,d) cube4 = rs.AddLine(d,a) cube5 = rs.AddLine(e,f) cube6 = rs.AddLine(f,g) cube7 = rs.AddLine(g,h) cube8 = rs.AddLine(h,e) cube9 = rs.AddLine(a,e) cube10 = rs.AddLine(d,h) cube11 = rs.AddLine(c,g) cube12 = rs.AddLine(f,b) cube13 = rs.AddLine(e,ptE) cube14 = rs.AddLine(f,ptF) cube15 = rs.AddLine(g,ptG) cube16 = rs.AddLine(h,ptH) cube17 = rs.AddLine(a,ptA) cube18 = rs.AddLine(d,ptD) cube19 = rs.AddLine(c,ptC) cube20 = rs.AddLine(b,ptB) lines = [cube1, cube2,cube3,cube4,cube5,cube6,cube7,cube8,cube9,cube10,cube11,cube12,cube13,cube14,cube15,cube16,cube17,cube18,cube19,cube20] ################################################################# def create_sphere_of_points(centerpnt, radius, num_points): circPnt = [] for i in range(num_points): anglea = random.uniform(0, math.pi) angleb = random.uniform(0, 2 * math.pi) x = centerpnt[0] + radius * math.sin(angleb) * math.cos(anglea) y = centerpnt[1] + radius * math.sin(angleb) * math.sin(anglea) z = centerpnt[2] + radius * math.cos(angleb) circPnt.append([x, y, z]) return circPnt radius = rs.Distance(centerpnt,dm.pntInbetween(g,d)) num_points = 500 circPnt = create_sphere_of_points(centerpnt, radius, num_points) rs.AddPoints(circPnt) rs.ObjectColor(rs.AddPoints(circPnt),[252,233,3]) rs.ObjectColor(lines,[2,106,82]) rs.ObjectColor(baseCrv,[2,106,82]) rs.ObjectColor(topCrv,[2,106,82]) rs.ObjectColor(line,[2,106,82])