Fixed the last bug remaining in the gradiation rectangle. Again caused by loss of precision by not using floats :)

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@346 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Adrien Destugues 2008-11-15 18:33:27 +00:00
parent c4f6cf7762
commit 48979bf251
2 changed files with 4 additions and 4 deletions

BIN
gfx2.cfg

Binary file not shown.

View File

@ -5262,7 +5262,7 @@ void Tracer_rectangle_degrade(short RAX,short RAY,short RBX,short RBY,short VAX,
{ {
float a; float a;
float b; float b;
int Distance_X, Distance_Y; float Distance_X, Distance_Y;
Degrade_Intervalle_total = sqrt(pow(VBY - VAY,2)+pow(VBX - VAX,2)); Degrade_Intervalle_total = sqrt(pow(VBY - VAY,2)+pow(VBX - VAX,2));
a = (float)(VBY - VAY)/(float)(VBX - VAX); a = (float)(VBY - VAY)/(float)(VBX - VAX);
@ -5272,10 +5272,10 @@ void Tracer_rectangle_degrade(short RAX,short RAY,short RBX,short RBY,short VAX,
for (Pos_X = RAX;Pos_X<=RBX;Pos_X++) for (Pos_X = RAX;Pos_X<=RBX;Pos_X++)
{ {
// On calcule ou on en est dans le dégradé // On calcule ou on en est dans le dégradé
Distance_X = pow((int)(Pos_Y - VAY),2)+pow((int)(Pos_X - VAX),2); Distance_X = pow((Pos_Y - VAY),2)+pow((Pos_X - VAX),2);
Distance_Y = pow((int)(-a * Pos_X + Pos_Y - b),2)/(a*a+1); Distance_Y = pow((-a * Pos_X + Pos_Y - b),2)/(a*a+1);
Traiter_degrade(sqrt(Distance_X - Distance_Y),Pos_X,Pos_Y); Traiter_degrade((int)sqrt(Distance_X - Distance_Y),Pos_X,Pos_Y);
} }
} }
Mettre_Ecran_A_Jour(RAX,RAY,RBX,RBY); Mettre_Ecran_A_Jour(RAX,RAY,RBX,RBY);