Bonjour bonjour : alors je sais pas si c'est très bien de vous demander des conseils pour un programme pour le Zcontest... mais bon vous me dites si j'abuse. Alors mon problème : le programme tourne dans l'écran de graph, en pixel donc, et je veux faire une arme (lazer) dont le tir rebondi sur les parois qui sont totalement aléatoire (je ne connais aucun angle entre les parois et l'horizontal), la trajectoire est rectiligne.

Donc je résume:
->Je voudrais faire rebondir un projectil
->Sa trajectoire est rectiligne
->La map est aléatoire

Voila, donc si vous pouviez me donner des pistes SVP, j'ai chercher quan meme hun ?? mais j'ai pas trouver, toutes mes astuces ont un GROS soucie, donc pour l'instant c'est imposible pour moi...

++
pas besoin d'angle avec l'horizontale, il faut juste l'angle que forme le rayon avec la paroi :

J'avais lu ça je ne sais plus où, si t'as (alpha) l'angle entre ton projectile et la perpendiculaire à la paroi passant par le point de contact entre le projectile et la paroi (dans le sens rayon -> perpendiculaire), le projectile rebondit tel que l'angle entre la perpendiculaire et le rebond soit également égal à (alpha)

Petit schéma :
rebondpt8.png

(fait avec paint, mais bon, c'est pour le principe)

J'avais pensé à travailler avec les équations de droite pour éviter des calculs d'angle (en supposant que la trajectoire soit bien droite, sinon ça devient compliqué) mais sinon tu peux faire ça avec les fonctions de trigo (comme on les apprend en 3ème ^^)
Loul^^ Merci quand même (mais je connais cette relation quand même XD) mais le GROS bins c'est que :
*Certe je connais l'angle du rayon (par rapport a l'horizontal par exemple)
*Mais je ne connais pas l'angle de ma parois
*Donc je ne peux pas connaitre l'angle entre la parois et le projectile

Enfin bref j'ai du mal a m'exprimer^^
Mais en fait je crois que j'ai trouvé la solution : je vais précalculer l'angle de la parois avec l'horizontal pour toute les abscisses de mon écran (parceque en fait je la position des sommets de ma parois) puis je met ça dans une liste puis je pense pouvoir m'arranger comme ça, mais reste a savoir si ça va être assez rapide >_<
tu peux faire comme ça, oui, mais les listes peuvent prendre pas mal de place par contre, il faudra arranger tes données de sorte à avoir la liste qui prenne le moins de place possible

Sinon tu peux le faire avec de la trigo, en connaissant le point 'avant le rebond' et le point de contact entre le projectile et la paroi
attention, je vais aider un concurant !
tes parois, c'est des ligne j'imagine, faites avec des line dont les coordonées sont aléatoire ?
si c'est le cas, faut que tu stocke ces coordonée (X1,Y1,X2,Y2) ds une liste, par exemple, et mieu encore, avec les coordonnées en complexe : tu as donc deux affixes : ZA et ZB.
ensuite, tu as la coordonée de dépard du tir (stocke la aussi en complexe), et celle de contact avec le mur que tu peut déterminer avec un pxltest ; que tu stocke aussi en complexe : ZC et ZD
pour avoir l'angle, tu prend l'option Angle( dans la calto ( MATH>CPX ) et tu fait Angle(ZB-ZA,ZD-ZC).
Et tu as l'angle. (en rad sit tu es en mode radian, en degré si tu es en degré.)

J'espère avoir pus t'aider, mais en tout cas, c'est le premier principe "simple" que j'ai trouvé... après, reste plus que à coder ! (mais là, je t'aiderais pas plus, tu es mon concurant, surtout si tu code en TI-Basic pur XD)

ha, au fait, tama, très joli dessin tongue
avatarloclamor
Mondo Photo
Le voyage en photo et en 1 clic
( je déconseille les complexes pour cause de non-compatibilité avec la 82. Enfin pour ceux qui sont intéressé pour que leur programme marche sur 82 .. )
Les complexes c'est génial ! ^^ Et comme j'ai de toute façon déjà utiliser ce merveilleux outil pour autre chose dans mon programme ben je vais continuer avec, puis je pense que ça sera trop lent dans tout les cas sur 82.
Ton idée est parfaite loclamor, je pense que je vais faire ca, en plus si j'utilise la fonction de la caltosh c'est hyper rapide non ?
Par contre j'ai déjà l'angle du tir (puisque c'est l'utilisateur qui le choisi), donc je vais adapter un peu, mais les complextes c'est clair que c'est la solution !
Et dernier truc : je précalcul ou c'est pas la peine ? En sachant que si je précalcul ben j'aurais une liste de dimension 94 (ce qui fait combien d'octet déjà ?)
Loclamor (./5) :
ha, au fait, tama, très joli dessin tongue


qu'est-ce que t'as avec mon dessin tongue
J'l'ai fait en 2', c'est un schéma tongue

Une liste de 94 éléments fait 94*9+11 octets (ça doit faire dans les 900 *flemme*)
skimman974 (./7) :
puis je pense que ça sera trop lent dans tout les cas sur 82.

Ben la 82 est aussi rapide que la 83, et y'a pleins de progs très bien qui tournent sur 82 et 83. Et c'est sur qu'en disant dès le début mon prog sera trop lent, il risque pas d'être assez rapide .. ( enfin tu fais comme tu veux, c'est juste que c'est une démarche que je trouve pas vraiment dans l'esprit de la prog sur Ti )
skimman974 (./7) :
mais les complextes c'est clair que c'est la solution !

C'est plus élégant mais ca fais jute une ligne ou deux en moins

rooooo c'est bon prend pas la mouche ^^
Le truc c'est que moi j'ai un 84+ donc bon, j'ai pas envie de me privé de ca happy
Ouais t'as un pc aussi prive-toi pas des outils de dev surpuissant que t'as sur PC pour t'embeter à coder un truc limité sur une pauvre calculette cheeky

Enfin je te comprends un peu (solution de facilité smile ), mais bon tu sors les mauvais arguments cheeky
LOOOOL ouai c'est vrai ^^

Sinon je viens de penser à une autre astuce, je vous tiendrais au courant si c'est concluant ^^ Mais en gros l'idée c'est de prendre un échantillons de l'environnement au alentour du point de collision (dans une matrice je pense) puis puis de prendre le point gauche qui se trouve a la limite entre les pixel noir et les blancs, et le meme pixel tout à droite, puis en associe la parois a la droite qui passe par ces deux points, puis on peut faire ce qu'on veut avec les angles...

enfin c'est juste une idée pour l'instant, je réfléchie pas trop a ca c'est temps ci ^^
a+++