Bien vu le cercle ! Mais on simplifie un peut car on considère une accélération angulaire infinie (ca sera suffisant dans un jeu): en effet, en A, on a une direction donnée, et l'instant d'après, même s'il est petit, on tourne déjà, d'un angle constant... Si on était en voiture, cela reviendrait à braquer les roues d'un coup sec en espérant que la voiture ne dérape pas :p
Si on garde l'idée du cercle (elle me semble être quand même une excellente simplification):
On est en A, avec une vitesse vectorielle 2D v.
On a donc définit une droite d, la droite de trajectoire inertielle (si on fait rien, on avance sur cette droite).
On a un point B (car "C" m'embête comme nom) ailleurs dans le plan. On sait que le cercle C (voilà pourquoi j'ai appeler ton point-cible "B") est de centre O et de rayon r, on cherche O et r tels que C tangente d en A et que B appartienne à C:
r = OB = OA
(d) _|_ (OA) (lire "perpendiculaire" pour _|_)
Brutalement:
{O[x] = (1/2)*(-2*v[x]*A[x]*A[y]+2*v[x]*A[x]*B[y]+A[x]^2*v[y]-v[y]*A[y]^2+2*v[y]*A[y]*B[y]-v[y]*B[x]^2-v[y]*B[y]^2)/(-v[x]*A[y]+v[x]*B[y]+A[x]*v[y]-B[x]*v[y]),
O[y] = (1/2)*(v[x]*A[x]^2+v[x]*B[x]^2-v[x]*A[y]^2+v[x]*B[y]^2-2*B[x]*v[x]*A[x]-2*B[x]*v[y]*A[y]+2*A[x]*v[y]*A[y])/(-v[x]*A[y]+v[x]*B[y]+A[x]*v[y]-B[x]*v[y])}
(Merci maple pour cette splendide mise en forme)
En calant l'origine du repère sur A, on simplifie les choses:
O[x] = k*v[y]
O[y] = k*v[x]
Avec k = AB²/(2*(AB^v)[z])
ou ^ est le produit vectoriel 3D, autrement dit, (u^v)[z] = u[x]*v[y]-u[y]*v[x]
Connaissant O, on en déduit r:
r = OA, O et A sont connus
Ensuite, on cherche le rayon de courbure R maximal de la trajectoire (ce rayon dépend de la vitesse du bateau, c'est toi qui l'a fixé). Si r<R alors on ne pourra pas tourner: il faudra freiner, sinon, on peut tourner, et on tourne, en suivant la trajectoire de r (la plus large courbe)...
Si on garde l'idée du cercle (elle me semble être quand même une excellente simplification):
On est en A, avec une vitesse vectorielle 2D v.
On a donc définit une droite d, la droite de trajectoire inertielle (si on fait rien, on avance sur cette droite).
On a un point B (car "C" m'embête comme nom) ailleurs dans le plan. On sait que le cercle C (voilà pourquoi j'ai appeler ton point-cible "B") est de centre O et de rayon r, on cherche O et r tels que C tangente d en A et que B appartienne à C:
r = OB = OA
(d) _|_ (OA) (lire "perpendiculaire" pour _|_)
Brutalement:
{O[x] = (1/2)*(-2*v[x]*A[x]*A[y]+2*v[x]*A[x]*B[y]+A[x]^2*v[y]-v[y]*A[y]^2+2*v[y]*A[y]*B[y]-v[y]*B[x]^2-v[y]*B[y]^2)/(-v[x]*A[y]+v[x]*B[y]+A[x]*v[y]-B[x]*v[y]),
O[y] = (1/2)*(v[x]*A[x]^2+v[x]*B[x]^2-v[x]*A[y]^2+v[x]*B[y]^2-2*B[x]*v[x]*A[x]-2*B[x]*v[y]*A[y]+2*A[x]*v[y]*A[y])/(-v[x]*A[y]+v[x]*B[y]+A[x]*v[y]-B[x]*v[y])}
(Merci maple pour cette splendide mise en forme)
En calant l'origine du repère sur A, on simplifie les choses:
O[x] = k*v[y]
O[y] = k*v[x]
Avec k = AB²/(2*(AB^v)[z])
ou ^ est le produit vectoriel 3D, autrement dit, (u^v)[z] = u[x]*v[y]-u[y]*v[x]
Connaissant O, on en déduit r:
r = OA, O et A sont connus
Ensuite, on cherche le rayon de courbure R maximal de la trajectoire (ce rayon dépend de la vitesse du bateau, c'est toi qui l'a fixé). Si r<R alors on ne pourra pas tourner: il faudra freiner, sinon, on peut tourner, et on tourne, en suivant la trajectoire de r (la plus large courbe)...