Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

rklaffehn

Treue Seele

Beiträge: 267

Wohnort: Braunschweig

  • Private Nachricht senden

11

07.07.2006, 17:27

*rofl* ich hab's umständlicher gemacht, glaub ich ;)
God is real... unless declared integer.
http://www.boincstats.com/signature/user_967277_banner.gif

Anonymous

unregistriert

12

08.07.2006, 17:56

So leutz ich benötige euch mal wieder :)

Strahl mit Linie, kennt da jemand ne Formel für? Könnte auch Line/Line nehmen und eine Linie mehrere Tausend Einheiten an länge geben, aber das wäre nicht das wahre :)

Kennt da jemand was? Ein Ansatz würd mir auch reichen :)

big_muff

Alter Hase

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

13

08.07.2006, 18:12

In 2D?

Gerade1: y=a1*x+b1
Gerade2: y=a2*x+b2

a1*x+b1=a2*x+b2
x=(b2-b1)/(a1-a2)
y=a1*x+b1

a und b aus Vektoren Pos und Dir berechnen:
a=Dir.y/Dir.x
b=Pos.y-a*Pos.x

Dann noch prüfen ob die Lösung (x,y) innerhalb der gültigen Bereiche der Linie und des Strahls liegen.
Nur Idioten halten Ordnung, ein Genie beherrscht das Chaos.[size=7]

[/size]HardFate - Ein Start, Ein Ziel, Viele Wege[size=7]

[/size]Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.

Anonymous

unregistriert

14

08.07.2006, 18:14

Korrektur, nicht Linie/Gerade sondern "Strecke mit Strahl"

big_muff

Alter Hase

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

15

08.07.2006, 18:15

Kommt doch genau aufs selbe raus. zuerst musst du die Strecke und den Strahl einfach als unendliche Geraden denken. Danach prüfst du ob die Lösung im gültigen Bereich liegt. Oder macht dir genau das Probleme?
Nur Idioten halten Ordnung, ein Genie beherrscht das Chaos.[size=7]

[/size]HardFate - Ein Start, Ein Ziel, Viele Wege[size=7]

[/size]Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.

Anonymous

unregistriert

16

08.07.2006, 18:19

big_muff
Jep, genau das ist mein Problem ;) Ich habe Probleme mir so etwas vorzustellen. War schon immer mein Manko :roll: Finanzmathematik liegt mir einfach mehr :roll:

big_muff

Alter Hase

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

17

08.07.2006, 18:27

Ok.

Du hast nun also einen Schnittpunkt (CutPoint) und willst wissen ob der im Definitionsbereich des Strahls (Pos, Dir) liegt:
Der liegt genau dann drauf, wenn der Vektor vom Strahlanfangspunkt zum Schnittpunkt ind die gleiche Richtung zeigt wie der Richtungsvektor des Strahls (Punktprodukt>0). Oder in Code ausgedrückt:

Quellcode

1
2
3
4
if(DotP(CutPoint-Pos,Dir)>0)
{
    bGültigeLösung1=TRUE;
}


Bei der Linie (Pos1, Pos2) musst du prüfen ob der Schnittpunkt von beiden Punkten aus auf der richtigen Seite liegt. Oder in Code ausgedrückt:

Quellcode

1
2
3
4
if(DotP(CutPoint-Pos1, Pos2-Pos1)>0 && DotP(CutPoint-Pos2, Pos1-Pos2)>0)
{
    bGültigeLösung2=TRUE;
}


Vektorgeometrie war schon immer mein Lieblingsbereich der Mathematik :D

EDIT zu Ehren DarkHunters: Bei dem Code handelt es sich selbstverständlich um Pseudocode ;)
Nur Idioten halten Ordnung, ein Genie beherrscht das Chaos.[size=7]

[/size]HardFate - Ein Start, Ein Ziel, Viele Wege[size=7]

[/size]Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.

Sheddex

unregistriert

18

08.07.2006, 18:30

Dieser Code geht nicht... du hast ü und ö verwendet :badgrin: ;)

Anonymous

unregistriert

19

08.07.2006, 18:42

big_muff
Auf die Gefahr hin mich zu blamieren, tu ich es einfach: Wie bekomme ich denn den Schnittpunkt?

Bei deiner geposteten Formel habe ich noch paar Fragezeichen:
Gerade1: y=a1*x+b1 // müsste y1 sein, gell?
Gerade2: y=a2*x+b2 // müsste y2 sein, gell?

a1*x+b1=a2*x+b2
x=(b2-b1)/(a1-a2) // Müsste nach der gleichsetzung (denk ich mir jetzt mal aus Linearen Funktionen) der schnittpunkt X sein
y=a1*x+b1 // Schnittpunkt Y

a und b aus Vektoren Pos und Dir berechnen:
a=Dir.y/Dir.x
b=Pos.y-a*Pos.x

Was ist nun a und b wenn ich die aus Pos und Dir berechne?

edit: Dazu stellt sich mir folgende Frage: Da Du ja die beiden Funktionen gleich gesetzt hast um den Schnittpunkt zu bekommen, frage ich mich wo die Begrenzung ist?

Der Strahl hat einen Startpunkt aber keinen Endpunkt.
Die Strecke hat einen Start und einen Endpunkt
Eine Gerade hat weder Start noch ende.

Sofern wie ich mich noch zurück erinnern kann, geht das gleichsetzen von Linearen Funktionen (y=mx+b) nur wenn es sich um Geraden handelt und nicht um "Begrenzte Geraden" wie z. B. eine Strecke oder ein Strahl.

Würde ich die doch gleich setzen, könnte der Strahl über meine eigentliche Strecke "hinausschießen" und trotzdem einen Kollisionspunkt haben, oder? :?:

Anonymous

unregistriert

20

08.07.2006, 18:51

Warte, ich glaube ich habe gerade eine Eingebung, wie deine Formel läuft, bitte sag mir obs richtig ist:

- Von der Strecke errechne ich mit dem Steigungsdreieck m und b und habe daraus Funktion A

- Aus dem Strahl mache ich ebenfalls mit dem Steigungsdreieck die Steigung und Höhenverschiebung und erstelle daraus Funktion B

- Setze Funktion A mit B gleich um den schnittpunkt zu bekommen, von linearen Funktionen

- Dann prüfe ich mit dem Punktprodukt ob dieser im Zielbereich liegt, tut er dieses muß ich prüfen ob er in der Begrenzung der Strecke liegt, tut er dies ist eine Kollision vorhanden, ansonsten nicht.

Stimmt das so? :roll:

Werbeanzeige