Szerző Téma: adott koordinátán x1-x2 közti távolság kiszámítása  (Megtekintve 943 alkalommal)

adott koordinátán x1-x2 közti távolság kiszámítása
« Dátum: 2017. Január 13. - 18:45:07 »
0
hali
 
hogy lehetséges kiszámítani x1 és x2 közti koordinátát úgy, hogy a távolságot pozitív floatba adja vissza akkor is, ha az egyik (vagy mindkettő) koordináta minuszba van? 
 
pl if(GetDistanceBetweenX(x1, x2) > 1.25) {}
« Utoljára szerkesztve: 2017. Január 13. - 18:45:53 írta Makarow »

Nem elérhető id100

  • 903
    • Profil megtekintése
adott koordinátán x1-x2 közti távolság kiszámítása
« Válasz #1 Dátum: 2017. Január 13. - 19:57:22 »
0
Vedd az abszolút értékét szerintem az megoldja.

Nem elérhető wRt

adott koordinátán x1-x2 közti távolság kiszámítása
« Válasz #2 Dátum: 2017. Január 13. - 20:48:06 »
0
Becsléseim szerint működik, leszámítva ha valamelyik szám értéke pontosan nulla - arra viszont elég kevés esély van, hogy gyakorlatban bármelyik koordináta is pontosan nulla legyen.
 

stock GetPositiveValue(Float:x1, Float:x2)
{
new Float:value = 0;

if(x1 > 0 && x2 > 0)
{
    if(x1 > x2)
   {
       value = x1-x2;
   }
   else
   {
       value = x2-x1;
   }
}
if(x1 < 0 && x2 > 0)
{
   value =  x2+(-x1);
}
if(x1 > 0 && x2 < 0)
{
   value = x1+(-x2);
}
if(x1 < 0 && x2 < 0)
{
    if(x1 < x2)
    {
        value = x2-(x1);
    }
    else
    {
        value = x1-(x2);
    }
}
return float:value;
}

 
Én az alábbi paranccsal teszteltem le az összes lehetőséget, és tízből tíz alkalommal megfelelő értéket adott vissza.
 

COMMAND:getdistance(playerid, params[])
{
new Float:X1, X2;
if(sscanf(params, \"ff\", X1, X2)) return SendClientMessage(playerid, -1, \"[{3884FF}INFO{FFFFFF}] Usage: /getdistance [x1] [x2]\");
format(Str, sizeof(Str), \"[{3884FF}INFO{FFFFFF}] The distance between the coordinates is: %f\", GetPositiveValue(X1, X2));
SendClientMessage(playerid, -1, Str);
return 1;
}

 
 

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal