AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Canvas.Arc Länge abfragen?

Ein Thema von AlexanderVieth · begonnen am 17. Aug 2009 · letzter Beitrag vom 17. Aug 2009
Antwort Antwort
AlexanderVieth

Registriert seit: 17. Aug 2009
Ort: Düren
13 Beiträge
 
Delphi 2010 Professional
 
#1

Canvas.Arc Länge abfragen?

  Alt 17. Aug 2009, 13:11
Hallo allezusammen.

Gibt es einen Weg, die ich die Länge des Canvas.Arc bogens abfragen/errechnen kann,
Sodass ich den Kreisumfang mit der Länge des gezeichneten Kreisbogens vergleichen kann?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: Canvas.Arc Länge abfragen?

  Alt 17. Aug 2009, 13:45
Mathematik ... also einfach berechnen?

Umfang des Kreises, bzw. der Ellipse
und dann davon den Anteil, welcher gezeichnet wurde.
(den Winkel des Anfangs und Endes des Kreisausschnittes bekommt man ja über den Mitelpunkt und die 2 Endpunkte oder besser gesagt, über die Verbindungslinien zwischen Endpunkt und Mittelpunkt)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
AlexanderVieth

Registriert seit: 17. Aug 2009
Ort: Düren
13 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Canvas.Arc Länge abfragen?

  Alt 17. Aug 2009, 13:51
Mein Problem ist, dass ich bis jetzt alle Geraden in Vektoren ausgestellt habe.
Den Winkel zwischen zwei geraden berechne ich mit dem Skalarprodukt, kann so aber keine Winkel größer als 90 Grad berechnen.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

Re: Canvas.Arc Länge abfragen?

  Alt 17. Aug 2009, 14:00
Also du hast die Koordinaten des Anfangspunkts und die Koordinaten des Endpunkts, sowie die des Mittelpunkts und möchtest den Winkel zwischen den beiden Punkten?

Das sollte nicht allzuschwer sein

Das mit dem Umfang geht für einen Kreis relativ einfach, falls es eine Ellipse ist: Ist das etwas schwieriger
  Mit Zitat antworten Zitat
AlexanderVieth

Registriert seit: 17. Aug 2009
Ort: Düren
13 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Canvas.Arc Länge abfragen?

  Alt 17. Aug 2009, 14:16
Sorry, nach einer kleinen Pause fällt mir auf, dass ich das Problem sehr schlecht beschrieben habe, deswegen noch ein zweiter anlauf.

Ich habe ein Programm geschrieben, dass Punkte in einem Koordinatensystem verbindet.
Im abstand X vom Punkt B, in dem sich die zwei vektoren AB und BC treffen möchte ich die Ecke entfernen und durch eine Rundung ersetzen. Ich habe auch schon einen ganz guten Ansatz, der allerdings nur funktioniert, wenn ich, Ausgehend von A nach rechts abbiege. gehe ich nach Links, dann zeichnet mir das Prog den Falschen Teil der Ellipse.

Zusammengefasst, ich habe zwei Punkte, kann aber nicht definitiv und generell sagen, welcher der Anfangs und welcher der Endpunkt ist.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#6

Re: Canvas.Arc Länge abfragen?

  Alt 17. Aug 2009, 14:40
Okay, also hast du mehrere Punkte, die du durch Linen verbindest, und du möchtest die Ecken abrunden.

Dann hast du für jeden (Zwischen-)Punkt 2 Vektoren, die besagen, in welche Richtung die beiden Linienstücke abgehen.

Also wenn du die Punkte A, B, C, D hast und den Punkt B betrachtest brauchst du erstmal die Vektoren BA und BC.

Jetzt berechnest du 2 Winkel:
phi als der winkel dazwischen: Bei beiden Vektorn den Winkel ausrechnen (atan2) und subtrahieren.
theta als die Richtung des Kreismittelpunkts Beide Vektoren normieren, dann addieren, und math.atan2 benutzen. Falls beim addieren 0 rauskommt, kannste abbrechen (gerade Verbindung)

Damit hast du die Richtung in die du gehen musst. Jetzt brauchst du noch den Radius der Verrundung (z.B. 30px) um den Mittelpunkt des Kreises zu errechnen. Der Abstand zum Punkt B ergibt sich durch Z = R/cos(phi/2) der Kreismittelpunkt dann mit (X = Z*cos(theta) und Y = Z*sin(theta))
Am Ende nicht vergessen, den Punkt B draufzurechnen und du hast die Koordinaten des Kreismittelpunkts.

So ungefähr. Kann sein, dass das eine oder andere Vorzeichen noch falsch ist
  Mit Zitat antworten Zitat
AlexanderVieth

Registriert seit: 17. Aug 2009
Ort: Düren
13 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Canvas.Arc Länge abfragen?

  Alt 17. Aug 2009, 14:43
Das hat geklappt... dankeschön ^^
  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 14:53 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