Linien-Pfeil zeichnen (Trigonometrie)



  • Hallo,

    Ist jemand so nett und erklärt mir die mathematischen Hintergründe für diesen Code? Es geht darum eine Linie mit einem Pfeil am Ende zu zeichnen. Ist eigentlich auch Windows GDI, aber dieser Teil ist mir eigentlich klar.

    Anmerkung: M_One ist der Anfangspunkt der Linie, dort ist auch der Pfeil

    void DrawArrow(CDC *pdc,CPoint m_One, CPoint m_Two)
    {
      double slopy , cosy , siny;
      double Par = 10.0;  //length of Arrow (>)
      slopy = atan2( ( m_One.y - m_Two.y ),
        ( m_One.x - m_Two.x ) );
      cosy = cos( slopy );
      siny = sin( slopy ); //need math.h for these functions
    
      //draw a line between the 2 endpoint
      pdc->MoveTo( m_One );
      pdc->LineTo( m_Two );
    
      //here is the tough part - actually drawing the arrows
      //a total of 3 lines drawn to make the arrow shape
      pdc->MoveTo( m_One);
      pdc->LineTo( m_One.x + int( - Par * cosy - ( Par / 2.0 * siny ) ),
        m_One.y + int( - Par * siny + ( Par / 2.0 * cosy ) ) );
      pdc->LineTo( m_One.x + int( - Par * cosy + ( Par / 2.0 * siny ) ),
        m_One.y - int( Par / 2.0 * cosy + Par * siny ) );
      pdc->LineTo( m_One );
    

    Danke,

    Raphael


Anmelden zum Antworten