1

Voilà j'ai réussit à créer un algo qui modifie la direction d'une balle et en même temps ça vitesse, mais je suis bloqué sur un truc.

Pour modifier la direction de la balle il faut jouer sur angle_x et angle_y.

Pour un angle:
0°, angle_x=100 et angle_y=0
90°, angle_x=0 et angle_y=100
45°, angle_x=angle_y
>45°, angle_x<angle_y
<45°, angle_x>angle_y

Et pour la vitesse, plus les valeurs de angles_x et angle_y sont petites mais avec le même écart alors la vitesse sera plus lente et inversement.

Mais le problème c'est que je n'arrive pas à trouver l'algo capable d'attribuer les bonnes valeurs pour avoir l'angle voulu, à savoir que cette angle est obtenu par l'écart qu'il y a entre les 2 variables.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

2

Euh, angle_x = v * cos(theta) et angle_y = v * sin(theta), v étant la vitesse, theta étant l'angle (le vrai grin) que fait la vitesse de la balle avec l'horizontale?

Mais évidemment je ne sais pas ce que tu veux en faire, donc je ne peux rien te dire de plus. Peut-être que tu cherches une fonction du style "arctan2" ?

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

3

Peut être. grin
Je veux pas de calcul avec des floatant, de table de sin et cos...

En bref j'y suis presque, il me reste à créer une fonction qui modifie correctement angle_x et angle_y en fonction de l'angle qu'on a entré.

>45°, angle_x<angle_y
<45°, angle_x>angle_y

Il faut que j'arrive à trouver l'algo qui fasse varier correctement l'écart entre angle_x et angle_y.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

4

Mais il faut utiliser les fonctions trigonométriques trifus
Je vois difficilement comment faire autrement (enfin, je n'ai pas un très bon niveau en maths non plus).
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

5

Je ne parle pas d'utiliser les flottants. Je te donne juste la description mathématique correspondante, qui pouvait éventuellement te permettre de préciser ta question.

En gros qu'est-ce que tu cherches à faire? "faire varier l'écart" ça ne veut rien dire. Tu veux dire, modifier theta en laissant v constant? (au passage, "l'écart" pourrait sous-entendre angle_x-angle_y ou à la limite (angle_x-angle_y)/v, mais je présume que ce n'est pas de ça que tu veux parler, d'où l'intérêt d'une formalisation un minimum mathématique, sinon on va pas aller loin).

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

6

geogeo
: Il faut que j'arrive à trouver l'algo qui fasse varier correctement l'écart entre angle_x et angle_y.
Et puis c'est pas un algo, c'est plutôt une formule.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

7

Pas forcément, si il cherchait à faire une fonction d'arctan il pourrait avoir besoin d'un algo. Mais visiblement il cherche juste une formule du style multiplication par un complexe grin (cela dit j'attends sa réponse parce que sa question est pas claire)

Et puis j'oubliais, "modifier theta d'un angle constant", parce qu'on sait jamais wink

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

8

Mais il faut utiliser les fonctions trigonométriques Je vois difficilement comment faire autrement (enfin, je n'ai pas un très bon niveau en maths non plus).


Je pense que je peut arriver à faire ce que je veux en évitant d'utiliser de la trigonométrie et donc d'avoir quelque chose de très rapide.
Je ne parle pas d'utiliser les flottants. Je te donne juste la description mathématique correspondante, qui pouvait éventuellement te permettre de préciser ta question.
En gros qu'est-ce que tu cherches à faire? "faire varier l'écart" ça ne veut rien dire. Tu veux dire, modifier theta en laissant v constant? (au passage, "l'écart" pourrait sous-entendre angle_x-angle_y ou à la limite (angle_x-angle_y)/v, mais je présume que ce n'est pas de ça que tu veux parler, d'où l'intérêt d'une formalisation un minimum mathématique, sinon on va pas aller loin).


Oui en effet je veux garder v constant et trouver angle_x=v*cos(theta) et angle_y=v*sin(theta). Je pense que je pense sur une formule assez bête. sad
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

9

Si tu dis "trouver" c'est encore trop vague, puisque tout à l'heure tu parlais de modifier. De quoi est-ce que tu as besoin?
- faire varier l'angle => facile, mais attention à la précision si tu ne comptes pas implémenter de fonction de racine carrée (tiens d'ailleurs, j'en ai une dans mes cartons, faudrait que je la release...)
- pouvoir mettre l'angle à une valeur prédéfinie => plus dur, soit tu prends une table de sin/cos (apparemment tu veux pas), soit tu fais varier l'angle un certain nombre de fois, mais c'est plus lent et ce n'est donc viable que pour l'initialisation
en évitant d'utiliser de la trigonométrie et donc d'avoir quelque chose de très rapide.

Ne pas utiliser les fonctions trigonométriques [de TI] n'est pas la même chose que ne pas utiliser la formalisation mathématique. Autant le premier est compréhensible, autant le second l'est moins embarrassed


« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

10

Je vais résumer:

Ma balle ce déplace avec des 'vecteurs' dans une boucle, nommé xdir et ydir.
Si j'ajoute à xpos xdir et à ypos ydir, la balle ce déplacera avec un angle de 45°, or j'ai réalisé une fonction qui permet de contrôler l'incrémentation de xpos et ypos avec xdir et ydir de tel que la balle peut effectuer n'importe quel angle.

Or je constate ceci, c'est que plus je diminue la valeur de angle_x (qui fait varier l'incrémentation de xpos avec xdir tout les x sur 100 pixels) ainsi que angle_x, j'obteint un angle paramètrable est une vitesse, donc si:

angle_x=angle_y alors xpos et ypos d'incrémenteront en même temps et donc j'aurais un angle de 45°.
angle_x>angle_y alors xpos s'incrémentera plus vite que ypos et donc j'aurais un angle <45° suivant l'écart qu'il y a entre angle_x et angle_y.
angle_x<angle_y alors xpos mettera plus de temps à s'incrémenter que ypos et donc j'aurais un angle >45° suivant l'écart entre angle_x et angle_y.

Dans le cas ou:
angle_x=0
angle_y=100

La balle ce déplacera verticalement, c'est logique car seulement ypos s'incrémentera. Ce qui donne un angle de 90° et inversement pour angle_x=100 et angle_y=0, 90° et déplacement horizontal de la balle.

Pour la vitesse j'y réfléchirais plus tard. En fait j'ai besoin de cette méthode pour mon jeu arkanoid et il semble pour l'instant très rapide.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

11

C'est quoi la différence entre xdir et angle_x ?

Et sinon tu n'as pas répondu aux questions que je t'ai posé.

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

12

La différence entre xdir c'est qu'il ne peux prendre que 2 valeur (-1 ou 1) et identique le sens de déplacement de la balle.
angle_x indique le nombre de fois ou il faut incrémenter xpos avec xdir avec x/100 pixels ou x et angle_x.
Et sinon tu n'as pas répondu aux questions que je t'ai posé.

Désolé.
Si tu dis "trouver" c'est encore trop vague, puisque tout à l'heure tu parlais de modifier. De quoi est-ce que tu as besoin?


Ce que j'ai besoin c'est trouver une formule qui me permet de diriger facilement la balle sans modifier les paramètres angle_x et angle_y. Pour l'instant je ne m'occupe pas de la vitesse de la balle.
- faire varier l'angle => facile, mais attention à la précision si tu ne comptes pas implémenter de fonction de racine carrée (tiens d'ailleurs, j'en ai une dans mes cartons, faudrait que je la release...)


Je pense ne pas avoir besoin de fonctions racine, de table précalculé, j'y suis presque, pour la precision, je l'ai.
- pouvoir mettre l'angle à une valeur prédéfinie => plus dur, soit tu prends une table de sin/cos (apparemment tu veux pas), soit tu fais varier l'angle un certain nombre de fois, mais c'est plus lent et ce n'est donc viable que pour l'initialisation


On peux avec mon algo faire varier l'angle de la balle sans passer par d'autres angles, si tu veut je te montre un screen qui le fait. Donc je peux faire des angles de valeurs précise, je cherche une méthode pour me simplifier, régler 2 paramètres (x_angle et y_angle) avec un paramètre.

PS: Je n'aurais pas du mettre x_angle et y_angle comme nom de variable, ses variables on pour seul but ajouter x pixels/100 pixels.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

13

D'accord, donc en gros tu fais un truc du style "xdir=(angle_x+rand())>>COEFF", je présume? (bon je dis rand() mais en fait c pas rand(), c juste pour simplifier)
sans modifier les paramètres angle_x et angle_y.

Tu veux dire faire la conversion angle_x -> xdir? Si c'est ça, alors il suffit de le faire en virgule fixe.
Je pense ne pas avoir besoin de fonctions racine, de table précalculé, j'y suis presque, pour la precision, je l'ai.

Je ne dis pas le contraire, je dis juste que tu n'as pas posé de question claire. Tant que tu ne le fais pas, je vais forcément être à côté de la plaque. A la limite donne moi un bout de code et dis-moi ce qui manque roll

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

14

avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

15

OK.
Je pense ne pas avoir besoin de fonctions racine, de table précalculé, j'y suis presque, pour la precision, je l'ai.

roll Et qu'est-ce qui te fait dire ça? Excuse moi mais si tu veux faire varier l'angle continûment (j'imagine que c'est ce que tu veux faire), tu n'y es pas du tout.

Bon comme manifestement tu as juste besoin de faire varier ton angle continûment, il suffit de faire :
#define sin1 (256/90)
#define cos1 (1-(sin1*sin1>>8)/2)
angle_x=((long)cos1*angle_x+(long)sin1*angle_y)>>8,angle_y=((long)cos1*angle_y-(long)sin1*angle_x)>>8;

Mais tu vas avoir de gros problèmes de précision (balle qui n'avance plus au bout d'un certain temps grin) si tu n'as pas de racine carrée. Une autre solution serait de réinitialiser angle_x et angle_y lorsque angle est multiple de 90, ce qui contourne le problème (ça suffit dans ton cas).

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

16

Et qu'est-ce qui te fait dire ça? Excuse moi mais si tu veux faire varier l'angle continûment (j'imagine que c'est ce que tu veux faire), tu n'y es pas du tout.


Voilà ce que je recherche, là tu me donne la possibilitée de régler sin et cos, c'est pas ce que je recherche. smile
ball.bmp

Comme tu le vois, en fonction de xdir et ydir je me trouve sur un des 4 angles disponible, le but est de trouver une méthode qui me permette de rentrer en paramètre une valeur d'angle entre 0° et 90° qui permettera de régler angle_x et angle_y et ainsi déplacer la balle correctement.

Vriment désolé de ne pas m'expliquer, je crois que tu pense que je veux diriger la balle avec un paramètre du style cos et sin?
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

17

edit : j'ai écrit trop vite roll
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

18

geogeo :
le but est de trouver une méthode qui me permette de rentrer en paramètre une valeur d'angle entre 0° et 90° qui permettera de régler angle_x et angle_y et ainsi déplacer la balle correctement.
Vriment désolé de ne pas m'expliquer, je crois que tu pense que je veux diriger la balle avec un paramètre du style cos et sin?
Pourquoi tu ne veux pas utiliser de cos/sin ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

19

Tu as écrit quoi, ça peut être interessant. smile
[Post croisé]
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

20

Pourquoi tu ne veux pas utiliser de cos/sin ?


Je pense que je peux gagner beaucoup de ressources en évitant de passer par cos et sin, de plus il est plus simple pour moi de dirger facilement la balle, xdir et ydir pour situer le déplacement de la balle, et l'angle pour sa forme de déplacement.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

21

Je te demandais si ta balle ne se déplaçait qu'en diagonale.

Bon, sinon, je n'arrive toujours pas à comprendre ton problème.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

22

Pour situer le déplacement de la balle, ça ne change rien d'utiliser des xdirs et des ydirs, parce qu'un cosinus prend des valeurs entre -1 et 1 lui aussi, ainsi qu'un sinus, donc tu peux aussi facilement utiliser des cos/sin.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

23

Bon, geogeo, avec l'angle tu veux pouvoir fixer des valeurs équivalentes à celle d'un cosinus ou d'un sinus à tes variables angle_x et angle_y, c'est ça ?
C'est à dire que plus l'angle se rapproche de 0, plus angle_x augmentera et angle_y diminuera.
Et plus l'angle se rapprochera de 90°, plus angle_x diminuera et angle_y augmentera.
C'est ça ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

24

Je te demandais si ta balle ne se déplaçait qu'en diagonale.
Bon, sinon, je n'arrive toujours pas à comprendre ton problème.


Oui qu'en diagonale, mais il est pas dur de changer la forme de son déplacement (arc de cercle....).

Aie, aie, j'ai trop de mal sur un truc simple. sad

Comme tu le vois sur mon schéma, les fléche débute avec un angle de 0° et finisse avec 90°.

Si je prend la zone avec xdir=-1 et ydir=1.
Avec un angle de 0°, la balle ce déplace sur l'abscisse vers la gauche, avec 90° sur l'ordonné vers le bas et avec un autre angle en diagonale.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

25

Bon, geogeo, avec l'angle tu veux pouvoir fixer des valeurs équivalentes à celle d'un cosinus ou d'un sinus à tes variables angle_x et angle_y, c'est ça ?


Oui c'est ça. Mais j'avoue que pour moi cos et sin n'existe pas. Bref c'est ça.
C'est à dire que plus l'angle se rapproche de 0, plus angle_x augmentera et angle_y diminuera.
Et plus l'angle se rapprochera de 90°, plus angle_x diminuera et angle_y augmentera. C'est ça ?


Oui c'est ça. smile
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

26

Ben je ne vois pas comment faire sans approximer mathématiquement les fonctions sinus et cosinus...
Et je ne comprends toujours pas pourquoi tu ne veux pas les utiliser...
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

27

Je pense m'en passer dans le cas ou je définit une fonction ou je passe en argument angle entre 0 et 90 qui me dirige correctement ma balle, dans une des 4 directions. Et je pense ne pas avoir besoin d'approximation mathématique de cos et sin avec angle_x et angle_y car ils me permettent de régler l'angle voulu.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

28

geogeo
: Je pense m'en passer dans le cas ou je définit une fonction ou je passe en argument angle entre 0 et 90 qui me dirige correctement ma balle,
Et elle fonctionnera comment, cette fonction ?
dans une des 4 directions.
Dit comme ça, on dirait que ta balle ne pourra aller que dans 4 directions au total...
Et je pense ne pas avoir besoin d'approximation mathématique de cos et sin avec angle_x et angle_y car ils me permettent de régler l'angle voulu.
Et comment ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

29

OK, je vais réfléchir à tout ça.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

30

Euh, je t'ai posé deux questions quand même...
Et je ne comprends toujours pas pourquoi tu veux t'en passer alors qu'ils te permettent directement de te donner ce que tu cherches.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »