Discuss Scratch

littlekitykat
Scratcher
100+ posts

trigonométrie et scratch

Juste un message pour râler …
Je viens de passer plusieurs dizaines d'heures a m creuser la tête sur une sujet qui pour moi aurait du être tres simple.
En effet depuis toujours j'utilise dans mes programmes le fait qu COS 0 = 1 et SIN 0 = 0 et ainsi de suite. c'st trés pratique pour des calculs de direction.

Sauf que Scratch ne l'entends pas de cette oreille et j'ai du reprendre tout mon code afin de remplacer Cos 0 par des Variables = 1. ou = 0 .

Et franchement je ne comprends pas pq.

Quoi qu'il en soit j'ai résolu un bug qui n'aurait pas du en être un !!!

Quelques projets en cours !!

____________
SBissay
Scratcher
500+ posts

trigonométrie et scratch

Hmm, a priori quand tu fais directement cos(0), il te renvoie bien 1…

N'ayant pas accès au code incriminé, je ne peux faire que des hypothèses, mais je subodore là un problème lié aux erreurs d'arrondi en virgule flottante, à savoir que le programme affiche 1 alors qu'il a stocké 0.99999999999999999 ou 1.00000000000000000001 …

Generative art :              Pivot  :               Sudoku :
littlekitykat
Scratcher
100+ posts

trigonométrie et scratch

Oui c'est tout a fait cela. du coup je ne peux pas m'en servir comme test fiable.
J'ai du reprendre le code et desormais tout fonctionne bien.
Je laisserais la trigonométrie a la vrai 3D en attendant je peux toujours remplacer les Cos et Sin par de simple variable allant de -1 a 1 . c'est bien plus rapide :p


Quelques projets en cours !!

____________
bidulule
Scratcher
500+ posts

trigonométrie et scratch

En attendant, tu peut ptet réler le problème en faisant
(([Plancher v] de (([cos v] de (x)) * (1000))) / (1000))

Last edited by bidulule (March 9, 2018 14:39:11)


★My Projects★_______________________★My Profile★_______________________★My Fan Club★



littlekitykat
Scratcher
100+ posts

trigonométrie et scratch

Merci Bidule Mais j'ai trouvé plus simple mais surtout plus rapide. Un calcul de Cos associé a une multiplication puis une division auquel tu applique un plancher c'est trés gourmant en ressource. Dans mon cas j'ai pas besoin d'optimiser Mais quand même c'est une habitude a ne pas perdre je trouve.

Si tu peux remplacer une multiplication par un addition tu seras tjs plus rapide !

Quelques projets en cours !!

____________
bidulule
Scratcher
500+ posts

trigonométrie et scratch

littlekitykat wrote:

Merci Bidule Mais j'ai trouvé plus simple mais surtout plus rapide. Un calcul de Cos associé a une multiplication puis une division auquel tu applique un plancher c'est trés gourmant en ressource. Dans mon cas j'ai pas besoin d'optimiser Mais quand même c'est une habitude a ne pas perdre je trouve.

Si tu peux remplacer une multiplication par un addition tu seras tjs plus rapide !
Je sais.
Mais je me suis dit que vu qu'il y avait une approximation comme le dit Sbissay, il y avait des chances pour que cette approximation soit conservée si on fait une addition. Du coup je me suis dit que le meilleur moyen était de faire un truc qui arrondissait à une certaine précision

★My Projects★_______________________★My Profile★_______________________★My Fan Club★



littlekitykat
Scratcher
100+ posts

trigonométrie et scratch

Je me suis mal exprimée. En fait je n'utilise plus du tout les Cos .

Mon ancien code était par exemple :

mettre [déplacement] à ([cos] de (Angle))

remplacer par
si <[Angle] = [90]> alors 
mettre [Déplacement] à [1]
sinon
si <[Angle] = [180]> alors
mettre [Déplacement] à [-1]
sinon
mettre [Déplacement] à [0]
end
end

Ca complique forcément le code… mais ca marche

Last edited by littlekitykat (March 9, 2018 15:53:48)


Quelques projets en cours !!

____________
bidulule
Scratcher
500+ posts

trigonométrie et scratch

littlekitykat wrote:

Je me suis mal exprimée. En fait je n'utilise plus du tout les Cos .

Mon ancien code était par exemple :

mettre [déplacement] à ([cos] de (Angle))

remplacer par
si <[Angle] = [90]> alors 
mettre [Déplacement] à [1]
sinon
si <[Angle] = [180]> alors
mettre [Déplacement] à [-1]
sinon
mettre [Déplacement] à [0]
end
end

Ca complique forcément le code… mais ca marche
Oui effectivement ! Inutile d'utiliser les cos si les directions se comptent sur les doigts de la main ^^

★My Projects★_______________________★My Profile★_______________________★My Fan Club★



Powered by DjangoBB

Standard | Mobile