@GineTik

Расставить ромбики в нужных координатах, ориентируясь на виртуальные координаты?

У меня есть коллекция ромбов которые имеют координаты вида {x: 0, y: 0} или {x: 3, y: -2} и так далее.

Размеры(диагонали) ромба 130 на 84.

вот пример чего я хочу
610932165f521269286706.png
(ромбы должны прилегать друг к другу я нарисовал так для удобства)

пытался несколько дней но никак не получалось
буду благодарен за любой ответ!
  • Вопрос задан
  • 191 просмотр
Решения вопроса 3
Seasle
@Seasle Куратор тега JavaScript
Это называется изометрия. Можете посмотреть эти видео:
Ответ написан
Комментировать
wataru
@wataru Куратор тега Математика
Разработчик на С++, экс-олимпиадник.
Координаты центра ромба {x,y} - {130/2*(x-y), 84/2*(x+y)}

Эту формулу можно вывести, например, не зная вообще ничего. Просто проведите все вертикальные линии через все центры ромбов. Какие ромбы лежат на одной прямой? Немного посмотрев, можно заметить, что это те, у которых разность координат одинаковая. Аналогично, проведя горизонтальные линии - можно заметить, что на одной горизонтали лежат ромбы с равной суммой координат.

Далее надо найти координаты нескольких прямых и можно вывести формулу.

Второй вариант - через геометрию векторов (это линейная алгебра, или еще нет - как это в школе-то называется вообще?). Нарисуйте вектор из ромба {0,0} в ромбы {1,0} и {0,1}. Ясно, что ромб с координатами {x,y} можно получить сложив x раз первый вектор и y раз второй. Подставляя координаты получите ту же формулу.
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
Можно трансформировать canvas: сжать по вертикали и повернуть на 45°. Теперь, если рисовать квадраты — получатся ромбики!

Только Y-координата идёт сверху вниз – тут уж сами разберётесь. Наклоните голову влево, чтобы сориентироваться )


А тут можно перемещаться стрелочками и A-S-D-W. Кликните внутри фрейма, чтобы клавиши заработали:
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы