par
naholyr » 12 juin 2005, 23:31
C'est confirmé : problème d'arrondi !
Pour le cas du perso en (5,1) et de la case (7,8 ) visible en pleine zone d'ombre :
visible([7,8], [5,1]) ?
surLaDroite(5,4,y=3.5x+-737.5)
pos=[250,200]
s = y=200
((y=200)<[250,200];[300,200]>)x(y=3.5x+-737.5) = [object Object]
((y=200)<[250,200];[300,200]>) contient [267.85714285714283,199.9999999999999] ?NON!
s = x=300
((x=300)<[300,200];[300,250]>)x(y=3.5x+-737.5) = [object Object]
((x=300)<[300,200];[300,250]>) contient [300,312.5] ?Peut-être...NON!
s = y=250
((y=250)<[300,250];[250,250]>)x(y=3.5x+-737.5) = [object Object]
((y=250)<[300,250];[250,250]>) contient [282.14285714285717,250.0000000000001] ?NON!
s = x=250
((x=250)<[250,250];[250,200]>)x(y=3.5x+-737.5) = [object Object]
((x=250)<[250,250];[250,200]>) contient [250,137.5] ?Peut-être...NON!
-> False
Si je traduis la partie en rouge de mon message de debug, ça veut dire "Le segment défini par les points (250,200) et (300,200) (inclus dans la droite y=200) contient-il le point (267.85714285714283,199.99999999999999) ?". Forcément non, puisque 199.9999999999999 n'est pas égal à 200
(quelques lignes plus bas on a le même, version 250 < 250.0000000000000001)
Je suis bon pour recoder le tout avec une classe fraction

C'est confirmé : problème d'arrondi !
Pour le cas du perso en (5,1) et de la case (7,8 ) visible en pleine zone d'ombre :
[quote]visible([7,8], [5,1]) ?
surLaDroite(5,4,y=3.5x+-737.5)
pos=[250,200]
s = y=200
((y=200)<[250,200];[300,200]>)x(y=3.5x+-737.5) = [object Object]
[b][color=red]((y=200)<[250,200];[300,200]>) contient [267.85714285714283,199.9999999999999] ?NON![/color][/b]
s = x=300
((x=300)<[300,200];[300,250]>)x(y=3.5x+-737.5) = [object Object]
((x=300)<[300,200];[300,250]>) contient [300,312.5] ?Peut-être...NON!
s = y=250
((y=250)<[300,250];[250,250]>)x(y=3.5x+-737.5) = [object Object]
((y=250)<[300,250];[250,250]>) contient [282.14285714285717,250.0000000000001] ?NON!
s = x=250
((x=250)<[250,250];[250,200]>)x(y=3.5x+-737.5) = [object Object]
((x=250)<[250,250];[250,200]>) contient [250,137.5] ?Peut-être...NON!
-> False[/quote]Si je traduis la partie en rouge de mon message de debug, ça veut dire "Le segment défini par les points (250,200) et (300,200) (inclus dans la droite y=200) contient-il le point (267.85714285714283,199.99999999999999) ?". Forcément non, puisque 199.9999999999999 n'est pas égal à 200 :evil: :evil: :evil:
(quelques lignes plus bas on a le même, version 250 < 250.0000000000000001)
Je suis bon pour recoder le tout avec une classe fraction :cry: