LINUX.ORG.RU

Виртуальный джостик на QML

 ,


1

0

Хочу сделать что-то вроде этого: http://savepic.su/2745811.png
Мой код: http://pastebin.com/sxfEftfu
С геометрией у меня никакне очень, поэтому прошу помощи. Дополнить необходимо ветку else в onPositionChanged у joystickArea
Используются эти изображения:
background.png http://savepic.su/2747776m.png
finger.png http://savepic.su/2731392m.png

else
расстояние_от_центра = корень(квадрат(центр.икс - кружок.икс) + квадрат(центр.игрек - кружок.игрек))
нужное_положение.икс = центр.икс + (центр.икс - кружок.икс) / расстояние_от_центра * нужное_расстояние
нужное_положение.игрек = центр.игрек + (центр.игрек - кружок.игрек) / расстояние_от_центра * нужное_расстояние

Как-то так. Если накосячил, то думаю, идея ясна: вычисляем радиус-вектор и откладываем его от центра, помножив на нужной расстояние.

unC0Rr ★★★★★
()

Почему QML, а не православный C++?

unfo ★★★★★
()
Ответ на: комментарий от unC0Rr

идея понятна. а вот написать работающую реализацию почему-то до сих пор никто не смог :)
было бы удобно положить начало отсчёта системы координат в центр бОльшей окружности, но нельзя. поэтому нужно учитывать сдвиги и это всё очень усложняет. а ведь ещё ось игреков инвертирована :( беда

vladimirsmirnov9
() автор топика
Ответ на: комментарий от vladimirsmirnov9

было бы удобно положить начало отсчёта системы координат в центр бОльшей окружности, но нельзя

оказывается, можно :)
anchors.centerIn: parent
дальше всё легко

vladimirsmirnov9
() автор топика
Ответ на: комментарий от vladimirsmirnov9

Задачка для 11-го класса... Мдя... Всем обратно в школу!(и мне тоже :)

Алгоритм решения:
1. Получаем базовые координаты пальца ( X1,Y1 )
2. Пересчитываем их в воображаемые полярные координаты, с шагом раным шагу базовых координат и центром в центре джойстика. Получаем угол Fi и длинну R1
3. Теперь мы знаем Fi-координату для пимпочки. Осталось вычислить для неё вторую координату, которую назовём R2
3. По формуле чувствительности джойстика, определяющей отношение R1 к R2, вычисляем R2.
4. Теперь мы имеем точные координаты центра (середины, края - по вкусу в общем) пимпочки Fi,R2. Осталось перевести их обратно из полярных в базовые. по итогу получим некие X2,Y2 которые и будут искомыми координатами для отрисовки пимпочки.

dmitryalexeeff
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.