Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Kreisbogen durch drei Punkte
Philipp_Reitter - Mi 28.03.07 17:29
Titel: Kreisbogen durch drei Punkte
hi
Hoffe ich bin in der richtigen Sparte...
also erst mal ihr wisst sicher was ein (Um)Kreisbogen durch drei punkte ist?
(Ansonsten
hier [
http://www.geogebra.org/cms/index.php?option=com_content&task=blogcategory&id=70&Itemid=57] Webstart machen und dann bei den Kreiswerkzeugen nachschauen.)
ich bräucht ne Formel oder nen algo wie ich die einzelnen punkte in einem koordinatensystem,
also nicht das ganze einfach zeichnen auf eine Paint box oder so, herausfinden kann.
eben viele einzelne punkte...
währ toll wenn da jemand ideeen oder scripte dazu hat
Mfg
Dragonclaw - Mi 28.03.07 18:03
Guck dir mal diese Seite an:
http://www.arndt-bruenner.de/mathe/scripts/kreis3p.htm Da steht wie du ne Kreisgleichung mit 3 gegebenen Punkten berechnest. Da ich aber es nicht in Delphi packe nen Gleichungsystem zu lösung kann ich dir da leider keine Tipps geben.
Wenn du das dann geschaft hast kannst du diese Funktion zeichnen
Arno Nym hat folgendes geschrieben: |
Hi!
Auch noch Extrawünsche oder wat ??? :D
Also hier die End-Version der Funktion die auch gegen den Urzeigersinn zeichnen kann (startangle > endangle)
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| Procedure drawarc(C:TCanvas;X,Y,R:Integer;startangle,endangle:real); var p1,p2: TPoint; factor,runner : real; begin; C.Pixels[X,Y] := clred; runner := startangle; p1.X := round(cos(runner)*(R-1)+X); p1.Y := Y-round(sin(runner)*(R-1)); IF startangle < endangle Then factor := PI/R Else factor := -PI/R; While ((startangle < endangle) AND (runner < endangle)) OR ((startangle > endangle) AND (runner > endangle)) do begin; runner := runner + factor; p2.X := round(cos(runner)*(R-1)+X); p2.Y := Y-round(sin(runner)*(R-1)); C.MoveTo(p1.X,p1.Y); C.LineTo(p2.X,p2.Y); P1 := P2; end; end; |
MFG, Arno Nym |
Das Ganze wird mit aufgerufen
Delphi-Quelltext
1:
| drawarc(Form1.Canvas,XWERTMITTELPUNKT,YWERTMITTELPUNKT,RADIUS,STARTWINKEL,ENDWINKEL); |
Hoffe das hilft dir irgendwie.
delfiphan - Do 29.03.07 01:40
Du hast 3 Punkte. Damit lassen sich 2 Linien definieren. Wenn du die Mittelsenkrechte beider Linien miteinander schneidest hast du den Mittelpunkt des Kreises gefunden. Radius lässt sich per Pythagoras errechnen.
Philipp_Reitter - Fr 30.03.07 14:31
ok danke! der script gefällt mir ganz gut!!!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!