AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Dreiecksberechnungen und zeichnen
Thema durchsuchen
Ansicht
Themen-Optionen

Dreiecksberechnungen und zeichnen

Ein Thema von Saul · begonnen am 21. Nov 2007 · letzter Beitrag vom 1. Apr 2008
Antwort Antwort
Seite 1 von 2  1 2      
Saul
(Gast)

n/a Beiträge
 
#1

Dreiecksberechnungen und zeichnen

  Alt 21. Nov 2007, 17:47
So, jetzt habe ich es satt
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
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Dreiecksberechnungen und zeichnen

  Alt 21. Nov 2007, 18:02
Herzlich Willkommen, Saul

Wo ist deine Frage? Wie kann man dir helfen?
  Mit Zitat antworten Zitat
Saul
(Gast)

n/a Beiträge
 
#3

Re: Dreiecksberechnungen und zeichnen

  Alt 21. Nov 2007, 18:04
Ich wollte eigentlich jeweils einen kleinen Lösungsansatz haben, bitte
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: Dreiecksberechnungen und zeichnen

  Alt 21. Nov 2007, 18:09
Hi und erstmal herzlich Willkommen in der 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
  Mit Zitat antworten Zitat
Saul
(Gast)

n/a Beiträge
 
#5

Re: Dreiecksberechnungen und zeichnen

  Alt 21. Nov 2007, 18:23
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 Also ich hab halt keinen Plan, wie ich den Punkt c erstellen soll.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Dreiecksberechnungen und zeichnen

  Alt 21. Nov 2007, 20:23
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#7

Re: Dreiecksberechnungen und zeichnen

  Alt 21. Nov 2007, 20:29
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
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Saul
(Gast)

n/a Beiträge
 
#8

Re: Dreiecksberechnungen und zeichnen

  Alt 21. Nov 2007, 21:22
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).
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#9

Re: Dreiecksberechnungen und zeichnen

  Alt 21. Nov 2007, 21:24
Die Function Trunc() gibt den ganzzahligen Wert zurück, also Integer.
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Dreiecksberechnungen und zeichnen

  Alt 21. Nov 2007, 21:28
Zitat von Saul:
Ich weiß nur nicht, wie man C berechnet und den Punkt dann mit Canvas zeichnet.

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?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:19 Uhr.
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