![]() |
Berechnung einer linie
Moin leute ,
da so wies aussieht keiner meinen Beitrag den ich vor einer weile schon mal gepostet habe (Gegnerbewegung) verstanden ha t versuch e ich mich jetzt halt mal verständlich auszudrücken: Mein problem ist eigentlich ganz einfach , ich brauche nur eine Formel oder so was die mir eine Linie berechnet und falls jemaden weiss wie , auch nen Halbkreis . Also praktisch wie eine eigene LineTo Prozedure! |
Die Punkte, die beim Weg von einem Punkt zum anderen betreten werden kannst du dir mit dem Satz des Pythagoras ausrechnen. Im 3D-RAum musst du ihn einmal auf zwei Achsen und dann auf das Ergibnis und die dritte Achse anwenden.
Halbkreis: Entferung der Punkte berechnen, Mittelpunkt bestimmen und dann wieder Phytagoras und ein wenig Trigonometrie. Aber dafür gibts bestimmt irgendwo schon was vorgefertigtes... |
Jo Danke !
Muss ich halt mal ins Mathe-Buch schaun ! |
Hallo erstmal,
die LineTo Procedure steckt doch im Canvas schon drin und auch die Cricle Funktion ist im Canvas einer Paintbox oder eines images schon vorhanden. MFG Thomas |
Moin Thomas
Die Prozeduren von Canvas kann ich nicht benutzten , denn ich brauche die Koordinaten der Punkte , und soweit ich weiss gibt Canvas nur Grafik aus , oder ich bin falsch informiert ! Aber da muss es sicherlich ne Formel oder sowas geben , das mit Pythagoras hab ich nämlich nich so drauf ! |
Was ist von der Linie bekannt und was suchst du?
|
Er hat den Anfangspunkt und den Endpunkt und sucht alle Punkte dazwischen. (Anfangspunkt = Momentaner Ort des Gegners, Endpunkt = Wo die KI den Gegener hin haben will, Linie = Punkte, auf die der Gegner muss um vom Anfang ans Ende zu kommen).
|
Jo , simmt genau , nur das ich die EndPunkte später dann aus einer datei einlese.
|
Obwohl ... , so ne KI hätte auch was !
|
Brauchst die Berechnung für 2D oder 3D?
|
Bei Linien ist das doch vom Prinzip her das gleiche.
|
Ich bräucht's nur 2D , denn wenn 's fertig ist wirds mal ein Acade-shooter(Die gute alte zeit).
|
Also du hast die Punkte P1 (x1, y1) und P2 (x2, y2) gegeben. Dann kannst du den Abstand zwischen den zwei Punkten berechnen:
Abstand := SQRT(SQR(x2-x1)+SQR(y2-y1)). Disen Abstand kannst du durch die Anzahl der Punkte die du haben willst teilen. Diese Zahl soll r sein. Dann kannst du einen Punkt P3( x3, y3) berechnen: x3 = x1 + r(x2-x1) y3 = y1 + r(y2-y1) Für den nächsten Punkt setzt du statt r einfach r+r ein, dann r+r+r... Wenn ich mich richtig Mathe erinnere müsste es so gehen. |
:hello: genau nach sowas hab ich gesucht !
aber kleine Frag e noch bevor ich's progge : der Punkt P4 ist dann x4 = x1 + r(x2-x1) + r(x2-x1) y4 = y1 + r(y2-y1) + r(y2-y1) oder ? |
Eigentlich ja, aber es ist viel einfacher wenn du
x4=x1+2*r*(x2-x1) y4=y1+2*r*(y2-y1) schreibst. |
Optimal !
Aber weisst du wie man das ganze mit einem halbkreis statt einer linie mach t? |
Hi braingrenade,
der Mathematiker Bresenham hat ein paar solcher Algorithmen entwickelt, der hier dürfte interessant für dich sein: ![]() MfG, d3g |
x3 = x1 + r(x2-x1)
y3 = y1 + r(y2-y1) ist falsch. wenn r die anzahl der punkte ist, dann müsste das da gelten: x3 = x1 + ((x2-x1)/r * "anzahl, wievielter punkt") |
verdammt kompliziert dieser kreis - Algo !
Muss mich halt mal ein bischen reinhängen ! Wenn das ganze dann 20?? fertig ist stell ich's als erstes ins forum ! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz