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 :

[défi n°7] billard perpétuel


Sujet :

JavaScript

  1. #21
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    Citation Envoyé par Celelibi
    qui détecte les colisions et qui renvoi les balles dans les bonnes directions.
    encore un copie coller (je suis un faux informaticien)
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    <script>
     
    var zz=new Array() 
     
    onload=function(){ 
    i=4 
    while(i--){ 
    zz[i]=new o(document.images[i],i) 
    } 
    setInterval('nextDirection();for(k=0;k<zz.length;k++){zz[k].mouv()}',5) 
    }
     
    function o(imageRef,index){ 
    this.index=index
    this.M=285 
    this.m=0 
    this.X=Math.random()*2+1 ;
    this.Y=Math.random()*2+1 ;
     
    this.imageRef=imageRef
    this.l=parseInt(imageRef.style.left) ;
    this.t=parseInt(imageRef.style.top) ;
    this.q=this.Q=1 
     
    this.mouv=function(){ 
    	with(this){
    		l+=X*q
    		imageRef.style.left=l+"px" 
    		t+=Y*Q
    		imageRef.style.top=t+"px" 
    		}
    	}
     
     
     
    } 
     
     
    function nextDirection(){ 			
    for(k=0;k<zz.length;k++){ 
    	with(zz[k]){ 
    	//colission
    		for(indice=k+1;indice<zz.length;indice++){ 
     
     
    			if ( ( (zz[indice].t-t)*(zz[indice].t-t)+(zz[indice].l-l)*(zz[indice].l-l)) < 16*16  )
    			{
    				if(zz[indice].Q*Q==-1){Q*=-1; zz[indice].Q*=-1}
    				if(zz[indice].q*q==-1){q*=-1;zz[indice].q*=-1}
    				if( (zz[indice].Q*Q==1) && (zz[indice].q*q==1))
    				{
    				tmpX=X
    				tmpY=Y
    				X=zz[indice].X;	
    				Y=zz[indice].Y;	
    				zz[indice].X=tmpX;
    				zz[indice].Y=tmpY;
    				}
    			}
     
     
     
     
    		} 
    	//le mur
    		if(l<m){ q=1} 
    		if(l>M){ q=-1 }
    		if( t<m){ Q=1 } 
    		if(t>M ){ Q=-1 } 
    	}
     
    }
    } 
     
     
    </script>
    il manque encore la vitesse et le poids et les boules qui vont dans le même sens

  2. #22
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    je me dis que le plus simpliste est encore le moins prise de tête! et même si ça défie Einstein, c'est rigolo;

    en reprenant la fonction o()
    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
    40
    41
    42
    43
    44
    function o(i){
    this.M=285
    this.m=0
    this.X=Math.random()/2+0.5
    this.Y=Math.random()/2+0.5
    this.i=i
    this.l=parseInt(i.style.left)
    this.t=parseInt(i.style.top)
    this.q=1
    this.Q=-1
     
    this.b=function(){
    	for(i in t){
    		var p=Math.abs(t[i].l-this.l)+Math.abs(t[i].t-this.t);
    		if(p>13 && p<17){
    			this.q*=-1
    			this.Q*=-1
    		}
    	}
     
    	with(this){
    		if(l<M && q==1 || l<m){
    			q=1
    			l+=X
    		}
    		else{
    			q=-1
    			l-=X
    		}
    		i.style.left=l+"px"
     
    		if(t<M && Q==1 || t<m){
    			Q=1
    			t+=Y
    		}
    		else{
    			Q=-1
    			t-=Y
    		}
    		i.style.top=t+"px"
    	}
    }
     
    }

    problèmes à envisager pour arriver à un billard respectant les lois de la physique
    bien connaître les lois du billard et de la physique;
    dépasser la contrainte des timers et des déplacements fluides en javascript, qui sont tout de même deux boulets pour les animations;
    concilier valeur de déplacement d'une boule (aléatoire au départ) et calcul de proximité fiable;
    j'oubliais: interdit d'ajouter plus de 100 caractères de code

  3. #23
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    Citation Envoyé par javatwister
    bien connaître les lois du billard et de la physique;
    cela dépend du point d'impact des boules les rotations...
    on arrait du mal à calculer...

  4. #24
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    on peut négliger les rotations ... le point d'impact c'est relativement simple ...
    en partant du principe que les boules osnt toutes de la meêm dimension... il n'y a plus que la pondération par la vitesse et le poids pour calculer la trajectoire résultante ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #25
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Citation Envoyé par SpaceFrog
    il n'y a plus que la pondération par la vitesse et le poids pour calculer la trajectoire résultante ...
    génial! vas-y, aboule la résultante

  6. #26
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    ben à partir de moment à tu as la pente déterminée par le a de ax+b
    tu pondères le a par le poids et la vitesse ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #27
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    nan mais attends, j'ai un niveau CM1 en maths moi! (dixit Fred )
    alors pour moi ce genre de trucs c'est de la sience-fiction

  8. #28
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    attends je te sors un truc d'additoon de quantité de mouvement, c'est en fait une moyenne pondérée des vecteurs ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #29
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    il faut bien entendu simplifier, mais en prenant l'hypothèse de conservation de l'energie cynétique pxv² +p'xv'² = pxv1²+p'xv'1² ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #30
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #31
    Membre expérimenté Avatar de fred777888999
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 250
    Par défaut
    Citation Envoyé par javatwister
    nan mais attends, j'ai un niveau CM1 en maths moi! (dixit Fred )
    alors pour moi ce genre de trucs c'est de la sience-fiction
    Faut pas m'en vouloir JT, ct juste que je disais que le theoreme de pythagore se voyait de mon temps en CM2
    J'avoue par contre que sur le lien poste par SF , je dois en etre, au mieux, au meme niveau que toi On va se consoler en disant qu'il neglige les frotements et les rotations des mobiles pour justifier le fait que je n'y comprenne strictement rien Dire que je croyais que le theoreme de l'energie cynetique qu'on voyait en terminale etait suffisant pour ce genre d'exercice

  12. #32
    Membre émérite
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Par défaut
    On va se consoler en disant qu'il neglige les frotements et les rotations des mobiles
    Sans frottement, tu auras beau avoir des rotations ils n'auront aucun effet.

    Si on se met à tenir compte des frottement, seul une méthode itérative peut nous aider.

    Et bien entendu dans ce billard on suppose que les billes ne décolent pas de la table.
    J'avais un jeu sous win qui s'appellait "Virtual Pool". Un jeu de billard virtuel vraiment très performant élaboré avec des mathématiciens et physiciens (qui ont dûs pour le coup laisser leurs gueguerre de coté ).

    JT, j'esspère que ton but final n'est pas de nous faire coder un truc d'un tel niveau.

  13. #33
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    bah, le défi est résolu depuis longtemps hein
    même si on s'est pas amusés à compter les caractères, cette fois ^_^

    le reste c'est de l'expérimentation pure et folle

  14. #34
    Membre émérite
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Par défaut
    Au passage,
    Citation Envoyé par SpaceFrog
    le changement de vitesse n'aurait lieu que si les boules voyagent à des vitesse différentes ou ont un poids différent ...
    C'est faux !
    exemple :
    une bille en percute une autre qui était à l'arrêt. LA première s'arrête, et la 2eme se met en mouvement.
    Maintenant si la 2eme bille n'était pas à l'arrait, mais vennait de 90° sur la gauche avec la même vitesse que la première et qu'à l'instant de la collision la position des billes est la même.
    Là, la bille n°1 va encore s'arrêter, et pour la bille n°2 les vecteurs vitesses vont s'additionner. (attention les vitesses elles-même ne s'additionnent pas).

    enfin voilà.

  15. #35
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    quand j'aurai le temps, je vais essayer avec un système de vitesses qui s'interchangent; l'apparence doit pas être trop pourrie et ça résoud le problème des boules qui vont dans la même direction;

  16. #36
    Membre émérite
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Par défaut
    Petit ajout par rapport à ce que j'ai dis précédemment : Ce qu'à dit SF est vrai uniquement si les billes sont ponctuelles.

  17. #37
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    bon, voilà une version à peu près stable

    http://javatwist.imingo.net/billard2.htm

  18. #38
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 31
    Par défaut
    ouahou avec collsion et tout et tout !
    vous etes des vrais matheux par ici

  19. #39
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    et on ne se moque pas merci

  20. #40
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 31
    Par défaut
    et on ne se moque pas merci
    ... ( c'etait sincere ) moi je suis incapable de faire ça ! ( meme si je connais un peu le Js )

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. Défi Septembre 2004
    Par grishka dans le forum XSL/XSLT/XPATH
    Réponses: 30
    Dernier message: 26/12/2005, 17h37
  2. [défi n°1] limite de javascript en calcul?
    Par javatwister dans le forum Général JavaScript
    Réponses: 30
    Dernier message: 20/08/2005, 15h02
  3. Somme totale... Défi !
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 04/08/2005, 21h03
  4. Défi
    Par ti-ben dans le forum Algorithmes et structures de données
    Réponses: 16
    Dernier message: 03/02/2005, 06h39

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