IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[canvas] D�placer un objet suivant une droite


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Homme Profil pro
    Webmaster
    Inscrit en
    D�cembre 2021
    Messages
    81
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 57
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : Webmaster

    Informations forums :
    Inscription : D�cembre 2021
    Messages : 81
    Par d�faut [canvas] D�placer un objet suivant une droite
    salut les pros

    j'ai un soucis bien s�r

    Je lance apr�s chargement de la page html l'instruction setInterval qui d�marre la fonction Ma_voiture().
    Et la fonction Ma_voiture() efface le CANVAS et dessine un sprite sur le canvas par le contexte ctx2.

    Le dessin se fait bien et maintenant traverse l'�cran vers la gauche horizontalement, mais moi je voudrais qu'il suive une droite allant de sa position "milieu du bord haut" vers la position "milieu du bord gauche" et continue jusqu'� se cacher derri�re l'�cran vers la gauche.
    C'est la variable x1,y1 qui d�place le dessin vers la gauche gr�ce � x1-=2 puis y est calcul� par la formule pour suivre la pente de la droite, sauf que cela ne marche pas, il va vers la gauche � l'horizontale.


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    var w=100;
    var h=50;
    var x1=380;
    var y1=75;
    var x2=-200;
    var y2=300;
    var B=y1-(pente * x1);
    var pente=(y2-y1)/(x2-x1);
    var x=-200;
    var y=0;
     
    function Ma_voiture(){
     
            // Efface le rectangle du dessin sur le canvas.
     
            ctx2.clearRect(x1,y1,w,h);
     
            // Dessine le dessin sur le Canvas, position x1,y1 avec largeur w et hauteur h.
     
    	ctx2.drawImage(vaiss1,x1,y1,w,h);
     
            // Change la position x1 vers la gauche.
     
    	x1+=-3;
     
            // Calcule y1 pour la nouvelle valeur de x1 afin de suivre la pente de la droite mathématique.
     
    	pente=(y2-y1)/(x2-x1);
    	B=y1-(pente * x1);
    	y=B+(x1 * pente);
    	y1=y;
     
    }
     
     
    // Appelle le dessin toutes les 16 milli-secondes.
     
    var	interval=setInterval(Ma_voiture,16);

    La formule de la droite est :

    y= (pente * x1) - B


    Selon un site de math�matiques (Allo...) le calcul de y se fait de cette fa�on :

    Quelle est l��quation de la droite ayant une pente de 3,5 et qui passe par le point (−6,−28) ?

    �tape 1 : On �crit l��quation de la droite en rempla�ant m par 3,5.

    y=3,5x+b

    �tape 2 : � l�aide du point connu, on remplace :

    y par −28
    x par −6.
    y=3,5x + b
    −28=3,5(−6)+b

    �tape 3 : On isole le param�tre b :

    −28=3,5(−6)+b
    −28=−21+b
    −28+21=b
    −7=b

    �tape 4: On �crit l'�quation sous sa forme fonctionnelle avec les param�tres :

    m=3,5

    b=−7.

    y=3,5x−7

  2. #2
    Expert confirm�
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 681
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 681
    Par d�faut
    d'o� vient la variable "vaiss1" ?
    montrez nous un code de test complet en le mettant par exemple sur ce site :
    https://codesandbox.io/s/vanilla

  3. #3
    Membre Expert
    Avatar de Archim�de
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 60
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activit� : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par d�faut
    C'est � ce niveau qu'il y a un probl�me...
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      // Change la position x1 vers la gauche.
     
    	x1+=-3;
     
            // Calcule y1 pour la nouvelle valeur de x1 afin de suivre la pente de la droite mathématique.
     
    	pente=(y2-y1)/(x2-x1);
    	B=y1-(pente * x1);
    	y=B+(x1 * pente);
    	y1=y;
    Au d�part, tu fais bien le job en calculant l'�quation de ta droite avec pente et l'ordonn�e � l'origine B au d�but de ton code mais ensuite tu red�finis les coordonn�es de ton premier point dont tu te sers comme variables...

    M(x1,y1) et N (x2,y2) avec leurs coordonn�es sont les r�f�rences permettant d'obtenir l'�quation de la droite que tu veux suivre... apr�s tu d�finis une variable x d'abscisse de position de ton sprite que tu incr�mentes et tu fais calculer une variable y � partir de l'�quation d�finie par pente et B... soit :

    soit :
    En d�clarant x et y, tu les d�finies initialement � respectivement x1 et y1.

    J'ai survol� ton code mais tu red�finis � chaque fois l'abscisse de ton premier point de r�f�rence, tu recalcules la pente avec l'ordonn�e de la position pr�c�dente...il y a un souci...

  4. #4
    Membre confirm�
    Homme Profil pro
    Webmaster
    Inscrit en
    D�cembre 2021
    Messages
    81
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 57
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : Webmaster

    Informations forums :
    Inscription : D�cembre 2021
    Messages : 81
    Par d�faut
    Ah c'est vrai mathieu, j'ai oubli� de montrer la d�claration de la variable image, mais c'est pas elle le probl�me, elle n'est qu'une image du style :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    var vaiss1=new Image();
    vaiss1.src="vaisseau.png";
    vaiss1.onload=function(){
      .....
    }

    Le probl�me vient de ma fa�on d'utiliser la formule car le dessin lui s'affiche bien.


    Merci beau coup Archim�de, je gal�rais car je suis pas tr�s fort en math m�me si j'aime bien.
    .

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 2
    Dernier message: 22/01/2015, 17h05
  2. [AJAX] D�placer des objets HTML sur une page web
    Par brazilia28 dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 09/06/2007, 12h47
  3. [MooTools] D�placer un objet dans une case
    Par Sayrus dans le forum Biblioth�ques & Frameworks
    R�ponses: 3
    Dernier message: 16/05/2007, 09h16
  4. d�placer un objet TLabel sur une Form
    Par darkangel37 dans le forum C++Builder
    R�ponses: 14
    Dernier message: 14/06/2006, 10h36
  5. Changer les droits sur un objet via une requete
    Par gg72160 dans le forum S�curit�
    R�ponses: 1
    Dernier message: 10/06/2006, 21h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo