Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Dreiecksberechnungen und zeichnen (https://www.delphipraxis.net/103778-dreiecksberechnungen-und-zeichnen.html)

Saul 21. Nov 2007 16:47


Dreiecksberechnungen und zeichnen
 
So, jetzt habe ich es satt :wall:
Ich quäle mich jetzt schon sechs Tage an einem Programm und komme einfach nicht voran.
Drum komme ich in diese Community, mit der Hoffnung ein paar Tipps zu erhaschen.
Ich habe auch schon in der Suche geforscht, aber leider nix passendes und leicht verständliches gefunden.

Also ich muss ein Programm schreiben, mit dem man ein paar Dinge berechnen kann.
Das berechnen ist ja nicht das Problem. Mein Problem besteht darin, die Grundlagen zu erstellen um diese Rechnung durchzuführen.
D.h. ich muss prüfen lassen, ob das Dreieck konstruierbar ist oder nicht.
Hatte auch schon ein paar Ideen, die alle durch eine gewisse Fehlermeldung (irgend so ein EConvertError) zerstört wurden. Vielleicht hab ihr ja ein paar Ansätze für mich.
Es steht ja fest, das das Dreieck nur konstruierbar ist, wenn die Summe zweier Seiten größer als die dritte Seite ist. D.h. also, das man bei dem Programm drei Seiten eingeben muss. Nach der Eingabe der dritten Seite soll ausgegeben werden, ob die eben genannte Bedingung erfüllt ist.

Mein zweites Problem ist das zeichnen des Dreiecks. Das zeichnen soll auf einer Paintbox geschehen.
Ich habe schon die Punkte A und B so definiert, das die Seite c immer horizontal verläuft. Nun muss ich aber (um das Dreieck zeichnen zu können) noch die Koordinaten des Punktes C in die Paintbox übertragen. Die Koordinaten wollte ich zuerst durch die höhe auf der Seite c berechnen, aber kein chance.

Jetzt weiß ich erstmal nicht mehr was ich schreiben soll
Gruß Saul

Jelly 21. Nov 2007 17:02

Re: Dreiecksberechnungen und zeichnen
 
Herzlich Willkommen, Saul :dp:

Wo ist deine Frage? Wie kann man dir helfen?

Saul 21. Nov 2007 17:04

Re: Dreiecksberechnungen und zeichnen
 
Ich wollte eigentlich jeweils einen kleinen Lösungsansatz haben, bitte :duck:

Der_Unwissende 21. Nov 2007 17:09

Re: Dreiecksberechnungen und zeichnen
 
Hi und erstmal herzlich Willkommen in der DP :dp:

Was Du immer schreiben solltest ist, was genau möchtest Du machen, was hast Du schon versucht, woran scheiterst Du gerade. Da hast Du schon einen guten Anfang gemacht, trotzdem fehlen da ein paar Dinge.
Wichtig ist, wenn Du einen Ansatz hast, dann kennst nur Du den. Wenn Du den also beschreibst, dann musst Du das immer so ausführlich wie möglich machen, dann können die Leute besser verstehen wo Du hängst / was falsch ist und Dir erst helfen. Kommt ein Fehler, dann solltest Du den nicht als irgendeinen abtun, sondern schon sagen in welcher Situation der Fehler kommt und wie der genau lautet. Irgendein EConvertError kann eben durch irgendeine falsche Konvertierung geschehen (hilft Dir kaum weiter, oder?!).

Auch wenn Du von den Punkten A,B,C und den gerade a, b und c sprichst, so ist es besser wenn Du nochmal sagst, welche Gerade zwischen welchen Punkten verläuft (nur um Missverständnissen vorzubeugen!).
Dein Problem besteht ja erstmal aus zwei Teilproblemen, Du benötigst die Rechnung und dann eben das Zeichnen. Mir ist noch nicht ganz klar, ob Du die Rechnung schon vollständig hast oder eben nicht? Könntest Du dazu noch was sagen?

Was die Formeln angeht, so ist es sicherlich kein Geheimnis, dass Du die einfach bei Wiki findest. Da gibt es dann den recht bekannten Kosinussatz. Über den kannst Du z.B. die Winkel recht einfach bestimmen, darüber dann auch den Rest (die Höhe, über den Euklid'schen Kathetensatz den Punkt auf der Geraden c, über dem eben der Punkt C liegt und dann hast Du es ja schon).

Gruß Der Unwissende

Saul 21. Nov 2007 17:23

Re: Dreiecksberechnungen und zeichnen
 
Zitat:

Zitat von Der_Unwissende
Auch wenn Du von den Punkten A,B,C und den gerade a, b und c sprichst, so ist es besser wenn Du nochmal sagst, welche Gerade zwischen welchen Punkten verläuft (nur um Missverständnissen vorzubeugen!).
Dein Problem besteht ja erstmal aus zwei Teilproblemen, Du benötigst die Rechnung und dann eben das Zeichnen. Mir ist noch nicht ganz klar, ob Du die Rechnung schon vollständig hast oder eben nicht? Könntest Du dazu noch was sagen?

Dann leg ich es mal so fest: Seite a=Strecke(BC), Seite b=Strecke(AC) und Seite c=Strecke(AB).
Die Rechnung ist soweit vollständig. also darüber brauchen wir nicht mehr reden. Ich finde halt nur keine richtig Ansätze für das zeichnen und das Prüfen, ob das Dreieck konstruierbar ist oder nicht.
Beim Prüfen finde ich eigentlich gar keinen Ansatz.
Das zeichnen wollte ich ungefähr so durchführen:
Code:
procedure TForm1.Button6Click(Sender: TObject);
  var hc, p, SeiteA: Integer;
      A, B, C: TPoint;
  begin
    with PaintBox1 do begin
      // Bestimmen der Koordinaten für die Punkte A, B und C
        A.X:= 20;
        A.Y:= height-20;
        B.X:= width-20;
        B.Y:= A.y;

        SeiteA:= trunc(sqrt(sqr(B.X-C.X)+sqr(C.Y-B.Y)));
        SeiteB:= trunc(sqrt(sqr(C.X-A.X)+sqr(C.Y-A.Y)));
        SeiteC:= trunc(sqrt(sqr(B.X-A.X)+sqr(B.Y-A.Y)));
        Betta:= ArcCos((Sqr(SeiteA)-Sqr(SeiteB)+Sqr(SeiteC))/(2*SeiteA*SeiteC));
        hc:= SeiteA*trunc(sin(Betta));
        p:= trunc(sqrt(sqr(SeiteB)-sqr(hc)));
        C.X:= A.X + p;
        C.Y:= A.Y - hc;
       
      // Zeichnen durch Verbinden der Eckpunkte
        canvas.moveto(A.X, A.Y);
        canvas.lineto(B.X, B.Y);
        canvas.lineto(C.X, C.Y);
        canvas.lineto(A.X, A.Y);
    end;
  end;
Aber irgendwie schein da ein logischer Fehler drin zu sein :cry: Also ich hab halt keinen Plan, wie ich den Punkt c erstellen soll.

Jelly 21. Nov 2007 19:23

Re: Dreiecksberechnungen und zeichnen
 
Also lass auf jeden Fall mal die ganzen Trunc's weg, das verfälscht ja komplett deine Berechnung.

Aber ich versteh immer noch nicht was du überhaupt rechnen willst. Was sind deine genauen Vorgaben und was sollst du rechnen/zeichnen? Du musst schon etwas genauer werden.

Soviel ich von deiner Frage verstanden hab:
Du hast 3 Punkte A, B und C. Die untereinander zu verbinden machst du ja mit deinen Canvas Operationen. Das sollte klappen. A und B gibts du dir vor. C errechnest du auf irgendeine Weise, die ich jetzt so auf Anhieb nicht in meinen Kopf krieg. Also erklär uns doch mal bitte, worum es bei der ganzen Sache überhaupt geht.

DeddyH 21. Nov 2007 19:29

Re: Dreiecksberechnungen und zeichnen
 
Zitat:

Zitat von Jelly
C errechnest du auf irgendeine Weise, die ich jetzt so auf Anhieb nicht in meinen Kopf krieg. Also erklär uns doch mal bitte, worum es bei der ganzen Sache überhaupt geht.

*Puuhh* Ich dachte schon, das geht nur mir so :lol:

Saul 21. Nov 2007 20:22

Re: Dreiecksberechnungen und zeichnen
 
Zitat:

Zitat von Jelly
Soviel ich von deiner Frage verstanden hab:
Du hast 3 Punkte A, B und C. Die untereinander zu verbinden machst du ja mit deinen Canvas Operationen. Das sollte klappen. A und B gibts du dir vor. C errechnest du auf irgendeine Weise, die ich jetzt so auf Anhieb nicht in meinen Kopf krieg. Also erklär uns doch mal bitte, worum es bei der ganzen Sache überhaupt geht.

Naja du hast doch alles verstanden, was ich machen möchte. Ich weiß nur nicht, wie man C berechnet und den Punkt dann mit Canvas zeichnet.
Bezüglich des trunc:
Wenn ich trunc weglasse, kommt ein Fehler bezüglich der Typen Integer (benötige ich für TPoint) und Extended (beim Wurzel ziehen).

Progman 21. Nov 2007 20:24

Re: Dreiecksberechnungen und zeichnen
 
Die Function Trunc() gibt den ganzzahligen Wert zurück, also Integer.

Jelly 21. Nov 2007 20:28

Re: Dreiecksberechnungen und zeichnen
 
Zitat:

Zitat von Saul
Ich weiß nur nicht, wie man C berechnet und den Punkt dann mit Canvas zeichnet.

:wall: :wall:
Sorry, aber ich habe keine Lust weiterzuraten. Ich kann dir ungefähr 27 Billionen Punkte für C nennen, damit du ein Dreieck (A,B,C) zeichnen kannst.

WAS WILLST DU RECHNEN?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:32 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz