AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Ellipsenbogen zum Tortenstück ergänzen?
Thema durchsuchen
Ansicht
Themen-Optionen

Ellipsenbogen zum Tortenstück ergänzen?

Ein Thema von delphifan2004 · begonnen am 11. Aug 2025 · letzter Beitrag vom 13. Aug 2025
Antwort Antwort
delphifan2004

Registriert seit: 26. Nov 2004
Ort: Dresden
283 Beiträge
 
Delphi 10.3 Rio
 
#1

Ellipsenbogen zum Tortenstück ergänzen?

  Alt 11. Aug 2025, 18:21
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" https://www.delphipraxis.net/217478-...-kreieren.html

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?
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.140 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Ellipsenbogen zum Tortenstück ergänzen?

  Alt 11. Aug 2025, 23:36
Geraden [...] aufhören
Für mich als studierter Mathematiker ist diese Formulierung unerträglich. Geraden sind per Definition unendlich lang.

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" https://www.delphipraxis.net/217478-...-kreieren.html

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?
1. Du bildest den Mittelpunkt deines Rechtecks. Wir definieren mx=x1+rx, my=y1+ry mit rx=(x2-x1)/2 und ry=(y2-y1)/2.
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 hier erklärt: Der gerade bestimmte Winkel heißt dort Winkel Fi und suchst die Koordinaten Xi und Ita (die du zum Mittelpunkt der Ellipse/des Rechtecks addieren musst) des Punktes P. Für SWW (W1=Fi und W2=Pi/2) und somit die Anwendbarkeit der Standardformeln für Sinus und Kosinus fehlt dir die Länge der Seite p. Die wird berechnet mit:
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))
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.580 Beiträge
 
Delphi 12 Athens
 
#3

AW: Ellipsenbogen zum Tortenstück ergänzen?

  Alt 12. Aug 2025, 00:50
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.


Treffen sich zwei Parallelen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (12. Aug 2025 um 00:57 Uhr)
  Mit Zitat antworten Zitat
TomyN

Registriert seit: 8. Nov 2006
Ort: Bayreuth
292 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Ellipsenbogen zum Tortenstück ergänzen?

  Alt 12. Aug 2025, 06:19
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....
Thomas Neumann
Meine Projekte
www.satlive.audio
www.levelcheck.de
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.140 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Ellipsenbogen zum Tortenstück ergänzen?

  Alt 12. Aug 2025, 08:41
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.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.777 Beiträge
 
Delphi 12 Athens
 
#6

AW: Ellipsenbogen zum Tortenstück ergänzen?

  Alt 12. Aug 2025, 08:45
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.580 Beiträge
 
Delphi 12 Athens
 
#7

AW: Ellipsenbogen zum Tortenstück ergänzen?

  Alt 12. Aug 2025, 08:58
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.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.140 Beiträge
 
Delphi 2009 Professional
 
#8

AW: Ellipsenbogen zum Tortenstück ergänzen?

  Alt 12. Aug 2025, 09:11
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.
Die "korrekte" Lösung dürfte die hier sein - bewegt den Cursor (macht somit einen zusammenhängen Pfad) und nutzt die optimale Annäherung durch Bézier-Kurven. Angle ist die Achsneigung, was die Windows-Funktion nicht unterstützt und auch bei SVG kaum genutzt wird.
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.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
TomyN

Registriert seit: 8. Nov 2006
Ort: Bayreuth
292 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Ellipsenbogen zum Tortenstück ergänzen?

  Alt 12. Aug 2025, 10:51
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.
Oh, das wusste ich nicht. Und da ich (fast) nur noch mit graphics32 arbeite ist es mir auch noch nie aufgefallen.
Thomas Neumann
Meine Projekte
www.satlive.audio
www.levelcheck.de
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
675 Beiträge
 
#10

AW: Ellipsenbogen zum Tortenstück ergänzen?

  Alt Gestern, 12:42
Zitat:
Die Arc-Methode von TCanvas arbeitet in der Tat nicht exakt
Sowas hatte ich auch mal mit GR32. Da wurde ein Kreis nicht richtig geschlossen.
Ich glaube, das lag darin, dass die Winkelfunktionen (Sin, Cos, SinCos) in Single nicht genau genug waren, um den Endpunkt richtig zu treffen.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:17 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