### https://www.student.tugraz.at/amel.ahmetovic/dm2/HUE/HU_03.py - continuation of previous HUE : HUE4 ### grabbed: 2024-11-08 13:59:05 ################################# ############################## ### DM2_w24 hu_03_setUp ### ### _diag / 2024 10 17 ### ############################## import rhinoscriptsyntax as rs import random, time, sys ### sys.path.append("P:/WWW/zargut2406/lib") 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()) import rhinoscriptsyntax as rs import math import random def create_longitude_lines(radius, num_lines): for i in range(num_lines): #schleife angle = i * (360 / num_lines) #berechnung laengengradwinkel fuer 24 linien verschiebung von 15grad points = [] #liste zum speichern der laengengradkurven for lat in range(-90, 91, 10): rad_lat = math.radians(lat) rad_lon = math.radians(angle) #umwandlung langengrad ins bogenmass macht einsetzen moeglich fuer sin u cos x = radius * math.cos(rad_lat) * math.cos(rad_lon) #def xyz y = radius * math.cos(rad_lat) * math.sin(rad_lon) z = radius * math.sin(rad_lat) #sin rad lat um punkt auf und ab entlang Nord-Sued Achse zu verschieben points.append((x, y, z)) curve = rs.AddCurve(points) rs.ObjectColor(curve, (0, 0, 255)) #umfaerbung def create_latitude_lines(radius, num_lines): for i in range(1, num_lines): angle = -90 + i * (180 / num_lines) rad_angle = math.radians(angle) #bogenmass umwandlung points = [] for lon in range(0, 361, 10): rad_lon = math.radians(lon) #schleife geht von 0 bis 360 grad in 10gradschritte erzeugung kreisfoermige linie x = radius * math.cos(rad_angle) * math.cos(rad_lon) y = radius * math.cos(rad_angle) * math.sin(rad_lon) z = radius * math.sin(rad_angle) points.append((x, y, z)) curve = rs.AddCurve(points) rs.ObjectColor(curve, (255, 0, 0)) #umfaerbung fuer distinction def create_earth_visual(radius=100, long_lines=24, lat_lines=12): create_longitude_lines(radius, long_lines) create_latitude_lines(radius, lat_lines) create_earth_visual() def create_random_sphere_lines(radius, num_lines=50, circle_radius=50): for _ in range(num_lines): #zufallswinkel in grad fuer neigung und rotation tilt_angle = random.uniform(0, 180) #zufallswinkel zwischen 0 und 180 Grad rotate_angle = random.uniform(0, 360) #zufallswinkel zwischen 0 und 360 Grad rad_tilt = math.radians(tilt_angle) rad_rotate = math.radians(rotate_angle) #punkte fuer den kreis points = [] for angle in range(0, 360, 10): #winkel in 10 grad schritten rad_angle = math.radians(angle) #x, y, z coords berechnen x = circle_radius * math.cos(rad_angle) y = circle_radius * math.sin(rad_angle) * math.cos(rad_tilt) z = circle_radius * math.sin(rad_angle) * math.sin(rad_tilt) x_rot = x * math.cos(rad_rotate) - y * math.sin(rad_rotate) #punkt rotieren um z achse fuer den zufallswinkel y_rot = x * math.sin(rad_rotate) + y * math.cos(rad_rotate) z_rot = z #z bleibt gleich, rotation nur in der xy ebene points.append((x_rot, y_rot, z_rot)) #kreislinien auf den punkten curve = rs.AddCurve(points) rs.ObjectColor(curve, (0, 255, 0)) #umfaerben create_random_sphere_lines(radius=100, num_lines=50, circle_radius=50) #kugel mit randomiser befehl modellieren print "Mit Laengen- und Breitengradlinien wurde hier das Kartennetz der Erde aufgespannt"