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

näherung einer ellipse mit kreisbögen

zzyzx
Newcomer
eine ellipse kann man ja sehr einfach durch strecken eines kreises in nur eine richtung erhalten.
punkte auf einer ellipse erhält man auch ziemlich einfach mit sinus/cosinus
wenn man aber die ellipse aber in gdl als näherung aus kreisbögen haben will, wirds schwerer. kennt jemand vielleicht einen einfachen weg mittels erweiterter statuswerte oder so?
34 ANTWORTEN 34
Anonymous
Nicht anwendbar
Vielleicht noch ein Ansatz

Wenn ich mich recht erinnere haben wir im 20. Jahrhundert noch zu Zeiten ohne CAD damit gearbeitet.
Mit 2 Kreisen mit Mittelpunkt auf der y-Achse und 2 Kreisen mit Mittelpunkt auf der x-Achse wurde die Ellipse annäherungsweise gezeichnet. Die noch vorhandenen Öffnungen zwischen den Kreisen wurden mit dem Kurvenlineal angepasst.
Thema "Scheitelkrümmungskreise"
Womit vielleicht die ursprüngliche Frage des Themas
(Annäherung über Kreise) am Besten getroffen ist.

Weiters kann die Tangentenneigung auch über Dreiecke bestimmt werden. Das sollte mathematisch doch eher fassbar sein.

Siehe auch:

hier
Anonymous
Nicht anwendbar
oder ganz was einfaches:

-einen Kreis in der xy Ebene zeichnen (z.B. als prism mit Höhe 0)
-diesen dann um die x-Achse drehen
-und eine Ansicht generieren
-sollte nach meiner Meinung eine Ellipse ergeben (Kegelschnitt)
-Rechenarbeit bleibt im Computer :idee:
Frank Beister
Advisor
@Egon.
Sehr netter Link. Gerade die Sache mit der Tangente. Vielleicht läßt sich das Problem so einfacher lösen, als durch den artithmetischen Weg. Die Idee mit dem Schnitt durch eine geneigte Säule bringt zwar eine Ellipse, aber keine Lösung des Problems, denn ...

Der Ausgangspunkt war doch eine ellipsenförmige Säule ohne Verformung des Koordinatensystems zu erhalten. Alle polygonzugbasierten GDL-Befehle lassen maximal Kreisbogensegmente zu, aber keine Splines oder Ellipsensegmente. Die Frage war, ob man mit einfachen Mitteln die Ellipse mit Bögen annähern kann. Ich denke, daß man kann. Ich habe gerade ein kleines Makro geschrieben, mit dem man aus 3 gegebenen Punkten einen Bogen ermitteln kann. So wie das AC im graphischen Modus auch anbietet. Nun muß man das ganze nur noch mit der Ellipsengleichung in eine Schleife packen. Ich überlege mir das mal ... :dozey:
bim author since 1994 | bim manager since 2018 | author of selfGDL.de | openGDL | skewed archicad user hall of fame | author of bim-all-doors.gsm
Frank Beister
Advisor
OK. Es geht so:

Ladet euch den 3-Punkte-Kreis.gsm herunter. In dem ZIP-File ist ein Objekt (.GSM) und 2 Makros (.GDL) enthalten. Bindet zumindest das Kreis3P.gdl in die aktive Bibliothek mit ein.

Dieses Makro wird vom Skript aus mit den Koordinaten von 3 Kreispunkten aufgerufen. Zurück bekommt man die 2 Koordinaten des Mittelpunktes und den Radius. Übergibt man nach den 6 Koordinaten der Punkte noch eine 1, wird der Radius nicht zurückgegeben.

Unser Prisma sieht dann wie folgt aus (Neues Objekt erstellen und in 3D-Skript kopieren):
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">! Parameter definieren oder nächste Zeile ohne "!"
!
! a=4 : b=2 : zzyzx=1


dim P[38][2] !... Punktespeicher
n=36 !... sollte eine durch 4 teilbare Zahl sein!


! Punktkoordinaten ermitteln
for i=1 to n+2
alpha=i*360/n
x=a*cos(alpha) : y=b*sin(alpha)
hotspot x,y,0
hotspot x,y,zzyzx
P[1]=x : P[2]=y
next i


! Kreisbögen ermitteln und auf den Stapelspeicher

for i=1 to 36 step 2
! 1.Punkt:
put P[1],P[2],15+64

! Mittelpunkt:
CALL "Kreis3P" P[1],P[2], P[i+1][1],P[i+1][2], P[i+2][1],P[i+2][2], 1
put 900+15+64

! 3.Punkt:
put P[i+2][1],P[i+2][2],3000+15+64

next i



! Prisma zeichnen

prism_ nsp/3,zzyzx,get(nsp)Die Genauigkeit hängt natürlich von der Anzahl der gewählten Segmente (hier: 36 Punkte=18 Segmente) und der Einstellungen unter 'Zauberstabeinstellungen' ab. So weit ich das bis jetzt beurteilen kann ist die Kurve an den Punkten nicht stetig. D.h. daß sie geringe Knicke hat, weil die Kreissegmente nach Punkten und nicht nach Randtangenten bestimmt wurde. Wie gering aber der Fehler ist, kann man in folgendem 2D-Skript sehen:
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">! Parameter definieren oder nächste Zeile ohne "!"
!
! a=4 : b=2 : zzyzx=1

! Gestauchte Ellipse als Referenz

mul2 1,B/A
circle2 0,0,A
del 1

! Approximation

pen 7

dim P[38][2]
n=36
for i=1 to n+2
alpha=i*360/n
x=a*cos(alpha) : y=b*sin(alpha)
hotspot2 x,y
P[1]=x : P[2]=y
next i

for i=1 to 36 step 2
CALL "Kreis3P" P[1],P[2], P[i+1][1],P[i+1][2], P[i+2][1],P[i+2][2], 1
poly2_ 3,1,
P[1],P[2],1,
get(2),901,
P[i+2][1],P[i+2][2],3001
next iEchte und Kreisbogenellipse liegen übereinander. Die Abweichung ist gering.

[ 29. September 2004, 14:19: Beitrag editiert von: Frank Beister ]
bim author since 1994 | bim manager since 2018 | author of selfGDL.de | openGDL | skewed archicad user hall of fame | author of bim-all-doors.gsm
Anonymous
Nicht anwendbar
nicht von schlechten Eltern

ist aber schon sehr hohe GDL Schule :yeah:
Frank Beister
Advisor
Unter Bogenellipse.zip liegt das komplette Objekt als Demo mit einstellbaren Parametern. Erweiterungen und Anwendungen sind willkommen. Nochmal als Hinweis: Wer den Code 1:1 verwendet sollte die Ergebnisse auch wieder öffentlich zugänglich machen. Das Prinzip des Open Source. 😉
bim author since 1994 | bim manager since 2018 | author of selfGDL.de | openGDL | skewed archicad user hall of fame | author of bim-all-doors.gsm
zzyzx
Newcomer
clevere sache; hab gar nicht gewusst dass man den stackspeicher (oder wie immer das ding auch heissen mag) über ein makroskript füllen kann.
aber trotz aller begeisterung bin ich immer noch am grübeln, wie man es ohne die knicke an den ecken hinbekommen könnte (klar, die abweichung ist minimal, aber wenn ich es mit linien mache und 100 punkte nehme, ist die abweichung auch gering und dennoch haben wir ne weitere lösung gesucht). aber bis die "stetige" lösung gefunden ist, bleibt frank natürlich gdl-könig :winken:
zzyzx
Newcomer
so, hab mir das problem heut nacht :dozey: nochmal durch den kopf gehen lassen (ohne stift und papier und auch ohne computer). hab mir dann gedacht: mal sehen, wie archicad das eigentlich hinbekommt, dass die kurve stetig ist ...
also hab ich grad mal so eine ellipse gezeichnet und mit dem zauberstab eine schraffur draus gemacht, die bögen mit dem jeweiligen mittelpunkt verbunden und sieheda: die annäherung von archicad ist auch nicht stetig (!!!), das wäre dann der fall, wenn die linie durch den berührungspunkt zweier benachbarter kreisbögen und durch die jeweiligen kreisbogenmittelpunkte eine gerade wäre; das ist aber nicht so.
eine lösung steht also noch aus...
:verzweifelt:
Frank Beister
Advisor
🙂 🙂 🙂
Hat mich gestern auch noch umgetrieben. 😉

[ 30. September 2004, 08:47: Beitrag editiert von: Frank Beister ]
bim author since 1994 | bim manager since 2018 | author of selfGDL.de | openGDL | skewed archicad user hall of fame | author of bim-all-doors.gsm
Frank Beister
Advisor
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Zitat:</font><hr /><font size="2" face="Verdana, Helvetica, sans-serif">die annäherung von archicad ist auch nicht stetigIch habe das gerade mal nachvollzogen und bin ziemlich platt. Auf den ersten Blick und mit maximalem Zoom sieht man keinen Knick. Ich vermutete schon, daß du vielleicht der 2D-OpenGL-Darstellung von AC 8.1 erlegen bist (die ist gerade im 'tiefen' Zoom manchmal sehr eckig), doch du hast recht!
Stellt sich die Frage warum GS das nicht als stetige Kurve berechnet. Ich vermute erstmal nicht Unwissenheit, sondern eher, daß das exakte nicht immer das optimale ist. Wir werden ja vergleichen können, wenn wir ein ellipsenartiges stetige Kreisbogen'polygon' haben. *optimist* 😉

[ 30. September 2004, 09:04: Beitrag editiert von: Frank Beister ]
bim author since 1994 | bim manager since 2018 | author of selfGDL.de | openGDL | skewed archicad user hall of fame | author of bim-all-doors.gsm