Есть поле на котором расположены точки, которые движутся в своём направлении, одна из точек так же движется как и остальные, но от её движения нужно вращать всё поле что бы она якобы постоянно двигалась вверх
какие есть варианты?, вращение картинки будет при помощи Img_Rotate. или как проще, рассчётом или вращением всего поля?
к примеру можно привести 2D радар, где есть много движущихся объектов, один из которых и есть главный, относительно которого нужно вращать этот радар (к сожалению сторон света куда смотрит главная точка нету, поэтому и решено было делать вращение от движения вперёд)
Редактировалось 2 раз(а), последний 2020-07-10 19:11:55
Этот топик читают: Гость
Ответов: 1343
Рейтинг: 31
|
|||
карма: 2 |
|
Ответов: 2059
Рейтинг: 132
|
|||
Rysik, 2D?
тригонометрия Nein? Редактировалось 1 раз(а), последний 2020-07-10 19:21:21 |
|||
карма: 6 |
|
Ответов: 8921
Рейтинг: 823
|
|||
flint2, у коллеги Rysik-а никогда не было понятных объяснений, он полагает, что все здесь экстрасенсы и знают, что он имеет ввиду. А экстрасенс у нас только один, да и тот в отпуске
Вот они движутся в своём направлении
|
|||
карма: 19 |
|
Ответов: 1343
Рейтинг: 31
|
|||
да, так и движутся в своём направлении, но более прямо)), без рывков, а одной из этих точек управляем вручную, и вот относительно этой управляемой точки нужно вращать поле что бы при движении точки в любую сторону, на карте (радаре) она двигалась вверх (то есть поворачивать карту так что бы казалось что она двигается вверх) (очень прямое сравнение с мини картой из игр, если кто играл, понимает, как оно работает, только там есть ещё сторона света куда смотрит камера от обьекта а тут этого нет, поэтому поворачивать нужно исходя из того, куда движется точка, эту сторону и делать верхом радара)
дааааа, объяснять это не моё Редактировалось 1 раз(а), последний 2020-07-10 21:20:11 |
|||
карма: 2 |
|
Ответов: 1343
Рейтинг: 31
|
|||
немного подумав, нашёл путь к решению - первое что нужно сделать, так это отцентрировать карту, что бы в центре была главная точка, второе это поочерёдно записывать в память координаты этой точки и от этого получим вектор и направление вектора, куда движется главная точка, далее нужно создать по верх поля ещё один вектор, а это от центра поля к верху поля, соответственно, после чего, нужно поворачивая картинку, совместить 2 этих вектора вместе, это и будет решение, но как проверять эти 2 вектора, что один на другом лежит
|
|||
карма: 2 |
|
Ответов: 8921
Рейтинг: 823
|
|||
Rysik, угол поворота карты однозначно определяется направлением (углом, обычно называемом вектором) скорости управляемой точки, никаких сравнений не надо
https://forum.hiasm.com/getfile/39075 1.5 Мб -- пара карт 600х600 *.bmp (Чёрные точки отражаются от края, чтобы не убежали, красная управляется клавишами со стрелками вверх/вниз скорость от "0" до максимума, право/лево -- направление через 1 градус) (Вообще надо двигать не красную точку, а карту. а точка должна быть в центре.) |
|||
карма: 19 |
|
Ответов: 2236
Рейтинг: 676
|
|||
Леонид писал(а): Вообще надо двигать не красную точку, а карту. а точка должна быть в центре.Вот так и сделал точка стоит себе в центре и "смотрит" вверх, а всё вокруг нее вертится. Вот только вертеть "дешевле" сам холст перед отрисовкой, чем потом все изображение как у Леонид-а. Схема (W - двигаться, A,D - поворот, Space - остановить движение точек
Леонид, ваша схема на моем стареньком ноутбуке дико виснет (процессор на 100%). И вот не могу понять это или из-за содержания картинки или из-за того что вы ее переворачиваете несколько раз в секунду. Так что большая просьба не выкладывать в схемах такие картинки, а то сильно отвлекает от поставленной задачи Редактировалось 2 раз(а), последний 2020-07-12 17:41:12 |
|||
карма: 11 |
|
Ответов: 8921
Рейтинг: 823
|
|||
sla8a, коллега Tad уже высказывался по этому поводу: гигагерцовые тактовые частоты и много гигабайтная память портят программистов, поэтому и возникают вопросы: "А ты точно программист?"
У меня четыре ядра, 3.5 ГГц и 8 Гб ОЗУ и диспетчер задач при 100 точках говорит "Низкий" и лишь при 200 точках переходит на "Умеренный". Низкий.jpg |
|||
карма: 19 |
|
Ответов: 1343
Рейтинг: 31
|
|||
главная точка никем не управляется в программе, она такая же как все из массива, её можно вырезать оттуда и отдельно читать, но суть в том что изначально присутствует только массив XY у которого постоянно обновляются координаты этих точек и больше ничего нет
Редактировалось 1 раз(а), последний 2020-07-12 22:12:47 |
|||
карма: 2 |
|
Ответов: 2236
Рейтинг: 676
|
|||
Rysik, и в чем проблема? Вам показали как отрисовать используя вычисления (схема Леонида) и используя элементы трансформации (моя схема). Вам нужно показать как работать с массивом?
|
|||
карма: 11 |
|
Ответов: 1343
Рейтинг: 31
|
|||
проблема в том, что в этой схеме нет главной точки, а управление углом поворота идёт от горячих клавиш, а на деле совсем всё по другому
есть массив точек:
и одна главная точка, такая же как все остальные, но не хаотично, а от управления, но всё что от неё есть, так это такие же координаты как и у остальных
суть в том, что исходя из координат этой единственной точки, от её направления движения(направление берётся из 2-х точек, это текущая координата точки и следующая куда точка сдвинется за промежуток времени 33мс, это и будет вектор направления движения), должен происходить поворот всего поля как это сделать даже не предполагаю Редактировалось 1 раз(а), последний 2020-07-21 22:53:52 |
|||
карма: 2 |
|
Ответов: 2236
Рейтинг: 676
|
|||
Rysik писал(а): как это сделать даже не предполагаю |
|||
карма: 11 |
|
Ответов: 1343
Рейтинг: 31
|
|||
sla8a писал(а): Есть одна точка и через 33мс она в другой позиции. Этого достаточно чтоб найти на какой угол нужно повернуть.понятное дело, но у меня по математике всётаки 2-3 было, и в этом направлении думать сложновато |
|||
карма: 2 |
|
Ответов: 2236
Рейтинг: 676
|
|||
Rysik, да тут в интернете показаться пару минут. Чуть подкорректировать схему.
|
|||
карма: 11 |
|
Ответов: 1343
Рейтинг: 31
|
|||
sla8a писал(а): Rysik, да тут в интернете показаться пару минут. Чуть подкорректировать схему.надо хотя бы пнуть меня в этом направлении, какие формулы использовать итд, а то сам не понимаю в этом воообще |
|||
карма: 2 |
|