Diagonaler Pfeil



  • Kann mir Jemand ein Tip geben wie man bei einen Diagonalen Pfeilspitze Zeichnen kann. Dabei soll in ein Rechteck der Breite B, der Höhe H der Pfeil diagonal gezeichnet werden. Die Pfeispitze soll ein Dreieck seit Höhe des Dreiecks PfH, Länge der unteren Seite des Dreicks PfL.

    Es geht dabei nicht darum wie man ein Canvas Objekt benutzt, das weiß ich, sondern wie man eine saubere Diagonale Pfeispitze berechnet.
    Man benötigt drei Punkte
    TPoint Points[3];
    Der erste ist klar (Pfeil unten rechts) Points[0] = TPoint(B, H);

    wie berechnet man also die anderen beiden Punkte???

    Für jeden Tip danke Ich schonmal in voraus.



  • Hi,
    ich weiß nicht ob ich das richtig verstanden habe?

    Points[0] = TPoint(B, H);
    Points[1] = TPoint(B - PfL, H);
    Points[2] = TPoint(B + ((Pfl - B) / 2), H - PfH);
    

    Und wenn du's anders gemeint hast, lerne dich verständlich auszudrücken!

    MfG

    Alexander Sulfrian



  • Dein vorschlag funktioniert leider nicht.
    Aber trotzdem danke für deine mühe.

    Also versuch ich es mal genauer zu beschreiben.

    Eine Komponente hat Breite und Höhe(B, H) welche nicht gleich sein müssen.
    Darin Zeichne Ich eine Diagonale z.B. von Oben links nach unten rechts.
    Jetzt möchte ich einen Pfeil unten rechts Zeichnen.
    Das Problem dabei ist das die Diagonale muß nicht unbedingt 45° sein.
    Der Pfeil soll ein Dreieck sein, wobei die untere Seite des Dreiecks PfL sein soll und die Höhe des Dreieck PfH.

    Das Problem ist halt den Pfeil genau zur Diagonalen linie zu Zeichnen, also im richtigen Winkel, wenn
    Breite und Höhe der Zeichenfläche stark unterschiedlich sind.



  • Ich verstehe, was Du meinst. Du willst, egal in welchem Winkel der Pfeil gemalt werden soll, immer eine homogene Pfeilspitze im entsprechenden Winkel dranmalen, meinetwegen 2 Linien jeweils 10° nach links und rechts verdreht.

    Hm. Das Problem ist, das ich Freitag nachmittag vor Schicht keinen Bock mehr habe darüber nachzudenken. Da wirste wohl mal im Tafelwerk bei den Vektoren gucken müssen.



  • Da brauchst nicht mal bei den Vektoren nachschlagen, sondern mal ein wenig über die Winkelbeziehung im rechwinkligen Dreieck nachdenken.
    Du hast die Breite und Höhe deines Rechtecks als Katheten und die Diagonale als Hypothenuse. Somit kenns du auch immer den Winkel in dem deine Diagonale in eine Ecke auftrifft. Dann addierst du z.B. 10° dazu und gibst die Länge der Seite des Pfeils an ( somit hast du dann Polarkoordinaten) und wandelst das in rechteinklige Koordinaten um. Das gleiche nur mit negativem Winkel und du hast alle drei Punkte des Pfeils 😉
    Geht vieleicht auch einfacher, aber das fällt mit dazu spontan ein...



  • Tja, mit dem BCB hat das ja wohl weniger zu tun.

    Verschoben in's Mathe-Forum.



  • Vektorieller Ansatz:

    Du möchtest die Punkte mit den Ortsvektoren A und B verbinden, der Pfeil soll
    nach B zeigen. Sei k die Länge der Katheten.
    Sei Vektor v = k * (B - A) / |B - A| . v hat die Länge k und zeigt
    von B weg.
    Multipliziere v jetzt zweimal mit der Drehmatrix. Einmal mit dem positiven
    Winkel zwischen Kathete und Verbindungslinie, einmal mit dem negativen, und
    du erhälst die fehlenden Punkte für dein Dreieck.

    Drehmatrix:            Vektor v
    
    ( cos(x)   -sin(x) ) * ( v1 )    =  ( v1*cos(x) - v1*sin(x) )
    ( sin(x)    cos(x) )   ( v2 )       ( v2*sin(x) + v2*cos(x) )
    

Anmelden zum Antworten