abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
Programmierung
Alles über Programmierung in GDL und Python

elliptische rampe

zzyzx
Newcomer
neulich kam mal das thema im archicadforum auf:
gesucht war eine elliptische rampe.
hab mal eine gemacht, bei der die ellipse als innenkante der rampe genommen wird; die breite dieser rampe bleibt gleich.
vielleicht gibts ja verbesserungsvorschläge:
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;"> !! winka = anfangswinkel
!! winke endwinkel
!! zzyzx = höhe
!! n = auflösung der rampe (je höher umso glatter)
!! hrm = plattendicke
!! brm = breite der rampe


teilw = (winke-winka)/n

for i = -1 to (n+2)
teilwn = (i*teilw)+winka
put a/2 * cos (teilwn)
put b/2 * sin (teilwn)
put i*(zzyzx/n)
put 0
next i

tube 4,n+3,1+2+16+32,
0,0,0,
-brm,0,0,
-brm,hrm,0,
0,hrm,0,
get ((n+3)*4)
:idee: :winken: :winken:
2 ANTWORTEN 2
andreaszeike
Newcomer
Wow!! Sehr nett!!

Ich hab´ das Ganze auf die etwas primitivere Art gelöst und das Prinzip dokumentiert - ohne PUT und GET, aber auch mit TUBE...

...für den GDL-Anfänger sozusagen! 😉

TUBE, Pfad aus Schraffur gewinnen.pdf


Gruß, az

[ 15. Dezember 2003, 16:47: Beitrag editiert von: Andreas Zeike ]
zzyzx
Newcomer
@ andreas:
für freigeformtes ist deine methode natürlich die bessere (weil flexibler)
anschauliche anleitung übrigens!
.
hier hab ich noch einen:
habs mal mit tubea probiert, tubea verlängert einen offenen poligonzug (y>0) nach "unten" zur x-achse; im klartext heisst das, die rampe wird als massivkörper erzeugt, der auf der 0-ebene aufsitzt:
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;"> teilw = (winke-winka)/n
for i = -1 to (n+2)
teilwn = (i*teilw)+winka
put a/2 * cos (teilwn)
put b/2 * sin (teilwn)
put i*(zzyzx/n)
next i
if hrm = 0 then hrm = 0.0001
tubea 2,n+3,1+2+16+32,
-brm,hrm,0,
0,hrm,0,
get ((n+3)*3)bedingung: hrm darf nicht 0 sein, sonst wirft's fehlermeldungen aus
:winken:

[ 16. Dezember 2003, 11:54: Beitrag editiert von: zzyzx ]