[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум pawno » Pawno » Стандартные функции » PointAngle [угол поворота]
PointAngle [угол поворота]
ЛолЛисДата: Четверг, 12.05.2016, 00:45 | Сообщение # 1
Группа: Администратор
Сообщений: 277
Статус: Offline
Функция позволяет узнать угол поворота от точки до точки.

Код
stock Float:PointAngle(playerid, Float:xa, Float:ya, Float:xb, Float:yb)
{
        new Float:carangle;
        new Float:xc, Float:yc;
        new Float:angle;
        xc = floatabs(floatsub(xa,xb));
        yc = floatabs(floatsub(ya,yb));
        if (yc == 0.0 || xc == 0.0)
        {
                if(yc == 0 && xc > 0) angle = 0.0;
                else if(yc == 0 && xc < 0) angle = 180.0;
                else if(yc > 0 && xc == 0) angle = 90.0;
                else if(yc < 0 && xc == 0) angle = 270.0;
                else if(yc == 0 && xc == 0) angle = 0.0;
        }
        else
        {
                angle = atan(xc/yc);
                if(xb > xa && yb <= ya) angle += 90.0;
                else if(xb <= xa && yb < ya) angle = floatsub(90.0, angle);
                else if(xb < xa && yb >= ya) angle -= 90.0;
                else if(xb >= xa && yb > ya) angle = floatsub(270.0, angle);
        }
        GetVehicleZAngle(GetPlayerVehicleID(playerid), carangle);
        return floatadd(angle, -carangle);
}


Оптимизация:
#define fclamp360(%0) %0 += (%0 >= 360.0) ? -360.0 : ((%0 < 0.0) ? 360.0 : 0.0)

Код
#define fclamp360(%0) %0 += (%0 >= 360.0) ? -360.0 : ((%0 < 0.0) ? 360.0 : 0.0)

stock ReturnZAngleToPoint(playerid, Float:x, Float:y)
{
    new Float:P[4];
    GetPlayerPos(playerid,P[0],P[1],P[2]);
    P[3] = (180.0 - atan2(floatsub(P[0],x),floatsub(P[1],y)));
    fclamp360(P[3]);
    return P[3];
}


IP: 83.222.105.54:8358
© [CRMP] Россия - Дрифт
 
Форум pawno » Pawno » Стандартные функции » PointAngle [угол поворота]
Страница 1 из 11
Поиск:

Хостинг от uCoz