|
30.11.2011, 09:56
|
#121
|
Нуждающийся
Регистрация: 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)
|
|
30.11.2011, 10:58
|
#122
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Это есть в стандартном функционале.
__________________
|
(Offline)
|
|
30.11.2011, 11:00
|
#123
|
Нуждающийся
Регистрация: 31.05.2010
Сообщений: 63
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Сообщение от SBJoker
Это есть в стандартном функционале.
|
Хммм... и как называется функция?
__________________
Мозги... у них есть метод "Storm"
|
(Offline)
|
|
30.11.2011, 14:03
|
#124
|
Элита
Регистрация: 16.01.2008
Сообщений: 1,800
Написано 958 полезных сообщений (для 3,833 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Тему не читай, а сами знаете что....
Atan2()
|
(Offline)
|
|
30.11.2011, 14:30
|
#125
|
Нуждающийся
Регистрация: 31.05.2010
Сообщений: 63
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Сообщение от Dzirt
Тему не читай, а сами знаете что....
Atan2()
|
Ваш речевой оборот убивает клетки моего мозга.
Уточните, что вы хотели этим всем сказать?
__________________
Мозги... у них есть метод "Storm"
|
(Offline)
|
|
30.11.2011, 15:04
|
#126
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
__________________
|
(Offline)
|
|
30.11.2011, 15:39
|
#127
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Сдается мне, ему не нужны намеки, ему нужен код.
|
(Offline)
|
|
30.11.2011, 15:42
|
#128
|
Нуждающийся
Регистрация: 31.05.2010
Сообщений: 63
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Нетъ и еще раз нетъ =)
Кое до чего я могу дойти сам
Брать SetImageHandle и задавать xy с минусом?
__________________
Мозги... у них есть метод "Storm"
|
(Offline)
|
|
30.11.2011, 15:50
|
#129
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
именно так, на столько сколько нехватает до требуемой точки на экране.
__________________
|
(Offline)
|
|
30.11.2011, 15:51
|
#130
|
Нуждающийся
Регистрация: 31.05.2010
Сообщений: 63
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Есть вопрос, как узнать сколько мне нехватает до этой точки? =)
Если известна только координата этой точки XY
__________________
Мозги... у них есть метод "Storm"
|
(Offline)
|
|
30.11.2011, 17:20
|
#131
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
ну смотри, если ты картинку желаешь рисовать в 200, 300
то до начала координат тебе получается -200, -300 так?
Это уже вращение вокруг начала координат получается.
Значит точка_назначения(x,y) - точка_нахождения_картинки(x,y) = смещение_handle_картинки(x,y)
т.е. из координат требуемой точки вращения вычитаем координаты положения видимой части картинки, т.е. если бы у неё был неизмененный хэндл.
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
01.12.2011, 08:49
|
#132
|
Нуждающийся
Регистрация: 31.05.2010
Сообщений: 63
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Хммм, а изначально для той картинки которую хочу вращать вокруг точки которой нет на картинке, Handle куда устанавливать то? =)
__________________
Мозги... у них есть метод "Storm"
|
(Offline)
|
|
01.12.2011, 10:43
|
#133
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Никуда, он и так изначально в 0,0
__________________
|
(Offline)
|
|
02.12.2011, 08:46
|
#134
|
Нуждающийся
Регистрация: 31.05.2010
Сообщений: 63
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
А если мне помимо поворота вокруг произвольной точки, нужно еще и по своей оси потом повернуть?
__________________
Мозги... у них есть метод "Storm"
|
(Offline)
|
|
02.12.2011, 10:48
|
#135
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Тога придётся напрячь штуки из вашей подписи.
__________________
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:47.
|