Matheexperten! Größter Punkt eines Kreises von anderem Punkt berechnen

    • GM 8

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

    • Matheexperten! Größter Punkt eines Kreises von anderem Punkt berechnen

      Hey,

      ich möchte wie im angehängten Bild die roten Markierungen am Kreis berechnen, habe aber keine Ahnung wie ich das anstellen kann. Die gegebenen Werte sind der Mittelpunkt des Kreises, der Radius des Kreises und der Punkt, von dem "gesehen" wird. Da sich die Positionen der Objekte verändern können, weiß ich nicht, wie ich das am besten Berechnen kann. Ich hoffe einer von euch hat einen Lösungsvorschlag.

      Falls ihr etwas von meiner Seite aus nicht versteht einfach fragen. :)
      Bilder
      • Bsp.png

        6,63 kB, 558×394, 127 mal angesehen
      Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.
    • Da du den Mittelpunkt des Kreises, die hypotenuse und Winkel beta und gamma sowie den radius kennst, kannst du dir ganz easy den winkel alpha errechnen und mit alpha und dem radius bzw den lengthdir funktionen kommst du dann auf die roten Punkte die du berechnen willst.
      Gamma ist immer ein rechter Winkel von 90 Grad und die Hypotenuse ist immer die entfernung von kreismittelpunkt zum Spieler/roten Stern.
      Bilder
      • Bsp.png

        13,1 kB, 558×394, 140 mal angesehen

      ancient-pixel.com
      youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
    • Danke, hat mir auch gerade mein Bruder so vorgeschlagen. Hab den Rechtenwinkel leider nicht bemerkt.

      Edit:
      Habe noch eine Frage, wenn ich den Winkel will, muss ich cos^-1 rechnen, wie mache ich das in Game Maker?
      Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Dufner ()

    • Also im letzen Abschnitt konnte ich nur Funktionen wie "exp, ln, power" finden, welche nicht funktionierten. Allerdings bin ich dadurch auf arccos gestoßen welche genau das macht, nur in radian wieder gibt. Also noch /0.0174532925 rechnen um man hat den Wert in Grad.

      Danke :rolleyes:


      Edit:
      Klappt alles Wunderbar! :)

      Der Code lautet nun so, falls ihn jemand braucht:
      Spoiler anzeigen


      var
      licht ist der "andere" Punkt
      Lradius ist unwichtig, z.B. 600

      GML-Quellcode

      1. radius = (sprite_width/2)
      2. if round(point_distance(x,y,licht.x,licht.y)) <= radius // distance darf nicht unter den Radius fallen, sonst wird durch 0 geteilt
      3. {distance = radius}
      4. else
      5. {distance = point_distance(x,y,licht.x,licht.y)}
      6. point_cos = (arccos(radius/distance)) / 0.0174532925
      7. point_dir = point_direction(x,y,licht.x,licht.y)
      8. point_x[0] = x+lengthdir_x(radius,point_dir+point_cos)
      9. point_y[0] = y+lengthdir_y(radius,point_dir+point_cos)
      10. point_x[1] = x+lengthdir_x(radius,point_dir-point_cos)
      11. point_y[1] = y+lengthdir_y(radius,point_dir-point_cos)
      12. point_x[2] = point_x[0]+lengthdir_x(Lradius*3,point_direction(licht.x,licht.y,point_x[0],point_y[0]))
      13. point_y[2] = point_y[0]+lengthdir_y(Lradius*3,point_direction(licht.x,licht.y,point_x[0],point_y[0]))
      14. point_x[3] = point_x[1]+lengthdir_x(Lradius*3,point_direction(licht.x,licht.y,point_x[1],point_y[1]))
      15. point_y[3] = point_y[1]+lengthdir_y(Lradius*3,point_direction(licht.x,licht.y,point_x[1],point_y[1]))
      16. draw_primitive_begin(pr_trianglestrip)
      17. for(i=0 ; i<4 ; i+=1)
      18. {
      19. draw_vertex(point_x[i],point_y[i])
      20. }
      21. draw_primitive_end()
      22. draw_set_color(c_white)
      23. draw_circle(point_x[0],point_y[0],2,0)
      24. draw_circle(point_x[1],point_y[1],2,0)
      25. draw_set_color(c_black)
      Alles anzeigen

      Mit diesem Code wird der Punkt von der Frage berechnet und anschließend die Richtung ab dem Punkt,mit der Richtung vom Punkt licht, weiter weg berechnet, was den Schatteneffekt hervorruft.

      Und das kommt dann bei den Kreisen raus:
      Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.

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