Rechteck- abstand vom Rand bis zum definierten punkt

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

    • Rechteck- abstand vom Rand bis zum definierten punkt

      Hallo Leute. Wieder eines Meiner Probleme mit dem üblichen Thema "Trigonometrie". (Mittlerweile dürften wir alle damit einverstanden sein dass dies nicht so wirklich meine Stärke ist...)

      Eine weitere Grafik:


      Was nun die Problemstellung ist?

      Ich habe ein Rechteck mit einer höhe,breite als auch rotation.

      in diesem Rechteck, gibt es einen Punkt (blau gekennzeichnet) den ich "anvisiere".
      Was ich nun möchte, ist die "breite" des Rechtecks berechnen. diese ist in dieser grafik grün gekennzeichnet.

      grundsätzlich kein Problem. Jedoch ist dieses Dreieck im Koordinatensystem des GMs gedreht (origin des rechteckes ist der rote Punkt.)
      Ich habe mir scho ngedanken darüber gemacht wie ich das lösen könnte, kam aber (insbesondere bezüglich der rotation des gesamten Rechteckes) nicht wirklich auf die Lösung.

      In der grafik kann man einen Rechten winkel erkennen den ich nutzen wollte um die eine (grüne) Kathete zu berechnen die ja eigentlich die Lösung wäre.

      Was ich u.a. gegeben habe ist die länge der Hypothenuse (point_distance) und den Winkel der gelb makriert ist.

      Daher dachte ich dass ich die formel verwenden könnte:
      kathete = Hypothenuse/cos(gelber winkel);

      Das Problem eben ist das, dass durch die rotation des GMs im Koordinatensystem die ganzen winkel nun auch im System verschoben werden was die ganze sache nochmals unübersichtlicher macht. Daher: Ich habe keinen gelben winkel.
      Um diesache nochmals kompliziert zu machen, wird das "cos" in der berechnung nicht funktionieren, da bei einer leicht verstellten rotation des rechteckes das cos ebenso falsche werte liefert. (sin könnte man statt cos auch nutzen, aber das problem bleibt das gleiche, kommt eben auf die rotation an.)

      Also kurzgesagt:

      Ich habe ein Rechteck mit einem ursprungspunkt rx,ry, einer höhe,breite und einer rotation.
      Dann habe ich auch noch einen eigenen definierten punkt sx,sy gegeben.

      Wie berechne ich mir die länge der (in der Skizze gekennzeichneten) grünen Linie aus?

      /Edit: Bemerke gerade dass ich den gelben winkel in der Skizze mit einem Punkt markiert habe. Das darf man ja nicht ,da es ja kein rechter winkel ist. XD
    • Also wenn ich das richtig verstanden habe, dann ist die Lösung dieses Skript: gmlscripts.com/script/point_line_distance
      Die Linie die du Angeben must ist dabei einfach die Linie zwischen dem Punkt rx,ry und der Ecke unten (auf deiner Grafik). Diese Ecke wiederum kannst du mittels lengthdir_x/y berechnen.

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)
    • Edit: OMG, sorry for necro.

      Der eleganteste Weg wäre eine Vektorprojektion wie point_line_distance, für Die Du aber wie gesagt den entfernten Eckpunkt des Rechtecks kennen musst oder ihn errechnen kannst, via lengthdir(intern sieht die formel so aus):

      Quellcode

      1. ex = rx + cos(rechteck_winkel_in_radians) * height;
      2. ey = ry + sin(rechteck_winkel_in_radians) * height;


      Eine Trigonometrische Lösung (bischen vorsicht geboten mit dem definitionsbereich von atan2: Punkt sx,sy darf nicht gleich rx,ry sein; außerdem sollte sx, sy möglichst innerhalb des Rechtecks liegen, bzw. sollte gelber_winkel nicht negativ werden):

      Quellcode

      1. rechteck_winkel_in_radians = rechteck_winkel_in_grad / 180 * PI;
      2. gelber_winkel = arctan2((sy-ry), (sx-rx)) - rechteck_winkel_in_radians;
      3. grüne_linie = sin(gelber_winkel) * point_distance(rx, ry, sx, sy);
    • Benutzer online 1

      1 Besucher