![]() |
Zeichnung
Liste der Anhänge anzeigen (Anzahl: 1)
HI wieso zeichnet der wenn man als seitenlängen bei a=4, b=5 und c=3
b falsch? |
hmm,
was ist denn b ? Leider fehlen mir da die Bezeichnungen ab den Geraden, dann wäre alles klarer ;)
|
Was mich stört ist das auftauchende Fenster das mir sagt: "Das Dreieck ist konstruierbar." Das stört unheimlich. Würd ich wegmachen.
MfG Florian :hi: P.S.: Ach ja, Bezeichnungen wären wirklich sehr sinnvoll. |
hmm ja stimmt das mit den seiten dass da nix dransteht aber ich weiss nich wie ich da was dranschreiben lassen kann
also unten die seite ist c oben links die is seite a un oben rechts b und das mit dem showmessage kram kann ich ja noch wegmachen mfg martin |
also ist links unten auch alpha, rechts unten beta un oben gamma
so aber der zeichnet wenn beta 90° ist für beta keine 90° das wäre zb bei a=4 b=5 un c=3 |
ach übrigens das zeichnen liegt auf der procedure vom bottom 2 :coder:
|
Hallo,
Habe mir mal die Freiheit genommen deinen Quelltext abzuändern. Mit deinen Berechungen bin ich irgendwie nicht klargekommen. Ist nur ein Test und ich weiß nich ob es für alle Variationen funzt. Die meisten die ich probiert habe, gingen. Mir ist nur aufgefallen, daß manchmal nicht das richtige Größenverhältnis gezeichnet wird(z.B. bei a=5,b=4,c=3 da geht es über den Rand hinaus). Vieleicht muß ja nur was an den Umrechnungsfaktoren geändert werden. Probiers halt mal aus, wenn es dir was nützt.
Delphi-Quellcode:
[edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit]
procedure TForm1.Button2Click(Sender: TObject);
var x_start,y_start,err1,err2,err3: integer; x1, h1, laenge,a,b,c,a2,b2,c2 :double; p,q,hp,hq:Extended; function dreieck(SeiteA,SeiteB,SeiteC : double): double; begin try p:=(c*c + b*b - a*a)/(2*c); //P = Lotabschnitt von c auf der b-Seite q:=(c*c + a*a - b*b)/(2*c); //q = Lotabschnitt von c auf der a-Seite hp := b*b - p*p; //wobei nur hp oder hq gebraucht wird hq := a*a - q*q; //ist ein und der selbe Wert (Höhe) hp := sqrt(hp); //wurde nur zur konntrolle 2 mal berechnet hq := sqrt(hq); laenge := 0.9 * paintbox1.width; h1 := hp*laenge/c; x1 := q*laenge/c; c := laenge; {Zeichne Dreieck} x_start := round(0.05*paintbox1.width); y_start := round((paintbox1.height + h1) / 2); with paintbox1.canvas do begin rectangle(0,0,paintbox1.height,paintbox1.width); MoveTo(x_start, y_start); LineTo(x_start + round(c), y_start); LineTo(x_start + round(x1), y_start - round(h1)); LineTo(x_start, y_start); end; {of with} except showmessage('Sorry, Probleme beim Zeichnen!'); end; end; begin {Lege Maximum auf c} val(edit1.text,a2,err1); val(edit2.text,b2,err2); val(edit3.text,c2,err3); if (c>b) and (c>a) then begin a:=a2; b:=b2; c:=c2; dreieck(a,b,c); end; if (a>b) and (a>c) then begin c:=a2; b:=b2; a:=c2; dreieck(a,b,c); end; if (b>c) and (b>a) then begin b:=a2; c:=b2; a:=c2; dreieck(a,b,c); end; if (b=c) and (b=a) and (c=a) then a:=a2; b:=b2; c:=c2; dreieck(a,b,c); end; |
Huch,
Hab da was übersehen. In bei den IF's mußt du noch a,b,c durch a2,b2,c2 ersetzen. a,b,c haben zu dieser zeit ja noch keinen Wert zugewiesen bekommen. [EDIT=Christian Seehase] Doppelposting gelöscht [/EDIT] |
hi, danke aber das prog zeichnet nicht die richtigen winkel :cry:
mfg martin |
moin,
binde noch zusätzlich die unit "math" ein, dann steht dir die funktion arccos zur verfügung und du brauchst sie nciht selbst zu schreiben ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 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