################################### ### DM2_w24 # AGruber@tugraz.at ### ### hu_08 finale ### ################################### ############################## import rhinoscriptsyntax as rs import random, time, sys ### sys.path.append("P:/") ### sys.path.append("C:/Users/annas/OneDrive/Dokumente/uni-dokumente/dm2") import DM_lib as dm #reload( dm ) ############################## rs.EnableRedraw(0) dm.printDisplay(1) ####moegliche Meteoriten form if(): radiusX = rX = 1000 anz = 500 rad = 100 cen = [rX/2,rX/2,rX/2] deltaAngle = 360/anz vec = [1,1,1] print vec Coords=[] for i in range(anz): angX = deltaAngle*i vecX = rs.VectorRotate(vec, angX, [random.uniform(-1,1),random.uniform(-1,1),random.uniform(-1,1)] ) vecX = rs.VectorScale(vecX, rad) vecX = rs.VectorAdd(vecX, cen) Coords.append(vecX) #rs.AddPoint(vecX) for i in range(anz//3): startpnt = random.choice(Coords) endpnt = random.choice(Coords) if startpnt != endpnt: Sphere2 = rs.AddLine(startpnt, endpnt) #####finale start###### rs.LayerVisible("OSM", 1) dm.newEmptyLayer("URANI", [100,100,200]) id = rs.ObjectsByName("_bldg3D_higBy_hig_1022844779")[0] coords= dm.getSurfacePoints(id) rs.LayerVisible("OSM", 0) #dm.textDots(coords) umrissUrania = rs.AddCurve( coords, 1 ) ###Umriss urania centerUrania = dm.pntCentroid(coords) ###mittelpunkt urania rs.AddPoint(centerUrania) targets = [ centerUrania, rs.VectorAdd(centerUrania, dm.randVec(50,100)) ] ###Mittelpunkt + random Vec ergibt target frames = 50# 250 ####Meteorit Bahnen##### for tar in targets[0:1]: pOben = rs.VectorAdd(tar, [0,0,random.uniform(200,500)] ) pStart= rs.VectorAdd(pOben, [1000,1000,0] ) kometBahnCoords = [pStart, pOben, tar ] #rs.AddCurve( kometBahnCoords, 1) bahn = rs.AddCurve( kometBahnCoords, 2) ###Flugbahn coords = rs.DivideCurve( bahn, frames, 0) ####Flugbahn wird in abhaengikeit von frames geteilt for cor_index, cor in enumerate(coords[0:]): ###Flug von Punkt A nach Punkt B rs.DeleteObjects(rs.ObjectsByName("meteorit*")) meteoritCoords = [] ####Meteorit##### for i in range(80): vecX = dm.randVec(-30, 30) corX = rs.VectorAdd( cor, vecX ) #rs.AddPoint( corX ) meteoritCoords.append( corX ) meteorit = rs.AddCurve( meteoritCoords, 1) rs.ObjectColor(meteorit, [102,102,102]) ####Meteorit flachdruecken##### if cor_index == len(coords)-1: stauchung = 0.1 rs.ScaleObject(meteorit, cor, [1,1,stauchung]) ####tangente = schweif##### paramX = rs.CurveClosestPoint(bahn, cor) tanVec = rs.CurveTangent( bahn, paramX ) print rs.VectorLength(tanVec) ####ueberpruefung ob normalvektor schweifLenx = random.uniform(200,500) tanVec = rs.VectorScale( tanVec, -schweifLenx)####Einheitsvektor wird um die SChweiflenx vergroesert schweif = rs.AddLine( cor, rs.VectorAdd(cor, tanVec) ) ####schweif koma##### divY = 20 coordsKoma = rs.DivideCurve(schweif, divY, 0) #rs.AddPoints(coordsKoma) min_distance = 5 max_distance = 20 CoordsKoma = [] for index, cor in enumerate(coordsKoma[2:]): ###Start bei zweiten Punkt if cor_index < len(coords)-2: ###Sobald meteorit auf vorletzen punkt von coords angekommen ist, wird koma nicht mehr generiert auskrag = dm.reMap( index, 0, divY-2, max_distance, min_distance) ###Hilfe von chatgbt bei remap befehl for i in range(15): vecY = dm.randVec(-auskrag,auskrag) corY = rs.VectorAdd(cor, vecY) Koma = rs.AddPoint(corY) rs.ObjectColor( Koma, [200,200,0]) rs.ObjectPrintWidth( Koma, 0.5) CoordsKoma.append(Koma) ##fuer urania zuschuetten rs.ObjectName( schweif, "meteorit_schweif") rs.ObjectName( meteorit, "meteorit") rs.ObjectName(CoordsKoma, "meteorit_koma") rs.DeleteObject(schweif) rs.Redraw()