Autor Beitrag
Philipp_Reitter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 430



BeitragVerfasst: Mi 28.03.07 17:29 
hi

Hoffe ich bin in der richtigen Sparte...

also erst mal ihr wisst sicher was ein (Um)Kreisbogen durch drei punkte ist?
(Ansonsten hier 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 196

Windows Vista
Delphi 7 Prof.
BeitragVerfasst: Mi 28.03.07 18:03 
Guck dir mal diese Seite an: www.arndt-bruenner.d.../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

user profile iconArno 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)
ausblenden 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.Rectangle(X-R,Y-R,X+R,Y+R);
 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
ausblenden Delphi-Quelltext
1:
drawarc(Form1.Canvas,XWERTMITTELPUNKT,YWERTMITTELPUNKT,RADIUS,STARTWINKEL,ENDWINKEL);					


Hoffe das hilft dir irgendwie.
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 430



BeitragVerfasst: Fr 30.03.07 14:31 
ok danke! der script gefällt mir ganz gut!!!