Показать сообщение отдельно
Старый 30.11.2011, 09:56   #121
Greymem
Нуждающийся
 
Регистрация: 31.05.2010
Сообщений: 63
Написано 3 полезных сообщений
(для 3 пользователей)
Хорошо Ответ: Вопрос-Ответ (для новичков BlitzMax)

Вопрос по геометрии:
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
Но немножко переделал под изменение координат опорной точки
__________________
Мозги... у них есть метод "Storm"

Последний раз редактировалось Greymem, 30.11.2011 в 10:57.
(Offline)
 
Ответить с цитированием