Неоптимизированный (сами ставьте сдвиг вместо умножения, используйте свою подсистему перевода и проч.: конкретика ваша, да и оптимизация может затруднить понимание сути) аналог функции
RotateTexture2 для Blitz3D (
см.)
Т.к. Xors3D имеет другую ориентацию осей текстурных координат (нежели блитц), то преобразования будут иными (другие знаки при sin/cos).
void RotateTexture2(int Texture, double Angle){
const double RA2GR=180/M_PI;
double PosX=0.5-0.5*cos(Angle)+0.5*sin(Angle);
double PosY=0.5-0.5*sin(Angle)-0.5*cos(Angle);
xRotateTexture(Texture, Angle*RA2GR);
xPositionTexture(Texture, PosX,PosY );
}
Значение аргумента Angle задаётся в радианах.
Функция позволяет вращать текстуру не за "вершину", а вокруг "центра".
Формулы выведены с нуля, хотя, не трудно было бы заметить, что разница сводится к смене знака координат
xPositionTexture(Texture, PosX,PosY );//стало
и
PositionTexture Tex,-u,-v;//было
Поучить аналог
RotateTexture3 из данного кода можно очевидным образом.