10.04.2013, 20:34
- Tenemos un triбngulo, a sus esquinas les llamaremos A, B y C, cada una de estas determinada por una coordenada sobre el eje X y la otra sobre el Y ( X y Y ).
- Tenemos un jugador en un punto una coordenada determinada ( X y Y ) a la cual llamaremos P.
La lуgica que deberбs seguir es esta:
- Para saber sн el jugador se encuentra dentro del бrea de ABC deberбs de comprobar que la sumatoria de las бreas de los triбngulos PAB, PBC y PAC equivalgan a la misma cantidad del бrea de ABC.

Te dejo la funciуn abajo.
- Tenemos un jugador en un punto una coordenada determinada ( X y Y ) a la cual llamaremos P.
La lуgica que deberбs seguir es esta:
- Para saber sн el jugador se encuentra dentro del бrea de ABC deberбs de comprobar que la sumatoria de las бreas de los triбngulos PAB, PBC y PAC equivalgan a la misma cantidad del бrea de ABC.

Te dejo la funciуn abajo.
PHP код:
bool:isPlayerInTriangle( Float:f_pointX, Float:f_pointY, Float:s_pointX, Float:s_pointY, Float:t_pointX, Float:t_pointY, playerid)
{
new
Float:check[5],
Float:playerPos[3];
GetPlayerPos(playerid, playerPos[0], playerPos[1], playerPos[2]);
check[0] = floatabs(floatdiv(floatadd(floatmul(f_pointX,floatsub(s_pointY,t_pointY)),floatadd(floatmul(s_pointX,floatsub(t_pointY,f_pointY)),floatmul(t_pointX,floatsub(f_pointY,s_pointY)))),float(2)));
check[1] = floatabs(floatdiv(floatadd(floatmul(playerPos[0],floatsub(s_pointY,t_pointY)),floatadd(floatmul(s_pointX,floatsub(t_pointY,playerPos[1])),floatmul(t_pointX,floatsub(playerPos[1],s_pointY)))),float(2)));
check[2] = floatabs(floatdiv(floatadd(floatmul(f_pointX,floatsub(playerPos[1],t_pointY)),floatadd(floatmul(playerPos[0],floatsub(t_pointY,f_pointY)),floatmul(t_pointX,floatsub(f_pointY,playerPos[1])))),float(2)));
check[3] = floatabs(floatdiv(floatadd(floatmul(f_pointX,floatsub(s_pointY,playerPos[1])),floatadd(floatmul(s_pointX,floatsub(playerPos[1],f_pointY)),floatmul(playerPos[0],floatsub(f_pointY,s_pointY)))),float(2)));
check[4] = ( check[1] + check[2] + check[3] );
return ( check[0] == check[4] );
}

