Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
3 / 2 / 1
Регистрация: 23.07.2024
Сообщений: 80

Поле шестиграников

12.10.2024, 16:04. Показов 1193. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Извините если не совсем правельно тему разместил.

встречал такие комп. игры где фишки надо раскладывать и передвигать по полю из шестигранных ячеек.

вопрос вот к чем: как подобное игровое поле представить в програмном виде. если ввиде матрицы то у каждой ячейки 4 соседа или 8 если по диагонали тоже считать. а тут 6?

проясните плиз подобное затруднение ))))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.10.2024, 16:04
Ответы с готовыми решениями:

Друзья, подскажите, как в классе создать константное поле, ссылочное поле и объектное поле?
Препод на защите лабораторной по классам дал задание большое. В общем-то все пункты я знаю как делать, кроме этого. Вот что такое...

Функция в форме Access: Поле 4= «Санкт-Петербург», если Поле 2 = «С» или «Москва», если Поле 2 = «М»
Подскажите пожалуйста функцию в Access в форме, если вообще такое вообще так можно сделать: Поле 4= «Санкт-Петербург», если Поле 2 = «С»...

При вводе в одно поле, текст должен появляться в другом поле
как это сделать напомните пожалуиста

16
 Аватар для Pphantom
2243 / 1503 / 690
Регистрация: 17.03.2022
Сообщений: 4,788
12.10.2024, 16:23
Посмотрите на картинку снизу. Видно, что ряд шестиугольников (не шестигранников - не надо пугать читателей) можно считать "эквивалентным" некоторой строке. Соответственно, данные можно хранить в обычном двумерном массиве, но с чуть модифицированным правилом соседства.

Соседями всегда будут ячейки сверху, снизу, справа и слева (для эквивалентной квадратной сетки), а также:
1) для ячеек в строках с четным номером - соседи по диагонали внизу;
2) для ячеек в строках с нечетным номером - соседи по диагонали сверху.

В принципе, правила для четных и нечетных строк можно поменять местами, принципиально ничего не изменится.
Миниатюры
Поле шестиграников  
0
1959 / 815 / 114
Регистрация: 01.10.2012
Сообщений: 4,750
Записей в блоге: 2
12.10.2024, 16:27
Да, шестигранник - одна из немногих фигур что заполняют пространство полностью, без пустот. Индексация такая же как у обычных 2D/3D массивов, только при пересчете точек добавляется головняк со сдвигом четных/нечетных строк и столбцов
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
12.10.2024, 20:14
Если представить игровое поле в виде одномерного массива и функции, возвращающей соседей, то большинство алгоритмов (например, поиск кратчайшего пути) не будет зависеть от того, квадратные клетки или шестиугольные.
0
3 / 2 / 1
Регистрация: 23.07.2024
Сообщений: 80
13.10.2024, 19:02  [ТС]
направление понял. спасибо
0
16.10.2024, 17:04

Не по теме:

Цитата Сообщение от Igor3D Посмотреть сообщение
Да, шестигранник - одна из немногих фигур что заполняют пространство полностью, без пустот.
Шестигранник это не фигура, это тело. А правильный шестигранник это вообще куб. Не путайте шестигранник и шестиугольник.

0
1959 / 815 / 114
Регистрация: 01.10.2012
Сообщений: 4,750
Записей в блоге: 2
16.10.2024, 17:39
Цитата Сообщение от u235 Посмотреть сообщение
Шестигранник это не фигура, это тело. А правильный шестигранник это вообще куб. Не путайте шестигранник и шестиугольник.
Да, граней у такой 3D фигуры/тела намного больше. Ну хорошо, если есть интерес - такой вопрос:

Вот (картинка выше) шестиугольники нарисованы на плоскости. А как они будут выглядеть на произвольной фигуре, напр на сфере или чайнике? Увидим ли мы "сломанные части" шестиугольников?
0
1959 / 815 / 114
Регистрация: 01.10.2012
Сообщений: 4,750
Записей в блоге: 2
16.10.2024, 20:58
Цитата Сообщение от Igor3D Посмотреть сообщение
Да, граней у такой 3D фигуры/тела намного больше.
А такого тела (все грани - правильные 6-угольники) похоже и нет.

Меня смутила эта картинка (аттач). Как это так ровно все легло и не видно искажений ?
Миниатюры
Поле шестиграников  
0
 Аватар для Pphantom
2243 / 1503 / 690
Регистрация: 17.03.2022
Сообщений: 4,788
16.10.2024, 22:22
Цитата Сообщение от Igor3D Посмотреть сообщение
А такого тела (все грани - правильные 6-угольники) похоже и нет.
Действительно нет. Квадраты (куб), треугольники (тетраэдр, октаэдр или икосаэдр) или пятиугольники (додекаэдр).
Цитата Сообщение от Igor3D Посмотреть сообщение
Меня смутила эта картинка (аттач). Как это так ровно все легло и не видно искажений ?
Ну так на "ребре" они не плоские, чем это не искажение?
0
1959 / 815 / 114
Регистрация: 01.10.2012
Сообщений: 4,750
Записей в блоге: 2
17.10.2024, 01:21
Цитата Сообщение от Shamil1 Посмотреть сообщение
Если представить игровое поле в виде одномерного массива и функции, возвращающей соседей, то большинство алгоритмов (например, поиск кратчайшего пути) не будет зависеть от того, квадратные клетки или шестиугольные.
Ну какая-то разница все-таки есть, 6 соседей меньше чем 8. Хотя гемора это не компенсирует. Ну вот хотя бы

- есть 2 точки в декартовых координатах: (x0, y0) и (x1, y1). Найти последовательность hex ячеек (индексы) которые этот отрезок пересекает

Маленькая (орден за нее точно не дадут), но очень мерзкая задачка
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
17.10.2024, 12:45
Цитата Сообщение от Igor3D Посмотреть сообщение
Найти последовательность hex ячеек (индексы) которые этот отрезок пересекает
Это детали, которые нужно отделить от основного алгоритма.

Например, в ООП можно сделать абстрактный класс Field, в который перенести решение подобных "геометрических" вопросов. И от него уже наследовать игровое поле с нужным количеством соседей. Даже с квадратными клетками может быть 4 или 8 соседей. Это не должно влиять на основную логику программы. Более того, трёхмерное игровое поле обычно принципиально ничем не отличается от двухмерного.
0
1959 / 815 / 114
Регистрация: 01.10.2012
Сообщений: 4,750
Записей в блоге: 2
18.10.2024, 03:18
Цитата Сообщение от Shamil1 Посмотреть сообщение
Это детали, которые нужно отделить от основного алгоритма.
Например, в ООП можно сделать абстрактный класс Field, в который перенести решение подобных "геометрических" вопросов. И от него уже наследовать игровое поле с нужным количеством соседей. Даже с квадратными клетками может быть 4 или 8 соседей. Это не должно влиять на основную логику программы. Более того, трёхмерное игровое поле обычно принципиально ничем не отличается от двухмерного.
Разумно, но довольно "общо"

Цитата Сообщение от Igor3D Посмотреть сообщение
- есть 2 точки в декартовых координатах: (x0, y0) и (x1, y1). Найти последовательность hex ячеек (индексы) которые этот отрезок пересекает
Перевести в индексы hex сетки несложно, немного повозиться с чет/нечет. Найти/ощупать соседей - тоже просто. А вот рисование линии (закраской hex ячеек) - ничего очевидного не видно. Искать пересечения прямой с границами шестиугольника (для каждой ячейки) - ну совсем уж тупо. Брезенхем? А что считать здесь "прямым сегментом"?
0
13 / 11 / 4
Регистрация: 10.01.2020
Сообщений: 71
18.10.2024, 13:50
Цитата Сообщение от Igor3D Посмотреть сообщение
Найти последовательность hex ячеек (индексы) которые этот отрезок пересекает
Такой же поиск как и в любой другой системе координат с разным количеством ячеек-соседей
0
1959 / 815 / 114
Регистрация: 01.10.2012
Сообщений: 4,750
Записей в блоге: 2
18.10.2024, 20:00
Цитата Сообщение от Igor3D Посмотреть сообщение
Искать пересечения прямой с границами шестиугольника (для каждой ячейки) - ну совсем уж тупо.
После некоторых размышлений: а почему нет? Вычисления несложные, подстановка точек в ур-е прямой. Код получится не таким коротким как хотелось бы, но принципиальных трудностей нет

Цитата Сообщение от Mc_RoSA Посмотреть сообщение
Такой же поиск как и в любой другой системе координат с разным количеством ячеек-соседей
А можно пример "такого же" (поиска)?
0
698 / 572 / 75
Регистрация: 20.09.2014
Сообщений: 3,697
19.10.2024, 13:52
Цитата Сообщение от u235 Посмотреть сообщение
Не путайте шестигранник и шестиугольник.
А я даже и не заметил подвоха)
0
1959 / 815 / 114
Регистрация: 01.10.2012
Сообщений: 4,750
Записей в блоге: 2
20.10.2024, 14:41
См рисунок первого ответа (пост #2). Найдем расстояния (по осям) между центрами "гексагонов". Каждый состоит из 6 равносторонних треугольников. Пусть сторона = радиусу описанной = 1. Тогда высота (из центра на сторону) = sqrt(3) / 2, расстояние между центрами по вертикали = sqrt(3). А по горизонтали радиус + половинка = 1.5. Итого

dx = 1.5
dy = sqrt(3) ~ 1.73

Интересно почему комбинация идеальных фигур (равносторонних треугольников) дает "не симметричный" результат/покрытие. Или я неверно посчитал?

Да, и вот что
Найти индексы (ix, iy) hex ячейки в которую попадает точка с координатами (x, y)
Так ли уж проста эта задача что не заслуживает решения/рассмотрения?

Добавлено через 14 минут
Совершенно идиотская мысль Вот если бы было 3 оси (на плоскости, вертикаль + 2 диагонали) - тогда получается все ровно/симметрично
0
3 / 2 / 1
Регистрация: 23.07.2024
Сообщений: 80
29.10.2024, 03:41  [ТС]
В моём случае достаточно двух измерений
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.10.2024, 03:41
Помогаю со студенческими работами здесь

Только константное статическое поле НЕ МОЖЕТ быть поле членом класса !
class CCoords { static const float rate = 1.0f; // ОШИБКА !!! bool IsComputed; float x,y; POINT2D ...

Для каждой переменной-отдельное поле или массивом в одно поле?
Можно ли несколько переменных загнать в массив через сериализацию в одну поле или все же оптимальнее делать для каждой переменной отдельное...

Прорисовать поле и указать заряды в модели заряженной частицы в магнитном поле
Как прорисовать поле и указать заряды в модели заряженной частицы в однородном магнитном поле?uses graphABC; procedure pole; var...

Как очистить одно поле input если другое поле пустое
К примеру, я пишу какой-то текст в поле 1, у меня в скрытое поле2 присваивается id. Если я сотру (backspace) текст из поля 1, то должно...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
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 05.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 17.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru