1

bonjour a tous smile


4cfda9b4613584e3547c0e3aba14fc64.png


Alors voila, j'ai un point C qui se ballade entre A et B.
Je connait sa valeur x.
Comment puis je faire pour connaitre sa valeur y ? (il doit toujours se trouver sur le segment AB wink)



j'ai essayé ca :

int a,b;

if(XC>XA && XC<XB)
{
a= (YA-YB)/(XA-XB);
b= YA-a*XA;
YC= (a*XC)+b;
}

mais ca marche pas, en gros YC est toujours egal a YA :/


quelqu'un a une idée ????


merci d'avance wink
avatar
Menuisier of the Dead bientôt sur GBA !!!! :D

Projet en cours:
-Menuisier Of The Dead

2

Si tu connais ya0 et yb0 et xab alors tu as ton equation qui dit que:
y = (xab /yb0) * x + ya0 ?
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.

3

non, le problème c'est que a est entier , et que la fraction a= (YA-YB)/(XA-XB); est probablement inférieure à 1, ce qui fait que c'est arrondi à zéro. et YC=YA

Si tu veux que ça marche il y a deux solutions:

1 - soit déclarer a en float

2 - soit faire la multiplication avant la division pour ne jamais obtenir une division qui donne un truc plus petit que 1, en remplaçant a dans ton équation:

b= YA-((YA-YB)*XA)/(XA-XB);
YC= ( (YA-YB)*XC)/(XA-XB)+b;

et ça devrait le faire

4

C'est bien compliqué tout ça pour une simple interpolation linéaire smile

YC = YA + [(YB - YA) * (XC - XA) / (XB - XA)]

Et hop, pas de problème d'arrondi (attention à ne pas dépasser le minimum/maximum si c'est des entiers, par contre). Dans les cas où on peut choisir la valeur de (XB - XA), une astuce est de le prendre égal à 2n (avec n entier positif), comme ça la division est remplaçable par un décalage de bits smile
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

5

Merci tout le monde happy

J'opte pour le calcul de zerosquare, qui fonctionne parfaitement pour ce que je fais grin

avatar
Menuisier of the Dead bientôt sur GBA !!!! :D

Projet en cours:
-Menuisier Of The Dead