Announcement

Collapse
No announcement yet.

Linie nach Winkelvorgabe zeichnen...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Linie nach Winkelvorgabe zeichnen...

    Hallo Leser,

    das habe ich mir schon einfacher vorgestellt. ;-)
    Ich möchte gerne in einem Kreis eine Linie (Länge gleich Radius des Kreises) ausgehend von der Mitte, in einem Winkel x zeichnen.

    Suche also nach einer Funktion der ich die Länge der Linie und den Winkel übergeben kann und bekomme den TPoint (x,y) zurückgibt wo die Linie endet.

    Kann mir da vielleicht jemand helfen?
    Ich habe den Beitrag von Hagen in diesem Forum bereits gelesen aber dort wurde der gesuchte Punkt bereits vorgegeben. ;-I

    MfG Benny

  • #2
    Hi !

    Wenn ich Dich richtig verstanden habe, dann kommst wie folgt weiter:

    Variablen:
    MX, MY = Mittelpunkt des Kreises
    R = Radius des Kreises
    alpha = Winkel

    Anfangspunkt Deiner Linie: MX, MY
    Endpunkt Deiner Linie: (cos(alpha)*R+MX), (sin(alpha)*R+MY

    Comment


    • #3
      Hi!

      Hmm habe ich gerade probiert... leider ist mir der Rechner abgeschmiert! ;-( Lag aber nicht an Deinem Vorschlag es lief ja ein bischen... ;-)

      Nun war der Endpunk schon Klasse auf dem Kreis nur ist die Linie tierisch gesprungen.

      0 Grad war die Linie von M(itte) nach ganz rechts.
      1 Grad da war die Linie von M auf fast 45°... ???

      Ich probier aber morgen nochmal vielleicht habe ich auch was falsch gemacht...

      MfG Benn

      Comment


      • #4
        Hallo Benny,<br>du darfst den Winkel nicht in Grad übergeben.<br>Die trigonometrischen Funktionen arbeiten mit Raidiant. Ein Winkel von 90 Grad entspricht Pi/2 in Radiant. Du kannst natürlich den Grad-Winkel in Radiant umrechnen.<br>
        x = Winkel in Grad<br>
        y = Winkel in Radiant<br>
        <b>y=Pi*x/180</b><br&gt

        Comment


        • #5
          Hallo meine Helfer, ;-)<br>
          <br>
          ich möchte mich an dieser Stelle bei Euch bedanken und Euch meine fertige function nicht vorenthalten.<br><br>

          function GetLineEndPos poiGo:TPoint;intR:integer;worAlpha:word):TPoint;<b r>
          var extAlpha:extended;<br>
          worOffset:Word;<br>
          begin<br>
          worOffset:=90;<br>
          extAlpha:=Pi*(worAlpha-worOffset)/180;<br>
          Result.x:=Floor(cos(extAlpha)*intR+poiGo.x);<br>
          Result.y:=Floor(sin(extAlpha)*intR+poiGo.y);<br>
          end;<br>
          <br>
          Mit Sicherheit Verbesserungsfähig... ich habe die Variable Offset noch eingeschummelt damit man die Möglichkeit hat den Startpunkt (0 Grad) zu "verschieben". Ich benötige die Routine für eine Himmelsrichtungs -Anzeige und Norden ist nunmal 0 Grad. ;-)<br>
          <br>
          Vielen Dank nochmal für die Hilfe... Benn

          Comment

          Working...
          X