![]() |
Halbkreis zwischen zwei Punkten zeichnen.
Liste der Anhänge anzeigen (Anzahl: 1)
Servus,
habe schon bei google und hier gesucht. Habe auch schon genug funktionen gefunden um einen halbkreis zu zeichnen. Z.b. hier von einer Seite ![]() Kein Problem. Nur mein Problem ist das ich die Koordinaten außen habe, links oben und rechts unten. Zwischen den beiden soll ein halbkreis gezeichnet werden. Anbei eine Grafik wie weit ich bin. Das grüne ist das Quadrat mit den Position p1 und p2. Das rote ist ein Quadrat mit p1 + 40 und p2 + 40. Wie kann ich aber die 40 berechnen? Kann mir da einer weiterhelfen? gruß Thomas |
AW: Halbkreis zwischen zwei Punkten zeichnen.
IMHO ist alles was Du brauchst der Mittelpunkt, von dort über StartWinkel bis (Startwinkel + 180) mit DegToRad für Sinus und Coisnus die Haltepunkte berechnen (Radius ist Dir ja bekannt) und verbinden.
|
AW: Halbkreis zwischen zwei Punkten zeichnen.
Das sind doch keine Quadrate, sondern Rechtecke?!
|
AW: Halbkreis zwischen zwei Punkten zeichnen.
Zitat:
Zitat:
Und mit der Methode Arc muss ich ja 4 Punkte übergeben. |
AW: Halbkreis zwischen zwei Punkten zeichnen.
suchst Du sowas?
Delphi-Quellcode:
var
px1,py1,px2,py2, ipx1, ipy1, ipx2,ipy2:Integer; begin px1 := 100; py1 := 100; px2 := 300; py2 := 300; ipx1 := px1 + 40; ipy1 := py1 + 40; ipx2 := px2 - 40; ipy2 := py2 - 40; Canvas.Arc(px1,py1,px2,py2, ipx2,ipy2, ipx1, ipy1); end; |
AW: Halbkreis zwischen zwei Punkten zeichnen.
Genau so in der Art mache ich es Zur zeit.
Nur die 40 kenne ich ja nicht die muss ich ja berechnen nur weiß ich nicht wie. //Edit ich muss also immer ein quadrat um die beiden punkte zeichnen und diese per halbkreis verbinden. |
AW: Halbkreis zwischen zwei Punkten zeichnen.
dreh mal das innere grüne "quadrat" gedanklich um 45°.
dann solltest du es sehen ^^ die länge der diagonalen des grünen quadrats entspricht der seitenlänge des roten quadrats Edit: wenn das wirklich quadrate sein sollen ^^ |
AW: Halbkreis zwischen zwei Punkten zeichnen.
Ist jetzt die Entfernung vom äußerem zum innerem Quadrat gesucht, wobei die Seitenlänge vom äußerem Quadrat gegeben ist?
Dann:
Delphi-Quellcode:
function getQdInnerCircQdDiff(const QuadSideLenDiv2: Extended): Extended;
begin Result := QuadSideLenDiv2 - Sin(Pi/180*45)*QuadSideLenDiv2; end; |
AW: Halbkreis zwischen zwei Punkten zeichnen.
Ne das grüne habe ich. Also die Entfernung vom grünen zum roten.
45°... ja ok stimmt, jetzt muss ich das nur irgend wie in eine formel bekommen. |
AW: Halbkreis zwischen zwei Punkten zeichnen.
Du hast doch Mittelpunkt und Radius des Kreises, oder was versteh ich jetzt nicht? Daraus leitet sich doch alles weitere ab...
Vllt. mal den Kreis ganz zeichnen, dann sieht mans doch. |
AW: Halbkreis zwischen zwei Punkten zeichnen.
Dann halt: (Wenn ich mich auf die schnelle nicht vertue)
Delphi-Quellcode:
function getQdOuterCircQdDiff(const InnerQuadSideLen: Extended): Extended;
begin Result := (Sqrt(2*Power(InnerQuadSideLen,2)) - InnerQuadSideLen)/2; end; |
AW: Halbkreis zwischen zwei Punkten zeichnen.
Zitat:
<=> Result := (Sqrt(2)-1)*InnerQuadSideLen/2; |
AW: Halbkreis zwischen zwei Punkten zeichnen.
Sorry aber ich verstehe nur Bahnhof, boar eh zum kotzen wenn man das nicht mehr hinbekommt :(.
Soweit bin ich jetzt l := Sqrt( Sqr(x2-x1) + Sqr(y2-y1) ); Jetzt habe ich schonmal die Hypotenuse :wink: Wenn ich jetzt per Rectangle(0,0, l, l) bekomme ich ein Quadrat wo ich meinen halbkreis rein zeichnen kann, oder :stupid:. |
AW: Halbkreis zwischen zwei Punkten zeichnen.
Probier mal das hier:
Code:
AbstandDifferenz = SQRT(2*SeitenlängeDesQuadrats^2)/2 - SeitenlängeDesQuadrats
|
AW: Halbkreis zwischen zwei Punkten zeichnen.
ich bin sicher, dass alles ganz trivial ist...
Mir ist nicht ganz klar 1.) was hast Du 2.) was willst Du.. |
AW: Halbkreis zwischen zwei Punkten zeichnen.
Also ich habe einmal P1 x,y und P2 x,y. Das sind die beiden Koordinaten die ich mit einem Halbkreis verbinden möchte.
Den Halbkreis möchte ich mit der Methode Arc zeichnen. Wenn ich jetzt mit P1 und P2 ein Rechteck zeiche und dann mit Arc den Kreis. Ist der Kreis ja "zwischen" P1 und P2. Aber der Anfang vom Halbkreis muss P1 sein und das ende P2 im 180 Grad Winkel. Was ich habe sind P1, P2 und die Hypotenuse. Nochmal danke für die Hilfe. |
AW: Halbkreis zwischen zwei Punkten zeichnen.
Hast du dir meine Lösung genauer angeschaut?
|
AW: Halbkreis zwischen zwei Punkten zeichnen.
Ja es hat aber nicht funktioniert, oder ich habe es falsch umgesetzt.
Aber ich habe es geschafft :-D . Geht bestimmt auch einfacher :wink:.
Delphi-Quellcode:
Danke für die Hilfe!
x1 := wert;
y1 := wert; x2 := wert; y2 := wert; mx := (x2 + x1) div 2; my := (y2 + y1) div 2; laenge := Sqrt( Sqr(x2-x1) + Sqr(y2-y1) ); x1 := Round(mx-(laenge / 2)); y1 := .... Arc(x2,y2, x1,....) |
AW: Halbkreis zwischen zwei Punkten zeichnen.
Delphi-Quellcode:
var
px1,py1,px2,py2, ipx1, ipy1, ipx2,ipy2:Integer; f:Double; begin px1 := 100; py1 := 100; px2 := 500; py2 := 500; ipx1 := px1 ; ipy1 := py1 ; ipx2 := px2 ; ipy2 := py2 ; f := (1 - sin(DegToRad(45))) * (px2-px1) / SQRT(2); Canvas.Rectangle(px1,py1,px2,py2); Canvas.Arc(Round(px1 - f),Round(py1 - f),Round(px2 + f),Round(py2 + f), ipx2,ipy2, ipx1, ipy1); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:48 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