 |
 |
Developpement Empirium
|
 |
 |
 |
 |
|
 |
 |
 |
 |
 |
Würm je sais pas mais ca cause beaucoup

Inscrit le: 02 Mai 2008 Messages: 425 Localisation: Mar Tosca  |
Posté le: Mer 11 Mar 2009, 20:26 Sujet du message: |
 |
|
| Apocalypse a écrit: |
Inverser Sin et Cos? Pourquoi donc?
|
Ton vaisseau se déplace bien de 10 DU avec ton calcul, mais ne se rapproche pas de 10 DU de sa destination.
Au contraire, si tu continues à simuler les déplacements suivants, la fonction plante, comme le montre le tableau ci-dessous :
Edit2 : tableau corrigé :
Après, je me suis peut-être plantée 
Dernière édition par Würm le Mer 11 Mar 2009, 21:13; édité 1 fois |
|
| |
|
|
|
 |
 |
 |
 |
 |
Apocalypse Mais débranchez l'bordel !!

Inscrit le: 25 Nov 2005 Messages: 3697 Localisation: Commodore Supernova's Feeling  |
Posté le: Mer 11 Mar 2009, 20:35 Sujet du message: |
 |
|
Question: ton angle est-il calculé sur chaque tour par rapport aux coordonnées initiales ou par rapport aux coordonnées N-1? _________________ Maître Apocalypse
 |
|
| |
|
|
|
 |
 |
 |
 |
 |
Würm je sais pas mais ca cause beaucoup

Inscrit le: 02 Mai 2008 Messages: 425 Localisation: Mar Tosca  |
Posté le: Mer 11 Mar 2009, 20:42 Sujet du message: |
 |
|
En fait j'ai compris :
Dans Excel, la formule Atan2 demande d'abord X, puis Y, alors que nous demandons Y puis X.
Du coup, en inversant X et Y dans ce calcul, et en utilisant Cos pour X et Sin pour Y, ça revient au même que pour mon premier tableau.
Pour répondre à ta question, mon angle est calculé à chaque tour par rapport aux coordonnées N-1.
Edit : en algorithmique ça donnerait ça (mais Php ) :
| Citation: | Début Programme
D=Distance
V=Vitesse
A=Angle
NX=Coordonnées X, par défaut = coordonnées actuelles
NY=Coordonnées Y, par défaut = coordonnées actuelles
FX=Coordonnées finales X
FY=Coordonnées finales Y
N=Tour, par défaut = 0
Demander (V)
D = Racine ((FX-NX)²+(FY-NY)²)
Tant que (D>V) faire :
A = Atan2 (FX-NX,FY-NY)
NX = Entier (NX + V * Cos (A) )
NY = Entier (NT + V * Sin (A) )
Afficher ("Tour " . N . ", Déplacement en " . FX . " / " . FY)
N = N+1
Demander (V)
D = Racine ((FX-NX)²+(FY-NY)²)
Fin tant que
NX=FX
NY=FY
Afficher ("Tour " . N . ", Arrivée en " . FX . " / ". FY)
Fin Programme |
|
|
| |
|
|
|
 |
 |
 |
 |
 |
Hari Seldon Seigneur piplette
Inscrit le: 02 Juin 2007 Messages: 89 Localisation: quelques part dans l'espace....  |
Posté le: Jeu 12 Mar 2009, 02:08 Sujet du message: |
 |
|
Moi, je vous laisse entre matheuxx..... ! |
|
| |
|
|
|
 |
 |
 |
 |
 |
Apocalypse Mais débranchez l'bordel !!

Inscrit le: 25 Nov 2005 Messages: 3697 Localisation: Commodore Supernova's Feeling  |
Posté le: Jeu 12 Mar 2009, 02:40 Sujet du message: |
 |
|
| Hari Seldon a écrit: | Moi, je vous laisse entre matheuxx..... ! |
Hé! Je ne te permet pas de te montrer aussi grossier avec moi  _________________ Maître Apocalypse
 |
|
| |
|
|
|
 |
 |
 |
 |
 |
Yoko je sais pas mais ca cause beaucoup

Inscrit le: 03 Mai 2004 Messages: 494
 |
Posté le: Sam 14 Mar 2009, 19:43 Sujet du message: |
 |
|
Thalès est ton ami, surtout qu'il n'utilise ni cosinus, sin et autre tangeante.
Formules simples:
$longueur = $x2 - $x1;
$hauteur = $y2 - $y1;
$distance = sqrt($longueur * $longueur + $hauteur * $hauteur);
$l = $longueur * $v / $distance;
$h = $hauteur * $v / $distance;
$nombre = $distance / $v;
Et on itère de 0 à nombre en ajoutant l et h à la position initiale. |
|
| |
|
|
|
 |
 |
 |
 |
 |
Apocalypse Mais débranchez l'bordel !!

Inscrit le: 25 Nov 2005 Messages: 3697 Localisation: Commodore Supernova's Feeling  |
Posté le: Sam 14 Mar 2009, 19:52 Sujet du message: |
 |
|
D'où l'expression: owned. _________________ Maître Apocalypse
 |
|
| |
|
|
|
 |
 |
 |
 |
 |
Yoko je sais pas mais ca cause beaucoup

Inscrit le: 03 Mai 2004 Messages: 494
 |
Posté le: Sam 14 Mar 2009, 20:54 Sujet du message: |
 |
|
| Max a écrit: | C'est le pilote automatique dont certains avaient déjà parlé.
Si quelqu'un veut faire avancer le sujet, il peut me faire un document avec les 2 ou 3 formules à utiliser et les calculs à effectuer, en utilisant ces variables :
- DestinationX ( on dirait un titre de film de ... )
- DestinationY
- ActuelleX X/Y de la position actuelle du vsu
- ActuelleY
- DeplacementMax : distance maximale que peut parcourir le vsu en 1 tour
- DeplacementX X/Y du mouvement à faire ce tour
- DeplacementY
Et merci de tester ce que vous me rendez !
Exemple : tester avec des coordonnées "tout positif" (142/52 vers 200/200), tout négatif (-145/-10 vers -200/-108), et des mélanges (-100/28 vers 40/-20 etc...). |
Désolé de ne pas utiliser les mêmes variables (j'ai utilisé celles du calculateur). Soit $x1 $y1 la position initiale, $x2 $y2 la destination finale, $v la vitesse et $xt $yt les coordonnées du tour.
Voici le php utilisé (testable ici: http://losguapos.free.fr/empirium/pilote/pilote.php):
| Code: |
<?
echo "<table class='contour'><tr><td class='titre'>Tour</td><td class='titre'>X</td><td class='titre'>Y</td></tr>";
$compteur = 1;
while (($x1 != $x2 || $y1 != $y2) && $v != 0) {
$longueur = $x2 - $x1;
$hauteur = $y2 - $y1;
$distance = sqrt($longueur * $longueur + $hauteur * $hauteur);
if ($v >= $distance) {
$l = $longueur;
$h = $hauteur;
} else {
$l = $longueur * $v / $distance;
$h = $hauteur * $v / $distance;
}
$x = $x1 + $l;
$y = $y1 + $h;
$xo = intval($x);
$yo = intval($y);
if ($x < 0 && $xo > $x1) {
$xo--;
} else if ($x > 0 && $xo < $x1) {
$xo++;
}
if ($y < 0 && $yo > $y1) {
$yo--;
} else if ($y > 0 && $yo < $y1) {
$yo++;
}
$xt = $xo;
$yt = $yo;
if ($xo < $x2) {
$xt = $xt + 1;
} else if ($xo > $x2) {
$xt = $xt - 1;
}
if ($yo < $y2) {
$yt = $yt + 1;
} else if ($yo > $y2) {
$yt = $yt - 1;
}
if (($xt - $x1) * ($xt - $x1) + ($yt - $y1) * ($yt - $y1) > (($v + 1) * ($v + 1) + $v * $v) / 2) {
$diffx = abs($x - $xo);
$diffy = abs($y - $yo);
if ($diffx >= $diffy) {
$yt = $yo;
} else {
$xt = $xo;
}
if (($xt - $x1) * ($xt - $x1) + ($yt - $y1) * ($yt - $y1) > (($v + 1) * ($v + 1) + $v * $v) / 2) {
$xt = $xo;
$yt = $yo;
}
}
echo "<tr><td>$compteur</td><td>$xt</td><td>$yt</td></tr>";
$compteur++;
$x1 = $xt;
$y1 = $yt;
}
echo "<td colspan='3' class='titre'> </td></table>";
?>
|
C'est vite et mal fait, mais si ça peut aider. |
|
| |
|
|
|
 |
 |
 |
 |
 |
Würm je sais pas mais ca cause beaucoup

Inscrit le: 02 Mai 2008 Messages: 425 Localisation: Mar Tosca  |
Posté le: Dim 15 Mar 2009, 00:48 Sujet du message: |
 |
|
| Apocalypse a écrit: | | D'où l'expression: owned. |
Tu l'as dit  |
|
| |
|
|
|
 |
 |
 |
 |
 |
Max Créateur du Jeu

Inscrit le: 23 Jan 2003 Messages: 8277
 |
Posté le: Dim 15 Mar 2009, 10:33 Sujet du message: |
 |
|
Quand vous aurez finalisé quelque chose avec les bons noms de variable et les vérifications, merci de me faire signe . _________________ AUCUN HRP sur les forums RP merci
 |
|
| |
|
|
|
 |
 |
 |
 |
 |
|
 |
 |
 |
 |
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum
|
|
|
 |