![]() |
Ellipsenbogen zum Tortenstück ergänzen?
Gemäß der Windows apo Funktion arc() habe ich diese Funktion gebaut:
arc(x1,y1,x2,y2, sx,sy, ex,ey); wie kann ich nun sicher stellen dass die vom Bogenradius-Mittelpunkt führenden Geraden genau am Bogenende aufhören? Ich will eine eigene Ellipsenfunktion verwenden, wie in meinem Thread zum Thema "Ellipsenalgo aus Formelsammlung kreieren" ![]() Möchte also diese Ellipse wieder verwnden, den Bogen zeichnen und die vom Bogenende zum Mittelpunkt führenden Begrenzungslinien. Gibt es dazu eine einfache Formel: - um das Bogenende zu finden, könnte mit a * cos(alpha) := X; b* sin(alpha) := Y gehen? - aus den sx,sy, ex,ey Koordinaten auf Start und Endwinkel zu kommen? |
AW: Ellipsenbogen zum Tortenstück ergänzen?
Zitat:
Zitat:
2. Du bestimmst den Winkel des übergebenen Start- bzw. Endpunktes relativ zum besagten Mittelpunkt jeweils mit den allseits bekannten Formeln. Es liegt SWS mit W=Pi/2 vor, Arkustangens regelt also. 3. Wenn man die Google-KI fragt, wie man einen Punkt auf einer Ellipse in bestimmtem Winkel zum Mittelpunkt berechnet, spuckt sie totalen Blödsinn aus (die Berechnung des im folgenden Link grünen Punktes P zum irrelevanten und unbekannten Winkel Alfa, bei Google Winkel Thita genannt). Es wird zum Glück ![]() p = sqrt(ry² / (1 - (sqrt(rx²-ry²) / rx)² * (cos(Fi))² ))) OT: Wer auch immer sich überlegt hat, den Exponenten vor die Klammer zu schreiben, wenn man das Ergebnis einer trigonometrischen Funktion potenziert: Ich hasse dich! Du bist eine Schande für die Mathematik! Es ist beim obigen Link so geschrieben und ich habe es in der Zeile hierüber korrigiert. 4. Jetzt befindet sich dein Punkt bei X = mx+Xi = mx+p*cos(Fi) Y = my+Ita = my+p*sin(Fi)) |
AW: Ellipsenbogen zum Tortenstück ergänzen?
Der "Endpunkt" der Gerade kann auf dem Bogen liegen, aber muß nicht.
Er kann, auf dem Bogen liegen oder innerhalb oder außerhalb des Kreises/Ellipse ... drauf oder außerhalb ist besser, weil dann das Ergebnis des ergebenden Winkels genauer ist (je näher innerhalb am Mittelpunkt, umso ungenauer wird es, da wir ja nur mit ganzen Zahlen/Pixeln rechnen und somit gerundet wird) Die "Gerade" geht durch die zwei Punkte Mittelpunkt und der andere Endpunkt Punkt und noch viel weiter (unendlich) und da, wo die Gerade den Bogen schneidet, dort stoppt der Bogen. Es ist also garnicht nötig den Bogen genau zu treffen. Du berechnest dir über Winkelfunktionen den Endpunkt, die Zeichenfunktion berechnet sich daraus wieder einen Winkel, mit dem sie dann das Zeichnen berechnet. Ich weiß, ist bissl pervers, da es schöner wäre, man könnte hier direkt den Winkel in die API geben, aber so isses halt nunmal. :freak: Treffen sich zwei Parallelen. :lol: |
AW: Ellipsenbogen zum Tortenstück ergänzen?
Irgendwie verstehe ich die Frage nicht. Der Grafikcursor (PenPos) steht doch nach dem Zeichnen genau am Ende des Bogens, wenn ich dann einfach zum Mittelpunkt weiterzeichne, dann schließe ich doch exakt an....
|
AW: Ellipsenbogen zum Tortenstück ergänzen?
Die Frage versteht man erst, wenn man sich wingdi.arc() durchgelesen hat (wingdi nicht mit wuppdi verwechseln!), weil er ja nur schriebt "ich habe eine Prozedur mit acht Integers als Argument", ohne selbst zu sagen, was das für Argumente sind und was die Prozedur tun soll. Hat bei mir auch entsprechend lange gedauert.
|
AW: Ellipsenbogen zum Tortenstück ergänzen?
Die Arc-Methode von TCanvas arbeitet in der Tat nicht exakt und es entstehen manchmal pixelgroße Lücken zu angrenzenden Elementen. Daher verwende ich in meinen Draw-Routinen statt Arc immer eine Facettendarstellung mit LineTo-Befehlen. Die passen dann immer.
|
AW: Ellipsenbogen zum Tortenstück ergänzen?
Mehrere Methoden malen das letzte Pixel nicht, so z.B. auch LineTo,
und bei Anderen ist das untere-rechte die zweite/letzte Koordinate nicht inklusive. |
AW: Ellipsenbogen zum Tortenstück ergänzen?
Zitat:
![]()
Delphi-Quellcode:
ist die Achsneigung, was die Windows-Funktion nicht unterstützt und auch bei SVG kaum genutzt wird.
Angle
Die SVG-Funktion mal allerdings etwas anders als die Windows-Funktion, da die Ellipse nicht innerhalb eines vorgegebenen Rechtecks ist sondern völlig anders konstruiert wird. |
AW: Ellipsenbogen zum Tortenstück ergänzen?
Zitat:
|
AW: Ellipsenbogen zum Tortenstück ergänzen?
Zitat:
Ich glaube, das lag darin, dass die Winkelfunktionen (Sin, Cos, SinCos) in Single nicht genau genug waren, um den Endpunkt richtig zu treffen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz