AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Windows GDI ArcTo: Tutorial
Thema durchsuchen
Ansicht
Themen-Optionen

Windows GDI ArcTo: Tutorial

Ein Thema von worker · begonnen am 17. Feb 2009 · letzter Beitrag vom 5. Feb 2013
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#11

AW: Re: Windows GDI ArcTo: Tutorial

  Alt 5. Feb 2013, 08:48
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.

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.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Windows GDI ArcTo: Tutorial

  Alt 5. Feb 2013, 08:59
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.
Miniaturansicht angehängter Grafiken
arcdemo.png  
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Nintendo

Registriert seit: 16. Feb 2009
82 Beiträge
 
#13

AW: Windows GDI ArcTo: Tutorial

  Alt 5. Feb 2013, 17:40
Hey, Danke soweit allen. Hat echt weitergeholfen.

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.

Geändert von Nintendo ( 5. Feb 2013 um 18:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#14

AW: Windows GDI ArcTo: Tutorial

  Alt 5. Feb 2013, 17:52
Momentan beschäftigt mich nun die Frage, wie ich wieder auf die Winkel käme.
Such mal nach ArcTan2.
Uli Gerhardt
  Mit Zitat antworten Zitat
Nintendo

Registriert seit: 16. Feb 2009
82 Beiträge
 
#15

AW: Windows GDI ArcTo: Tutorial

  Alt 5. Feb 2013, 18:49
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!

Jetzt kann ich in beide Richtungen rechnen.
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#16

AW: Windows GDI ArcTo: Tutorial

  Alt 5. Feb 2013, 19:29
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.
Uli Gerhardt
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#17

AW: Windows GDI ArcTo: Tutorial

  Alt 5. Feb 2013, 19:33
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.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 07:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz