GDI+ RotateTransform: Punkte verbinden

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    GDI+ RotateTransform: Punkte verbinden

    Hallo,

    folgende Ausgangssituation:
    • Ein Ultraschallsensor dreht sich und liest die Entfernung zur nächten Wand aus.
    • Die Daten liegen mir als Array "Map" vor.
    • Die Variable "Counts" gibt an, wie viele Messungen insg. bezogen auf 360° ausgeführt wurden und wie groß das Array ist.
    Erstmal habe ich daher folgendes Programm erstellt, welches einfach jede Messung als Strich vom Ursprung aus darstellt:

    VB.NET-Quellcode

    1. Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
    2. Dim middle As New Point(Width \ 2, Height \ 2)
    3. With e.Graphics
    4. .TranslateTransform(middle.X, middle.Y)
    5. For Each i As Integer In Map
    6. If i <> 0 Then
    7. .DrawLine(New Pen(Color.Blue), 0, 0, 0, -i)
    8. End If
    9. .RotateTransform(CSng(1 / Counts * 360), Drawing2D.MatrixOrder.Prepend)
    10. Next
    11. End With
    12. End Sub
    Klappt prima, jedoch möchte ich einen Umriss des Gemessenen anfertigen.
    Ich weiß nicht, wie ich das hinbekomme, da ich ja sozusagen das Koordinatensystem zwischen den einzelnen Messungen drehe (RotateTransform) und daher nicht einfach eine Linie ziehen kann.

    Wie mache ich das am Besten? Muss ich manuell die Position der Punkte bezogen auf ein "gerades" Koordinatensystem ausrechnen?
    MfG, BjöNi :)
    Man könnte theoretisch auch die Transformation nehmen und die Inverse davon auf die Punkte anwenden, dann hast du ebenfalls deren "echte" Position.
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.
    Vielleicht solltest Du nicht mit Einzelpunkten, sondern richtig mit Vektofren arbeiten, da gibt es vorgefertigte Klassen für.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!