|
49 / 44 / 8
Регистрация: 06.09.2010
Сообщений: 419
|
|
Гексагональная сетка с поворотом на 45 градусов01.07.2013, 23:11. Показов 4557. Ответов 9
Метки нет (Все метки)
Мне нужно реализовать такую гексагональную сетку, как в приложении, только угол надо самому регулировать. В задачу входит: нарисовать эту сетку, знать координаты самой гексы и кординаты в пикселах ее центра.
Как нарисовать обычную сетку - вполне можно найти, но как сделать ее кручение по оси Х - не нашел. Доп инфо: реализовывать буду с помощью канвы html5 и javaScript. Если есть другие Варианты - предлагайте, выслушаю (флеш не предлагать, не подходит).
0
|
|
| 01.07.2013, 23:11 | |
|
Ответы с готовыми решениями:
9
Гексагональная сетка (C++ + SFML) Гексагональная сетка, перемещение фишек. |
|
|
||||||
| 02.07.2013, 05:39 | ||||||
|
Я правильно понимаю, что нужно создать эффект трёхмерности?
Допустим, Вы можете нарисовать обычную сетку. Такое рисование сведётся к циклу, в теле которого будет несколько раз вызываться отрисовка отрезка line(x1,y1,x2,y2) — по одной на каждую сторону. Потом Вы мысленно наклоняете изображение. Это соответствует тому, что точка (x,y) переходит в точку (x,y/sqrt(2),z/sqrt(2)). Но хотим вывести на экран проекцию на плоскость (xy), поэтому каждую точку (x,y/sqrt(2),z/sqrt(2)) нужно спроецировать на (xy). Если проекция прямая или косоугольная, то изображение принципиально не изменится: сплюснется по вертикали и сдвинется по горизонтали. Вы, видимо, хотите рассмотреть следующее: каждую точку (x,y,z) соединить с фиксированной точкой (x0,y0,z0), которая лежит по другую сторону плоскости (xy), отрезком и обозначить пересечение его с плоскостью. Я не помню, как называется такой тип проекции. Положим x0=y0=0 и z0 ~ L — размер сетки (она же конечная) или участка, который мы хотим показать. Тогда (x,y,z) проецируется в (x*z0/(z+z0), y*z0/(z+z0)). Итак, точке (x,y) после наклона и поворота соответствует точка (x*z0/(y/sqrt(2)+z0), y*z0/(y+z0 sqrt(2)). Для примера приведу псевдокод (я его не тестировал)
P.S. это называется центральной проекцией.
1
|
||||||
| 02.07.2013, 13:51 | ||
Ладно, будем считать Вы неудачно выразились, по делу:Это просто перспективная проекция, поэтому ничего изобретать не надо, все очень банально - создаете двумерный массив точек в плоскости XY (рисование сетки сводится к соединению точек линиями) x. y меняются от -x_min до +x_max, z = 0 - поворачиваете все точки вокруг оси X на заданный угол alpha (напр 45 градусов) y_new = y * cos(alpha) - z * sin(alpha) z_new = z * cos(alpha) + y * sin(alpha) - затем применяете перспективное преобразование x_new = x * focal_len / (z + distance) y_new = y * focal_len / (z + distance) Где x_new, у_new - координаты в пикселях, а focal_len и distance - параметры перспективной камеры которые нужно определить. Проще всего задать коэффициент k, напр 4. Тогда distance = x_max * k focal_len = screen_width / 2 * (k - fabs(sin(alpha))) Задавая различные "к" Вы меняете эффект перспективы (угол зрения камеры). Ну и переводите в пиксели экрана x_screen = x + screen_width / 2; y_screen = screen_height / 2 - y;
1
|
||
|
49 / 44 / 8
Регистрация: 06.09.2010
Сообщений: 419
|
||
| 02.07.2013, 14:09 [ТС] | ||
|
Спасибо за ответы, буду думать
0
|
||
|
49 / 44 / 8
Регистрация: 06.09.2010
Сообщений: 419
|
|
| 05.07.2013, 11:08 [ТС] | |
|
Igor3D, по Вашему алгоритму я смог нарисовать гексу под углом, но как сделать, чтобы нарисовать так всю сетку?
0
|
|
|
|
|||||||||||
| 05.07.2013, 21:10 | |||||||||||
|
Есть один артефакт, который нужно пофиксить (думаю, Вы его увидите), он связан с переходом точек через горизонт в область, которая глазом не должна видеться. Фиксится аккуратным анализом ситуации в закомментированной строке с «throw "Invisible"».
Кликните здесь для просмотра всего текста
1
|
|||||||||||
|
49 / 44 / 8
Регистрация: 06.09.2010
Сообщений: 419
|
|
| 05.07.2013, 22:11 [ТС] | |
|
Все прекрасно, гексу под углом я смогу вывести, но у меня другая проблема: я не знаю как вывести СЕТКУ под углом. В голове есть пару алгоритмов, но они такие громоздкие (типа проходить по всем гексам, спаривать точки и т.д.), что я не приступаю к реализации.
Добавлено через 56 минут Извиняюсь, проглупил очень сильно, вопрос закрыт) Большое спасибо)
0
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||
| 22.07.2013, 20:31 | ||||||||||||||||||||||||||||||||||||||||||
|
Постановка задачи:
Переход между двумя плоскостями
Из прошлых постов (#2 и #3) имеем формулы прямого перехода
Поиск гексы по точке
Для удобной работы введём ещё одну координатную сетку (u,v), которая проходит через середины трёх гекс.
Свяжем её координаты с исходными:
В первом приближении можно сказать, что косокоординатный номер гексы (round(getHU(x,y)),round(getHV(x,y))). Во втором приближении можно рассмотреть шесть ближайших соседей первого приближения и найти, к какой гексе (к центру) ближе всего рассматриваемая точка.
Каркас программы
Рабочая программа
P.S. у меня, правда, немного подтормаживает.
1
|
||||||||||||||||||||||||||||||||||||||||||
|
49 / 44 / 8
Регистрация: 06.09.2010
Сообщений: 419
|
|
| 22.07.2013, 23:58 [ТС] | |
|
Ого) Спасибо большое)
0
|
|
| 23.07.2013, 19:48 | |||||||
1
|
|||||||
| 23.07.2013, 19:48 | |
|
Помогаю со студенческими работами здесь
10
27'' монитор с поворотом на 90 градусов Проверить, можно ли получить второй массив поворотом первого на 90 градусов Определить все возможные ходы ферзя, с поворотом доски на 180 градусов Пошаговая гексагональная стратегия для нетбука Процессор в простое греется до 68-69 градусов, а под нагрузкой температура падает до 34-35 градусов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|