Swisslinux.org

− Le carrefour GNU/Linux en Suisse −

 

Langue

 

Le Forum

Vous n'êtes pas identifié.

#1 19 Jun 2008 15:00:35

Cisoun
Prêcheu(r|se) du libre
Lieu: Le Locle (NE)
Date d'inscription: 13 Apr 2007
Messages: 156
Site web

[Javascript] Problème d'opération. (Résolu)

Salut à tous!

Dans une fonction rappelée indéfiniment par un setTimeout, j'aimerais y effectuer une multiplication comme par exemple:

Code:

nombre *= Math.sin(nombre / 2);

ou encore

Code:

nombre *= 2;

Le problème est que ces opérations ne sont pas effectuées. Pourquoi?
Quelqu'un aurait-il une explication à ce problème?

Code entier:

function animate_0(){
    var intLimit = 360;

    if (this.animate_0_direction == 0) {
        if (this.animate_0_variation < intLimit) {
            this.animate_0_variation += Math.sin(this.animate_0_variation / 2); // Ne s'effectue pas?
        }
        else {
            this.animate_0_direction = 1;
        }
    }
    else {
        if (this.animate_0_direction == 1) {
            if (this.animate_0_variation > 0)
                this.animate_0_variation--;
            else
                this.animate_0_direction = 0;
        }
    }
   
    redraw_childs(this.animate_0_variation);
    objAnimation = setTimeout("animate_0()", intRefresh);
}

Projet auquel cela servira (juste pour les curieux): http://cisoun.serveftp.net/CircleScript/index.html

Dernière modification par Cisoun (23 Jun 2008 17:14:27)

Hors ligne

 

#2 19 Jun 2008 21:33:21

jean@adimp.ch
Illuminé(e)
Lieu: Marly
Date d'inscription: 10 Mar 2005
Messages: 1228
Site web

Re: [Javascript] Problème d'opération. (Résolu)

Salut
Pourquoi ce this.animate_0_variation, est-ce que tu veux atteindre un objet?
Ci-dessous ma proposition à tester :

Code:

function animate_0(obj)      
{
    var intLimit = 360;

    if (obj.animate_0_direction == 0) 
    {
        if (obj.animate_0_variation < intLimit) 
        {
            obj.animate_0_variation += Math.sin(obj.animate_0_variation / 2); // Ne s'effectue pas?
        }
        else 
        {
            obj.animate_0_direction = 1;
        }
    }
    else 
    {
        if (obj.animate_0_direction == 1) 
        {
            if (obj.animate_0_variation > 0)
                obj.animate_0_variation--;
            else
                obj.animate_0_direction = 0;
        }
    }
   
    redraw_childs(obj.animate_0_variation);
    objAnimation = setTimeout("animate_0(obj)", intRefresh); // petit doute sur le passage de paramètre

En fait, qu'est-ce que tu veux faire?
Meilleures salutations.
Jean Tinguely Awais.


--------------------------------------------------------
Jean Tinguely Awais
Ma vie sur twitter : http://www.twitter.com/tservi

Hors ligne

 

#3 19 Jun 2008 23:01:17

Cisoun
Prêcheu(r|se) du libre
Lieu: Le Locle (NE)
Date d'inscription: 13 Apr 2007
Messages: 156
Site web

Re: [Javascript] Problème d'opération. (Résolu)

Merci pour ton aide.
J'ai oublié de le préciser, animate_0_variation est déclaré à 0 et au début du fichier javascript.

Après quelques essais, il se peut aussi que ce soit une erreur de mathématique.

Je vais essayer d'expliquer la chose.
Cette fonction est censé faire tourner la roue d'un tour complet puis de la faire revenir dans l'autre sens tout en accélérant au début de la rotation puis ralentissant à la fin et ceci à chaque tour.
animate_0_variation n'est en fait que l'angle courant de la roue lors de chaque appel de la fonction.
Lorsque celle-ci est appelée, animate_0_variation est (pour le moment) dé/incrémentée puis la roue va tourner selon cette variable qui représente l'angle.

animate_0_direction quand à lui, précise le sens de la rotation.
À 0, la roue tourne vers la droite.
À 1, la roue tourne vers la gauche.

Le script est ici: http://cisoun.serveftp.net/CircleScript … escript.js (les commentaires ne sont peut-être pas dans le meilleur anglais...)
(Désolé si le script est inaccessible, c'est que mon PC n'est pas en marche. Il l'est en général l'après-midi jusqu'à 18 heures et parfois le soir).

Dernière modification par Cisoun (19 Jun 2008 23:02:20)

Hors ligne

 

#4 20 Jun 2008 11:56:25

jean@adimp.ch
Illuminé(e)
Lieu: Marly
Date d'inscription: 10 Mar 2005
Messages: 1228
Site web

Re: [Javascript] Problème d'opération. (Résolu)

Salut,
  Un peu d'inspiration : http://www.walterzorn.com/rotate_img/rotate_img.htm
  Il faut que tu fasses des images pour chaque angle que la roue va prendre. Il n'existe pas, à ma connaissance, de fonction rotate pour une image ou un css dans ecmascript.
http://www.ecmascript.org/
  Par contre IE à partir de 5.5 peut utiliser un activeX pour faire tourner des images à l'aide jscript, comme ici :
http://elouai.com/javascript/javascript … rotate.php
Meilleures salutations.
Jean Tinguely Awais.


--------------------------------------------------------
Jean Tinguely Awais
Ma vie sur twitter : http://www.twitter.com/tservi

Hors ligne

 

#5 20 Jun 2008 12:54:06

Cisoun
Prêcheu(r|se) du libre
Lieu: Le Locle (NE)
Date d'inscription: 13 Apr 2007
Messages: 156
Site web

Re: [Javascript] Problème d'opération. (Résolu)

Merci ça a l'air interessant! Je vais voir ce que je peux en faire. smile
Mais pour cette fonction je vais juste me contenter d'un déplacement de chaque objet sur le bord du cercle.

Hors ligne

 

#6 20 Jun 2008 13:42:52

jean@adimp.ch
Illuminé(e)
Lieu: Marly
Date d'inscription: 10 Mar 2005
Messages: 1228
Site web

Re: [Javascript] Problème d'opération. (Résolu)

Salut,
  Je pensais que tu voulais faire tourner une roue, mais dans ce cas, tu recalcule la position des div ou des images sur le bord d'un cercle. Tu pourais envisager de passer par des coordonnées "polaires" pour décrire ton cercle:
xdiv0=x_origine+rayon_cercle*cos(angle_div0)
ydiv0=x_origine+rayon_cercle*sin(angle_div0)
pour placer tes objets, ton angle varie en fonction du temps selon une formule quelconque et il est la seule valeur importante pour le redisign de ta roue.
Est-ce que je t'ai quelque peu aidé?
Meilleures salutations.
Jean Tinguely Awais.


Edit:
Un essai de mon cru : http://www.t-servi.com/testWheel.html

Dernière modification par jean@adimp.ch (20 Jun 2008 15:03:13)


--------------------------------------------------------
Jean Tinguely Awais
Ma vie sur twitter : http://www.twitter.com/tservi

Hors ligne

 

#7 20 Jun 2008 18:42:41

Cisoun
Prêcheu(r|se) du libre
Lieu: Le Locle (NE)
Date d'inscription: 13 Apr 2007
Messages: 156
Site web

Re: [Javascript] Problème d'opération. (Résolu)

Ta fonction a l'air déjà plus balèze que la mienne. roll
Par contre ma roue tourne. Tout ce que je cherche à faire, c'est que lorsqu'elle commence à faire la rotation, elle accélère puis ralentisse lorsqu'elle va se mettre à tourner dans le sens inverse. wink

Hors ligne

 

#8 20 Jun 2008 20:42:18

[GO]Skywalker13
Modérateur
Lieu: Choëx (VS)
Date d'inscription: 05 Oct 2004
Messages: 896
Site web

Re: [Javascript] Problème d'opération. (Résolu)

ben tu fais varier ton horaire selon la formule de base
x(t) = 1/2 * a * t^2 + v0 * t + x0
c'est pas bien compliqué il me semble :-)


Mathieu SCHROETER
log.schroetersa.ch

Hors ligne

 

#9 21 Jun 2008 01:16:53

jean@adimp.ch
Illuminé(e)
Lieu: Marly
Date d'inscription: 10 Mar 2005
Messages: 1228
Site web

Re: [Javascript] Problème d'opération. (Résolu)

Salut,
@[GO]Skywalker13 : souvenir, souvenir big_smile
@Cisoun : le code de la fonction actuelle est simple, tu peux regarder la source, tout est dans le même fichier ( je sais, c'est mal! ). Pour l'instant le changement de sens se fait à l'aide d'une variable. Il "suffit" de rajouter une accélération rotationelle au calcul de la position, pas trop envie de le faire ce soir!
Meilleures salutations.
Jean Tinguely Awais.


--------------------------------------------------------
Jean Tinguely Awais
Ma vie sur twitter : http://www.twitter.com/tservi

Hors ligne

 

#10 21 Jun 2008 05:21:05

Cisoun
Prêcheu(r|se) du libre
Lieu: Le Locle (NE)
Date d'inscription: 13 Apr 2007
Messages: 156
Site web

Re: [Javascript] Problème d'opération. (Résolu)

Oui j'y ai pensé justement. tongue
Ceci dit, je vais continuer à chercher un truc qui tient bien et puis mon script est loin d'être fini.
Merci de votre aide! wink

Hors ligne

 

#11 21 Jun 2008 08:57:41

jean@adimp.ch
Illuminé(e)
Lieu: Marly
Date d'inscription: 10 Mar 2005
Messages: 1228
Site web

Re: [Javascript] Problème d'opération. (Résolu)

Salut,
  Ce matin je me suis levé bien moins tôt que toi, mais pas mal en forme : http://www.t-servi.com/testWheel.html
C'est quelque chose de ce style que tu aimerais?
Meilleures salutations.
Jean Tinguely Awais.

Edit: en fait, dans ton cas, tu aimerais une accélération rotationelle sinusoidale. Ce qui n'est pas le cas dans mon exemple.

Edit 2 : En théorie, tu n'a même pas besoin de la vitesse pour le calcul de l'angle tu peux simplifier l'équation, c'est plus pratique pour les réglages fin

==> position  angulaire = sin(facteur * temps)  * facteur de correction + déphasage
         
Est-ce que ça t'aide?

Edit 3:
  Et voilà : http://www.t-servi.com/testWheel.html
  OK comme ça?

Dernière modification par jean@adimp.ch (21 Jun 2008 09:40:09)


--------------------------------------------------------
Jean Tinguely Awais
Ma vie sur twitter : http://www.twitter.com/tservi

Hors ligne

 

#12 21 Jun 2008 10:25:25

[GO]Skywalker13
Modérateur
Lieu: Choëx (VS)
Date d'inscription: 05 Oct 2004
Messages: 896
Site web

Re: [Javascript] Problème d'opération. (Résolu)

jean@adimp.ch a écrit:

Edit: en fait, dans ton cas, tu aimerais une accélération rotationelle sinusoidale. Ce qui n'est pas le cas dans mon exemple.

Dans ce cas je dirais plutôt qu'il veut une vitesse qui varie en sinus et donc l'accélération angulaire qui en est la dérivée devient un cosinus.
Toi tu as fais l'inverse mais bon.. c'est égale..  bien que c'est plus joli je pense de voir partir les mobiles avec une vitesse de 0 au temps 0.


Mathieu SCHROETER
log.schroetersa.ch

Hors ligne

 

#13 21 Jun 2008 11:00:32

fonji
Gourou(e) du libre
Lieu: Fribourg, don !
Date d'inscription: 15 Feb 2006
Messages: 490
Site web

Re: [Javascript] Problème d'opération. (Résolu)

Cisoun a écrit:

J'ai oublié de le préciser, animate_0_variation est déclaré à 0 et au début du fichier javascript.

J'ai pas vu si ça a été dit, parce que j'ai lu mais en diagonale, mais dans ce cas, pas de this...

Si tu veux faire de l'orienté objet, faut faire un truc comme ça :

Code:

function ClassName(args) {
    this.var1 = var1;
    this.var2 = var2;
}

ClassName.prototype.getVar1 = function() {
    return this.var1;
}

ClassName.prototype.setVar1 = function(value) {
    this.var1 = value;
}

Hors ligne

 

#14 21 Jun 2008 14:35:42

Cisoun
Prêcheu(r|se) du libre
Lieu: Le Locle (NE)
Date d'inscription: 13 Apr 2007
Messages: 156
Site web

Re: [Javascript] Problème d'opération. (Résolu)

@jean@adimp.ch: Bien vu! C'est exactement cela. tongue
Si je puis me permettre, je vais jeter un petit coup d'oeil à ton code.

Edit:
Je viens de regarder ton code et je me rends compte que je me suis bien embêté pour positionner les éléments. neutral
C'est vrai que le newX=x0+radius*Math.cos(angle); et le newY=y0+radius*Math.sin(angle); sont déjà plus pratiques.
Mais dans certains cas, pour moi, les maths c'est pas encore ça. lol

Dernière modification par Cisoun (21 Jun 2008 15:36:15)

Hors ligne

 

#15 23 Jun 2008 08:57:11

jean@adimp.ch
Illuminé(e)
Lieu: Marly
Date d'inscription: 10 Mar 2005
Messages: 1228
Site web

Re: [Javascript] Problème d'opération. (Résolu)

Salut,
  Expérience faite, pour tout mouvements circulaires ( grande roue, horloges, ... ), les coordonnées polaire sont le moyen le plus économique de décrire la position en fonction du temps. C'est LE truc. Et en fait c'est hyper simple et utilisé dans plein de domaines. Pour plus d'informations tu peux te reporter ici : http://fr.wikipedia.org/wiki/Coordonn%C3%A9es_polaires
Meilleures salutations.
Jean Tinguely Awais.

Edit : est-ce que le problème est résolu?

Dernière modification par jean@adimp.ch (23 Jun 2008 13:13:53)


--------------------------------------------------------
Jean Tinguely Awais
Ma vie sur twitter : http://www.twitter.com/tservi

Hors ligne

 

#16 23 Jun 2008 17:14:08

Cisoun
Prêcheu(r|se) du libre
Lieu: Le Locle (NE)
Date d'inscription: 13 Apr 2007
Messages: 156
Site web

Re: [Javascript] Problème d'opération. (Résolu)

Oui merci beaucoup. wink

Hors ligne

 

#17 13 Jul 2008 21:03:24

jean@adimp.ch
Illuminé(e)
Lieu: Marly
Date d'inscription: 10 Mar 2005
Messages: 1228
Site web

Re: [Javascript] Problème d'opération. (Résolu)

Salut,
  Ton problème m'a inspiré un article : http://developpeur.mediabox.fr/index.ph … opic=24025
Tout de bon.


--------------------------------------------------------
Jean Tinguely Awais
Ma vie sur twitter : http://www.twitter.com/tservi

Hors ligne

 

#18 13 Jul 2008 21:37:27

Cisoun
Prêcheu(r|se) du libre
Lieu: Le Locle (NE)
Date d'inscription: 13 Apr 2007
Messages: 156
Site web

Re: [Javascript] Problème d'opération. (Résolu)

Très sympa, toutefois les exemples 3 et 4 s'exécutent trop rapidement chez moi. smile

Hors ligne

 

#19 14 Jul 2008 08:59:39

jean@adimp.ch
Illuminé(e)
Lieu: Marly
Date d'inscription: 10 Mar 2005
Messages: 1228
Site web

Re: [Javascript] Problème d'opération. (Résolu)

Salut,
  Il est possible de diminuer la cadence du mouvement en remplaçan sin(temps) par un sin(0.0001*temps).
Meilleures salutations.
Jean Tinguely Awais.


--------------------------------------------------------
Jean Tinguely Awais
Ma vie sur twitter : http://www.twitter.com/tservi

Hors ligne

 

#20 25 Jul 2008 11:20:39

jean@adimp.ch
Illuminé(e)
Lieu: Marly
Date d'inscription: 10 Mar 2005
Messages: 1228
Site web

Re: [Javascript] Problème d'opération. (Résolu)

Salut,
  Je me suis permit de remettre une couche d'article sur knol :
http://knol.google.com/k/jeantinguelyaw … 1oa/2#view

Meilleures salutations.


--------------------------------------------------------
Jean Tinguely Awais
Ma vie sur twitter : http://www.twitter.com/tservi

Hors ligne

 

Pied de page des forums

Powered by FluxBB