Вопрос по геометрии:
http://forum.boolean.name/showthread...751#post211751
Решение найдено

Function RotateAroundOrigin(X:Float Var, Y:Float Var, ox:Float, oy:Float, a:Int)
Local DX:Float = X - ox
Local DY:Float = Y - oy
Local angdiff:Float = ATan2(DX, DY)
Local dist:Float = Sqr(DX * DX + DY * DY)
Local s:Float = Sin(a + angdiff)
Local c:Float = Cos(a + angdiff)
Local tx:Float = (dist * s)
Local ty:Float = (dist * c)
x = tx + ox
y = ty + oy
Return
End Function
Graphics 800, 600
Global oX:Float = 400
Global oY:Float = 300
Global offsetx:Int = 10;
Global Offsety:Int = 20;
Global rX:Float = oX + offsetx
Global rY:Float = oY + Offsety
Global a:Float = 1
While Not KeyHit(KEY_ESCAPE)
RotateAroundOrigin(rX, rY, ox, oy, a)
Plot rX, rY
Plot ox, oy
If KeyHit(KEY_RIGHT)
ox:+100;
rX:Float = ox + offsetx
rY:Float = oy + Offsety
ElseIf KeyHit(KEY_LEFT)
ox:-100;
rX:Float = ox + offsetx
rY:Float = oy + Offsety
ElseIf KeyHit(KEY_UP)
offsetx:+10;
Offsety:+10;
rX:Float = ox + offsetx
rY:Float = oy + Offsety
ElseIf KeyHit(KEY_DOWN)
offsetx:-10;
Offsety:-10;
rX:Float = ox + offsetx
rY:Float = oy + Offsety
EndIf;
Flip
Wend
End
Источник
http://www.blitzbasic.com/Community/...hp?topic=88294
Но немножко переделал под изменение координат опорной точки