Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Windows GDI ArcTo: Tutorial (https://www.delphipraxis.net/129346-windows-gdi-arcto-tutorial.html)

uligerhardt 5. Feb 2013 08:48

AW: Re: Windows GDI ArcTo: Tutorial
 
Zitat:

Zitat von Nintendo (Beitrag 1202069)
Ok, soweit klar. Was aber noch nicht klar ist, sind die Punkte X3,Y3 und X4,Y4.

Sind das die Schnittpunkte mit der Ellipse oder mit dem die Ellipse umspannenden Rechteck.

Es sind irgendwelche Punkte, die in der "richtigen" Richtung liegen. Es müssen nicht die Schnittpunkte mit Ellipse oder umschreibendem Rechteck sein - siehe die n...Arc-Koordinaten im oben verlinkten Bildchen.

Zitat:

Zitat von Nintendo (Beitrag 1202069)
Wenn das die Schnittpunkte mit dem Ellipsenbogen sind, wo finde ich dann passende Ellipsengleichungen? Ich habe seit Turbopascal nichts mehr mit solchen Grafikfunktionen gemacht, weiß aber, das Turbo Pascal statt der Punkte X3,Y3 und X4,Y4 Anfangs und Endwinkel verlangt. Ich muss also Umdenken und statt Anfangs und Endwinkel ausdiesen beiden Winkeln die hier geforderten Punkte berechnen.

Irgendwie so (ungetestet):
Delphi-Quellcode:
function CalcPoint(const AMittelPunkt: TPoint; ARadius, AWinkel: Extended): TPoint;
var
  Sin, Cos: Extended;
begin
  SinCos(AWinkel, Sin, Cos);
  Result.X := AMittelPunkt.X + Round(ARadius * Cos);
  Result.Y := AMittelPunkt.Y + Round(ARadius * Sin);
end;
Den Radius kannst du dir theoretisch nach Gusto aussuchen - in der Praxis gibt's natürlich Rundungseffekte. Drum würde ich ihn nicht zu klein wählen, z.B. die Breite oder Höhe des Rechtecks.

DeddyH 5. Feb 2013 08:59

AW: Windows GDI ArcTo: Tutorial
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe da mal was vorbereitet (siehe Anhang):
- X1, X2, Y1 und Y2 definieren das umgebende Rechteck (blau)
- X3 und Y3 sind die rechte obere Ecke
- X4 und Y4 sind die linke obere Ecke

Die Verbindungslinien zum Ellipsenmittelpunkt sind schwarz, der sich daraus ergebende Arcusbogen rot.

Nintendo 5. Feb 2013 17:40

AW: Windows GDI ArcTo: Tutorial
 
Hey, Danke soweit allen. Hat echt weitergeholfen. :smile2:

Aber:

Momentan beschäftigt mich nun die Frage, wie ich wieder auf die Winkel käme.

Die oben genannte Funktion CalcPoint berechnet ja den Punkt X,Y, wie ihn die GDI Funktion sehen will, anstelle des Winkels.

Ich habe da aus der Schulzeit noch in Erinnerung, das man den Winkel zwischen 2 eingeschlossenen Seiten berechnen konnte oder sogar auch 2 Winkel vorgeben und die fehlenden Seiten des Dreieckes berechnen konnte.

Weiß zufällig jemand noch, wie das war. Meine Formelsammlung ist da zu kurz gehalten. Ein guter Link zum Nachlesen ist auch mehr als willkommen. Muss ja berechenbar sein.

Wie also könnte ich jetzt den Winkel erhalten, der in CalcPoint als Sinus/Cosinus einfließt. Ich meine den Wert für alpha, beta und Gamma. Einer der Winkel ist ja schon mal 90 Grad.

alpha = 180 - beta - gamma, die anderen Winkelanalog, aber wiewar das noch mal mit Seite/Winkel/Seite oder Winkel/Seite/Winkel??? Das muss doch zu "knacken" sein.

uligerhardt 5. Feb 2013 17:52

AW: Windows GDI ArcTo: Tutorial
 
Zitat:

Zitat von Nintendo (Beitrag 1202184)
Momentan beschäftigt mich nun die Frage, wie ich wieder auf die Winkel käme.

Such mal nach ArcTan2.

Nintendo 5. Feb 2013 18:49

AW: Windows GDI ArcTo: Tutorial
 
Zitat:

Zitat von uligerhardt (Beitrag 1202185)
Zitat:

Zitat von Nintendo (Beitrag 1202184)
Momentan beschäftigt mich nun die Frage, wie ich wieder auf die Winkel käme.

Such mal nach ArcTan2.

Nein, das isses nicht. Aber das hier ist mein Freund:

http://www.arndt-bruenner.de/mathe/s...berechnung.htm

Hab ich allerdings mit "Seite Winkel Seite" gefunden.

Trotzdem Danke! :smile2:

Jetzt kann ich in beide Richtungen rechnen.

uligerhardt 5. Feb 2013 19:29

AW: Windows GDI ArcTo: Tutorial
 
Zitat:

Zitat von Nintendo (Beitrag 1202189)
Zitat:

Zitat von uligerhardt (Beitrag 1202185)
Zitat:

Zitat von Nintendo (Beitrag 1202184)
Momentan beschäftigt mich nun die Frage, wie ich wieder auf die Winkel käme.

Such mal nach ArcTan2.

Nein, das isses nicht. Aber das hier ist mein Freund:

Das müsste schon gehen. Aber wenn du einen anderen Weg gefunden hast, ist's ja auch gut.

Medium 5. Feb 2013 19:33

AW: Windows GDI ArcTo: Tutorial
 
Wenn es um die Umsetzung von Funktionen geht, die Winkel benutzt haben, sind sin() und cos() die Freunde. In Gegenrichtung ist es atan2(). Zumindest sind das die beiden Wege, die am geradesten heraus wären.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 Uhr.
Seite 2 von 2     12   

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