Mittelpunkt eines gedrehten Rechtecks berechnen.

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Mittelpunkt eines gedrehten Rechtecks berechnen.

    Hi Leute!

    Ich habe ein kleines mathematisches Problem dass ich nicht wirklich lösen kann.

    Ich habe ein Rechteck, dessen Origin in der linken oberen ecke liegt.
    Nun, das Rechteck hat legendlich 3 Parameter:

    - breite
    - höhe
    - drehwinkel um den origin


    Das Problem: Ich drehe das Objekt in einem winkel um den origin point (blauer punkt auf der Skizze)
    Was ich nun möchte ist die x und y Koordinate des Rechtecks berechnen (roter Punkt auf der Skizze)

    Habt ihr eine Ahnung wie man das Mathematisch lösen könnte?
    Ich habe alles mögliche was mir einfiel mit winkelrechnungen und auch dem Trigoniometrischen Lehrsatz versucht.
    Es gab jedoch immer abweichungen oder gar fehlerhafte berechnungen.

    Ich hoffe ihr habt eine Ahnung für diese Problemstellung. XD

    /Edit: Upps" Bild vergessen. XD

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von LEWA ()

  • Das Problem ist nur dass du mit dieser Formal zwar die länge berechnest die zwischen den 2 Seiten besteht, aber nicht die Richtung.
    Das Rechteck kann nähmlich gedreht werden. Daher muss das auch mit gedrehten seiten funktionieren (siehe bild in meinem ersten post.)
  • Ich habe dir ein Skript geschrieben welches dies bewerkstelligt.
    Die Anwendung sollte sich von selbst erübrigen.

    GML-Quellcode

    1. // point_rotate (angle, point_x, point_y, out_x, out_y)
    2. variable_local_set(argument3, argument1 * cos(degtorad(argument0)) - argument2 * sin(degtorad(argument0));
    3. variable_local_set(argument4, argument1 * sin(degtorad(argument0)) + argument2 * cos(degtorad(argument0));


    €dit: nimm lieber trixt0r's...
  • Also, du willst den Mittelpunkt eines Rechteckes berechnen? Dann mach das auch erstmal. Am besten geht das mit dist = point_distance(0,0,breite/2,höhe/2). Dann hättest du schon mal die Länge vom Origin zum Mittelpunk.
    Was du noch brauchst, ist der Winkel. Den kriegst du mit angle = point_direction(0,0,breite/2,höhe/2)raus. Die zwei Berechnungen würde ich nur im Create-Event oder so machen. Halt da wo es nicht permanent ausgeführt wird, da du dir die Infos nur einmal holen musst.
    Und dann kannst mit lengthdir_x und lenthdir_y den Mittelpunkt in Relation zum Drehwinkel in jedem Step berechnen.


    GML-Quellcode

    1. mid_x = origin_x+lengthdir_x(dist,angle+rot_angle);
    2. mid_y = origin_y+lengthdir_y(dist,angle+rot_angle);
    3. /*Wobei rot_angle der aktuelle Winkel des Rechtecks ist und origin_x/y dein Origin.*/

    Albert Einstein schrieb:

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
  • Keine Ahnung, obs noch was bringt, aber der Mittelpunkt eines gedrehten Rechteckes liegt genau im Mittelpunkt seiner "Bounding-Box".

    xRechts - xLinks = xMitte
    yOben - yUnten = yMitte (oder umgekehrt, je nachdem in welche Richtung die Achsen gucken)

    "Es gibt nie ein glückliches Ende, denn es endet nichts." - Schmendrick