AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zeichnung

Ein Thema von woodie17 · begonnen am 23. Jun 2003 · letzter Beitrag vom 30. Jun 2003
 
Biohazard

Registriert seit: 20. Mär 2003
46 Beiträge
 
#7
  Alt 25. Jun 2003, 09: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]
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
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