matematykaszkolna.pl
Punkt zderzenia dwóch obiektów o znanej prędkości poruszania na osi współrzędnyc Marcin: Znajdź punkt zderzenia obiektu B z obiektem A na osi współrzędnych: http://i.imgur.com/ltanTm3.png Obiekt A aktualnie znajduje się w położeniu A1. Znane jest następne położenie obiektu w punkcie A2 w czasie TA. Prędkość VA = 2, długość SA|AA1|=pierw.((10−7)kw.+(12−8)kw.) = 5. A więc TA = VA * SA = 5 * 2 = 10 Obiekt B znajduje się w położeniu B1, musi zostać wystrzelony z punktu B1 po linii prostej tak by spotkał się z obiektem A. Jak obliczyć ten punkt zderzenia znając VB = 8 ? Ułatwienie dla zadania −> można to obliczyć za pomocą funkcji kwadratowej.
15 mar 20:09
Marcin: mała poprawka TA = SA / VA = 5 / 2 = 2.5
15 mar 20:14
Marcin: To jest rozwiązanie problemu ale nie wiem jak to przełożyć na zrozumiały językemotka O co chodzi z tym target velocity ? Jak dałem targetvelocity X i Y tam gdzie jest B2 to punkt kolizji zawsze jest blisko B2 nawet gdy jest on dalej czy bliżej więc to velocity chyba trzeba najpierw jakoś obliczyć, podobno jest to wektor prędkości który ma kierunek itd. ; Normalize the Target Direction + multiply the TargetVelocity Local In# = TargetVelocity/Sqr(TargetDirx*TargetDirx+TargetDiry*TargetDiry+TargetDirz*TargetDirz) Local Ix# = TargetDirx*In, Iy# = TargetDiry*In, Iz# = TargetDirz*In ; square target velocity substract square bullet velocity Local a# = Ix*Ix+Iy*Iy+Iz*Iz − BulletVelocity*BulletVelocity ; distance Bullet−> target Local Dx# = Targetx−Bulletx Local Dy# = Targety−Bullety Local Dz# = Targetz−Bulletz ; a not really complicated equation : no big deal (2.0* dot product of Distance and Target Velocity) Local b# = + Float(2.0)*( Dx*Ix + Dy*Iy + Dz*Iz ) ; the Square distance Local c# = (Dx*Dx+Dy*Dy+Dz*Dz) ; then the famous Discriminant, which is really simple Local Det# = b*b−4.0*a*c Local time#=0.0 ; And deal with 2 solutions If Det<0 Then Return −1 ; no solution If Det>0 Det=Sqr(Det) time = −0.5*(b−Det)/a If time<0 Then time=−0.5*(b+Det)/a Else time = −0.5*b/a EndIf ; And Here we are. ResultX = Dx + time * Ix ResultY = Dy + time * Iy ResultZ = Dz + time * Iz ; Eventually, normalize the result Local n# = 1.0/Sqr(Resultx*Resultx+Resulty*Resulty+Resultz*Resultz) Resultx = Resultx * n Resulty = Resulty * n Resultz = Resultz * n
16 mar 08:14
Marcin: Tu coś o velocity ale dalej nie wiem jak to zrobić: https://lbpe.wikispaces.com/GamePhysics1 Tutaj kolejne rozwiązanie problemu (na stronach matematycznych, fizycznych nigdzie takiego zadania nie znalazłememotka Pamiętam że na rozszerzonej fizyce było takie jedno zadanie z wektorami i chyba skalarami): http://www.blitzbasic.co.nz/Community/post.php?topic=100178&post=1180838 A tu kolejne post Bunny83: http://answers.unity3d.com/questions/296949/how-to-calculate-a-position-to-fire-at.html
16 mar 09:11
Marcin: Tutaj post Jeffrey Hantin :http://stackoverflow.com/questions/2248876/2d-game-fire-at-a-moving-target-by-predicting-intersection-of-projectile-and-u Dalej nie wiem co to jest to velocity X i Y przecież to jest szybkość z jaką porusza się obiekt A więc nie wiem skąd się wzięło że to wektor x,y ? I jak go obliczyć ? Mam tylko że prędkość A to 2 nic więcej.
16 mar 09:18