![]() |
Bogen zwischen zwei Punkten dynamisch zeichnen
Hallo,
ich habe zwei Punkte A(x,y) und B(x,y), diese immer unterscheidlich sein können. Ich möchte einen Bogen zwischen den Punkten zeichnen. Programmiersprache: JAVA Klar hier gibt es die methode drawArc() von canvas, aber ich komme mit den Winkeln nicht so ganz klar. Leider ist Mathe schon etwas her bei mir und komme hier nicht weiter. http://www7.pic-upload.de/thumb/04.1...e388xzoiap.jpg Es soll dan zwischen zwei Punkten maximal zwei Bögen wie auf dem beigefügten Bild gezeichnet werden. Kann mir jemand bei diesen Problem helfen? Danke Ranjo85 |
Aus mathematischer Sicht würde ich sagen, dass du entweder einen dritten Punkt brauchst oder die höhe zwischen dem Kreisbogen als Senkrechte zwischen A und B und dem Kreismittelpunkt.
EDIT: Über die Höhe würde sich dann auch die "Biegung" der Bogen "regulieren". |
Hallo spartan-b292,
leider hilft mir dies nicht weiter. Wie gesagt gibt es schon die passende Methode drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) nur weiss ich leider nicht wie ich die Parameter korrekt setze. |
Ich kenne mich mit Java nicht aus, aber das Problem bleibt mMn das gleiche.
Du kannst alle Parameter für drawArc berechnen du bräuchtests nur einen weiteren bekannten Parameter um die Berechnung durchzuführen. Man könnte eventuell den Wert für einen weiteren Punkt (z.B. die höhe) mit einer schleife solange ausprobieren bis der Kreis passend gezeichnet wird aber das dürfte ziemlich uneffektiv sein. |
Ist es egal wie die Bögen aussehen?
Hauptsache es ist ein Bogen da? |
@Thelvan: Die Bögen sollen in etwa die Höhe haben wie auf dem bild!
|
Kreisbögen? Wo ist der Mittelpunkt?
|
Hi Ranjo85.
Der Funktionsaufruf ist wie folgt zu parametisieren. drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) x,y sind die Koordinaten deines Kreismittelpunktes width und height stellen die Größe des Kreises dar. startAngle ist der Winkel, ab dem angefangen wird zu zeichnen (warscheinlich in Grad gerechnet. Ergo 0-360) arcAngle stellt die breite des Winkels dar, der gezeichnet wird (also willst du einen 90° Winkel zeichnen, kommt da schonmal 90 rein) Wenn du beispielsweise auf dem Mittelpunkt des Bildschirms einen Halbkreis malen willst, und die Bildschirmhöhe und breite in den Variablen screenwidth und screenheight gespeichert hast, läuft das so ab. drawArc(screenwidth*0.5 , screenheight*0.5 , 5, 5, 0, 180) Damit bekommst du einen Halbkreis, der einen Radius von 5 Pixeln hat. Da du ja deinen Kreis in der Höhe stauchen willst, nimmst du halt bei dem Parameter height weniger als bei width. Das Verhältnis musst du selbst ausknobeln. In deinem konkreten Fall müsstest du warscheinlich die Funktion so aufrufen drawArc(XwertvonA + (XwertvonB-XwertvonA)*0.5 , YwertvonA oder YwertvonB , 10, 2, 0, 360) bzw. die Werte width und height deinen Wünschen anpassen. Das bedeutet, du hast die X und Y Koordinaten deiner beiden Punkte irgendwann einmal eingelesen. Aus diesen Werten kannst du dir dann den Kreismittelpunkt errechnen. Ich hab XwertvonA + deltaX/2 genommen (wobei ja deltaX die Differenz der beiden x Werte ist). Die Y-Koordinate ist in deinem Beispiel offenbar bei beiden Punkten die selbe, deswegen ist es egal welche du von beiden nimmst. Jetzt hast du das zwar links und rechts an deinen Punkten abgerundet, aber ich schätze, damit kannst du leben. LG Morty |
Laut diesem Thread :
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] werden die Parameter so berechnet: Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:00 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.