Developpement Empirium Index du Forum Developpement Empirium



Aide à la naviguation !
Aller à la page Précédente  1, 2, 3  Suivante
 
Poster un nouveau sujet   Répondre au sujet    Developpement Empirium Index du Forum -> Evolutions & nouveautés - ][
Voir le sujet précédent :: Voir le sujet suivant  
Würm
je sais pas mais ca cause beaucoup


Inscrit le: 02 Mai 2008
Messages: 425
Localisation: Mar Tosca

 MessagePosté le: Mer 11 Mar 2009, 20:26    Sujet du message: Répondre en citant Back to top

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 Sourire


Dernière édition par Würm le Mer 11 Mar 2009, 21:13; édité 1 fois
 
Voir le profil de l'utilisateur Envoyer un message privé
Apocalypse
Mais débranchez l'bordel !!


Inscrit le: 25 Nov 2005
Messages: 3697
Localisation: Commodore Supernova's Feeling

 MessagePosté le: Mer 11 Mar 2009, 20:35    Sujet du message: Répondre en citant Back to top

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
 
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger
Würm
je sais pas mais ca cause beaucoup


Inscrit le: 02 Mai 2008
Messages: 425
Localisation: Mar Tosca

 MessagePosté le: Mer 11 Mar 2009, 20:42    Sujet du message: Répondre en citant Back to top

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 Confus) :


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
 
Voir le profil de l'utilisateur Envoyer un message privé
Hari Seldon
Seigneur piplette


Inscrit le: 02 Juin 2007
Messages: 89
Localisation: quelques part dans l'espace....

 MessagePosté le: Jeu 12 Mar 2009, 02:08    Sujet du message: Répondre en citant Back to top

Moi, je vous laisse entre matheuxx..... Très content !
 
Voir le profil de l'utilisateur Envoyer un message privé
Apocalypse
Mais débranchez l'bordel !!


Inscrit le: 25 Nov 2005
Messages: 3697
Localisation: Commodore Supernova's Feeling

 MessagePosté le: Jeu 12 Mar 2009, 02:40    Sujet du message: Répondre en citant Back to top

Hari Seldon a écrit:
Moi, je vous laisse entre matheuxx..... Très content !


Hé! Je ne te permet pas de te montrer aussi grossier avec moi Mal ou Très fou
_________________
Maître Apocalypse
 
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger
Yoko
je sais pas mais ca cause beaucoup


Inscrit le: 03 Mai 2004
Messages: 494

 MessagePosté le: Sam 14 Mar 2009, 19:43    Sujet du message: Répondre en citant Back to top

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.
 
Voir le profil de l'utilisateur Envoyer un message privé
Apocalypse
Mais débranchez l'bordel !!


Inscrit le: 25 Nov 2005
Messages: 3697
Localisation: Commodore Supernova's Feeling

 MessagePosté le: Sam 14 Mar 2009, 19:52    Sujet du message: Répondre en citant Back to top

D'où l'expression: owned.
_________________
Maître Apocalypse
 
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger
Yoko
je sais pas mais ca cause beaucoup


Inscrit le: 03 Mai 2004
Messages: 494

 MessagePosté le: Sam 14 Mar 2009, 20:54    Sujet du message: Répondre en citant Back to top

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 (Mort de rire on dirait un titre de film de ... Moqueur )
- DestinationY
- ActuelleX Flèche X/Y de la position actuelle du vsu
- ActuelleY
- DeplacementMax : distance maximale que peut parcourir le vsu en 1 tour
- DeplacementX Flèche 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'>&nbsp</td></table>";
     
      ?>


C'est vite et mal fait, mais si ça peut aider.
 
Voir le profil de l'utilisateur Envoyer un message privé
Würm
je sais pas mais ca cause beaucoup


Inscrit le: 02 Mai 2008
Messages: 425
Localisation: Mar Tosca

 MessagePosté le: Dim 15 Mar 2009, 00:48    Sujet du message: Répondre en citant Back to top

Apocalypse a écrit:
D'où l'expression: owned.


Tu l'as dit Moqueur
 
Voir le profil de l'utilisateur Envoyer un message privé
Max
Créateur du Jeu
Créateur du Jeu


Inscrit le: 23 Jan 2003
Messages: 8277

 MessagePosté le: Dim 15 Mar 2009, 10:33    Sujet du message: Répondre en citant Back to top

Quand vous aurez finalisé quelque chose avec les bons noms de variable et les vérifications, merci de me faire signe Clin d'oeil .
_________________
AUCUN HRP sur les forums RP merci
 
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Developpement Empirium Index du Forum -> Evolutions & nouveautés - ][ Toutes les heures sont au format GMT + 2 Heures
Aller à la page Précédente  1, 2, 3  Suivante
Page 2 sur 3

 
Sauter vers:  
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