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
leute, leute, ihr verrennt euch in details die nicht vorhanden sind 😄

das thema lautet ellipse mit kreisbögen. cad ist aber kein kreis sondern eine folge von geraden linien welche sich einem kreis nähern.
warum also krampfhaft einen vielleicht geometrisch richtigen code entwickeln wenn dieser in linienfolgen ausgegeben werden muss?

also vielleicht doch lieber viele kurze linien hintereinander? auch bei vollstem zoom sieht die linienfolge nicht anders aus als die 'kreislinie'.


variablen:
genau=200 ... anzahl der eckpunkte
zzyzx=50 ... höhe des 3d körpers

2d:
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">
aa=A/2
bb=B/2

xalt=aa
yalt=0

if genau<3 then genau=3

for i = 1 to genau
xvar=aa*cos(360/genau*i)
yvar=bb*sin(360/genau*i)

if fixp=1 then
hotspot2 xvar, yvar
endif

if linie=1 then
line2 xalt, yalt, xvar, yvar
xalt=xvar
yalt=yvar
endif
next i
end3d code
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">
aa=A/2
bb=B/2

if genau<3 then genau=3

for i = 1 to genau
put aa*cos(360/genau*i)
put bb*sin(360/genau*i)
next i

prism genau, zzyzx, get(nsp)

endzusatznutzen: regelmässige n-ecke können sowohl 2d als auch 3d erstellt werden.

[ 01. Oktober 2004, 21:42: Beitrag editiert von: peter_h ]
zzyzx
Newcomer
@ peter_h:
natürlich ist dieses thema längst in ein mathematisches mutiert und eher als theoretische übung denn als praktische konstruktionshilfe zu verstehen. klar: wenn man die anzahl der näherungspunkte nur genügend hoch setzt, bekommt man schon was, was ziemlich elliptisch aussieht.
... aber schöner wärs schon, wenn mans mit kreisbögen schaffen würd' 😉
Frank Beister
Advisor
@ Jochen
Das unterstützt auch zzyzx Ansatz, daß es auch mit weniger Trigonometrie geht. Ich habe mir das auch schon gedacht und habe am Freitag das noch etwas vereinfacht. Die Steigung einer Ellipse ist in einem beliebigen Punkt das Quadrat des großen Halbmessers durch die X-Ordinate des untersuchten Punktes (m=a^2/x):

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">a=10 : b=3 !Halbmesser Ellipse
ln=0.2 ! Länge Hilfslinien
n=32 ! Anzahl Teilungspunkte

for i=1 to n

alpha=i*360/n
x=a*cos(alpha) : y=b*sin(alpha)

add2 x,y

! Berechnung der Steigung
if X then x1=A^2/X else X1=0

! Umwandlung in Winkel
tau=180*(y<0)
if x-x1 then tau=tau+atn(y/(x-x1)) else tau=tau+90

rot2 tau+90

line2 0,0,ln,0 : hotspot2 0,0 : hotspot2 ln,0

del 2

next ialso nix mit trigonometrischen Funktionen.

Ich bin inzwischen zu dem Schluß gekommen (mein Mathelehrer würde über die Zeit bis zur Erkenntnis ... naja, lassen wir das), daß es mit stetigen Übergängen so nicht geht. Die Definition eines Kreises mit 2 Tangenten und 2 Punten ist überbestimmt. Damit gibt es quasi 'nur zufällig' eine Lösung, denn der Kreis ist mit 2 Tangenten und 1 Punkt bereits bestimmt.
Das liegt eigentlich auch in der Natur der Ellipse. Wenn man an einem beliebigen Punkt P auf der Ellipse einen dort tangentialen Kreis ansetzt, hat man eigentlich bereits 'verloren'. Denn je nachdem ob man sich dem flachen oder spitzen Scheitelpunkt nähert, kann man mit seinem gewählten Kreis die Ellipse nicht mehr berühren, denn die Steigung der Ellipse verändert sich immer 'schneller' oder 'langsamer' als der gewählte Kreis. Die tangentialen Übergänge können demnach nicht auf der Ellipse liegen.

Mein vorläufiges Fazit daraus ist, daß die Näherung über die 3-Punkte-Kreis Methode bis jetzt die beste ist. Man kann bereits mit 24 Meßpunkten (=12 Segmente) die Ellipse überraschend dicht annähern. Die unstetigen Übergänge finde ich da eher marginal.

@Peter
Es macht sehr wohl Sinn es mit Kreisbögen anzunähern, denn.. </font>
  • <font size="2" face="Verdana, Helvetica, sans-serif">...du brauchst deutlich mehr Punkte um eine optisch saubere Ellipse aus einem Polygonzug zu generieren, wenn du nur lineare Verbindungen einsetzt.</font></li>
  • <font size="2" face="Verdana, Helvetica, sans-serif">..du hast bei gebogenen Abschnitten die Möglichkeit via Statuswert (+64) eine korrekte Segmentierungsfreie Darstellung zu erhalten.</font></li>
  • <font size="2" face="Verdana, Helvetica, sans-serif">... du kannst über die Einstellungen des Zauberstabes bei der Bearbeitung des 3D-Modells die Polygonflächenzahl zentral verringern.</font></li>
<font size="2" face="Verdana, Helvetica, sans-serif">
Ich stelle dazu nochmal eine aktualisierte Fassung von 'Ellipse Pro' ins Netz.
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
Hier also nochmal den Status Quo.
Dann mal auf zum nächsten Ufer: Bestimmung der Bogenlänge eines beliebigen Winkelabschnittes der Ellipse. 😉 ...
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
na gut, dann nenn ich mein objekt eben regelmässiges/unregelmässiges N-eck mit zusatzfunktion ellipse 😄

es gibt einen punkt wo bei mir der praktische nutzen (und irgendwie denke ich zu praktisch) aufhört, und der ist hier schon längstens überschritten 😎