Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zeichnung (https://www.delphipraxis.net/5926-zeichnung.html)

woodie17 23. Jun 2003 15:27


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?

JoelH 23. Jun 2003 19:05

hmm,
 
was ist denn b ? Leider fehlen mir da die Bezeichnungen ab den Geraden, dann wäre alles klarer ;)

flomei 23. Jun 2003 19:24

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.

woodie17 23. Jun 2003 21:57

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

woodie17 23. Jun 2003 22:06

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

woodie17 23. Jun 2003 22:14

ach übrigens das zeichnen liegt auf der procedure vom bottom 2 :coder:

Biohazard 25. Jun 2003 10:34

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:
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;
[edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit]

Biohazard 25. Jun 2003 11:13

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]

woodie17 25. Jun 2003 21:49

hi, danke aber das prog zeichnet nicht die richtigen winkel :cry:

mfg martin

Tiefflieger 25. Jun 2003 22:59

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.
Seite 1 von 2  1 2      

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