Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 12.06.2006, 19:45   #1
KRIK
Бывалый
 
Регистрация: 19.09.2005
Сообщений: 649
Написано 3 полезных сообщений
(для 3 пользователей)
Интересный вопрос !

Я знаю что есть массивы одномерные ( или линейные ) или двумерные. А вот говорят что есть трёхмерные массивы. Какие это массивы - я чёт не пойму ??? И вообще где их можно применять и на каких языках создавать ( если такие можно создавать ) ???
(Offline)
 
Ответить с цитированием
Старый 12.06.2006, 20:21   #2
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Их можно применять почти на всех языках

Вот пример на блитце:
Dim Matr%(n1,n2,n3)
Это трехмерный массив, т.е. имеет три "измерения"

Вообще можно хоть десятимерные делать...
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 13.06.2006, 00:19   #3
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
в VB6 вроде максимум это 64х-мерные массивы...
__________________
(Offline)
 
Ответить с цитированием
Старый 13.06.2006, 01:02   #4
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
впринципе ЛЮБУЮ систему (в том числе и многоуровневую) можно описать двумерным массивом, и я советую это делать поскольку обращение к даже элементу трехмерного массива ведет за собой кучу умножений, что жутко тормозит гаму...

ну а заюзать трехмерный массив можно например в проекте типа игры X-Tension. есть космические базы: одно измерение это набор свойств базы, типа там количество жизней, денег и т.п., второе измерение сами базы, третье измерение это сектора космического пространства в которых эти базы находятся...

__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Старый 13.06.2006, 01:06   #5
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
впринципе ЛЮБУЮ систему модно одномерным описать, только враппер работы с этим удовьствием будет работать ещё медленне умножений. А скорость умножений, кстати, не окажет уж очень сильного искажения ФПС. В общем как с ГОТО - толку мало, но некторые юзают. ИМХО.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 13.06.2006, 02:43   #6
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
Радость

Сообщение от impersonalis
впринципе ЛЮБУЮ систему модно одномерным описать, только враппер работы с этим удовьствием будет работать ещё медленне умножений. А скорость умножений, кстати, не окажет уж очень сильного искажения ФПС. В общем как с ГОТО - толку мало, но некторые юзают. ИМХО.
я так и думал, что у нас получится спор... попробую выспорить свою точку зрения, хотя о стилях проганья как и о вкусах не спорят.

конечно если при любом вычислении юзать постоянно функцию поиска то ессно метод мастдай.

Многоуровневая статичная система: для каждого элемента оставляем поле для НОМЕРА элемента родителя в массиве.

Многоуровневая динамичная система: в случае фрагментации элементы НЕ двигать + делать поле для номера родителя.

Многоуровневая динамичная система с неограниченным количеством "детей":
1. сделать количество свободных элементов для максимально возможного количества детей.
2. заюзать дополнительный двумерный массив а в первом писать номер индекса второго массива где искать номера детей.

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

конечно это не добавит 20 или 30 ФПС, но когда борятся за каждый ФПС, то это поможет сэкономить пару...

__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Старый 13.06.2006, 17:50   #7
jimon
 
Сообщений: n/a
дайте пример логического расложение n-мерного масива в одномерный
чтобы dim(a1,a2,a3,...,aN) превратить в dim(a1*a2*a3*...*aN)
желательно формулой

ps. N-мерные масивы неиспользуются в играх
используются только готовые классы одномерных и двухмерных масивов
гарантированая n-мерность никому никогда не надо
 
Ответить с цитированием
Старый 13.06.2006, 18:35   #8
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Сообщение

Саб, кажется я понял,что ты имеешь в виду.
Только для такой ситемы гораздо удобней и лучше юзать списки (различных типов - зависит от задачи)
(Offline)
 
Ответить с цитированием
Старый 14.06.2006, 01:15   #9
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Динамические массивы рулят. (то бишь типы или списки)
__________________
(Offline)
 
Ответить с цитированием
Старый 14.06.2006, 01:42   #10
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
хмм... тема оспорима

чесно сказать никогда не мог понять как может рулить массив в котором постоянно работают системы сдвига и перераспределения памяти. дайте хоть ссылу чтоб почитать в чем можно выиграть при такой системе скорость.
__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Старый 14.06.2006, 04:32   #11
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
В подавляющем большинстве случаев, выигрыш обычного массива в скорости (оч мизерный) сводится на нет геморроем работы с ним.

Есть конечно случаи, когда он очень удобен, но в играх, как правило, таких случаев немного.
Например клеточное поле с постоянной размерностью, набор заранее известного числа элементов.

Но как только тебе нужно удалять\добавлять элементы в этот массив и сдвигать - тут начинается гемморой. И быстрей чем в списке, ты свой сдвиг не сделаешь (проверял на блитц и пурике)
__________________
(Offline)
 
Ответить с цитированием
Старый 14.06.2006, 14:03   #12
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Массивы, 1- , 2- и трехмерные, лично я использую очень широко. Ибо быстро и просто. Как правило значительная часть данных, которые нужно хранить в игре или вообще не изменяется в реалтайме, или не меняет своей "общеколичественной" составляющей, т.е. вполне может быть реализована массивом.
Так, для примера, в массивах удобнее хранить показатели персонажей, параметры оружия, раскладку клавиатуры, карты (путей, освещения и т.п.) с регулярной сеткой, да мало ли еще что. И это логично: в процессе игры количество функциональных клавиш, "видов орков", или размеры матрицы проходимости не изменятся. То же относится и к многим схемам синглесрфейсных партиклов/декалей: удалить нужный квад из серфейса нельзя, бесконечно добавлять бессмыссленно, а значит мы изначально оперируем заведомо неизменным количеством обьектов и массив решает... пение диферамбов можно продолжать.
Кроме того, при подгрузке нового уровня/кластера массивы можно без труда "переобьявить" под новые условия.
Кстати, прирост скорости не такой уж и мизерный: несколько ФПС, когда их всего-то едва ли 40 с натягом- это немало. И код становится намного проще и, главное, короче. А значит- удобней и читаемей.
...
При этом, я ни в коем случае не призываю отречься от списков: просто следует испольовать все доступные инструменты, и исходить из всего спектра их возможностей.

С уважением.
(Offline)
 
Ответить с цитированием
Старый 14.06.2006, 20:49   #13
KRIK
Бывалый
 
Регистрация: 19.09.2005
Сообщений: 649
Написано 3 полезных сообщений
(для 3 пользователей)
ОГО! Неожидал что только ответов будет на этот вопрос! Вообщем БОЛЬШОЕ всем спасибо. Прям простветили в массивы с головой
(Offline)
 
Ответить с цитированием
Старый 14.06.2006, 23:23   #14
jimon
 
Сообщений: n/a
[тема не раскрыта]
на мой вопрос так и неответели - как разложить
масив dim(a1,a2,a3,...,aN) в одномерный dim(a1*a2*a3*...*aN) ?
формулой плиз... или идеей
 
Ответить с цитированием
Старый 15.06.2006, 01:20   #15
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Лампочка

для 2мерного(далее по аналогии):
кстати -тема поднималась - как по отдельности так и целиком
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интересный вопрос! Lexa Алгоритмика 13 21.06.2009 15:45
Интересный вопрос... GlobalShar 3D-программирование 12 04.12.2007 21:05
Интересный FTP pax Полезные ссылки 5 28.06.2007 19:09
Интересный факт voron 3D-программирование 12 29.09.2006 23:13
интересный Ftp jimon Болтовня 0 12.03.2006 17:42


Часовой пояс GMT +4, время: 11:06.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com