![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| htzg |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 17.4.2010 Репутация: нет Всего: нет |
Здравствуйте,
пишу программу на Qt для редактирования 3х мерных массивов данных. Представляю себе это так: будет 2Д окно в котором будут изображены ячейки(примерно как в IconEditor). Будет цветовая шкала от мин значения до макс. Мин будет синим цветом, макс красным...например. Можно будет послойно просматривать 3Д массив и править его. Править кистью. Как в Point и т.п. Данные для массива могут иметь тип: -целые числа -числа с запятой -логического типа: 1 или 0 Экспортироваться должны в том виде что и импортировались. Так вот как хранить этот 3д массив? В виде QVariant? В виде double (так как из этот тип можно перевести в любой другой). Что будет с памятью, скоростью работы? Массивы на практике будут иметь размеры ~100x100x100. и их в памяти будет порядка 20-30. Важна скорость. Правка будет выглядеть примерно так: кисти будет задаваться радиус(в ячейках) и множитель. Будет много мелких правок(много нажатий на кнопку мыши - несколько в секунду). Т.е. если нужно получить нужное значение не будет вычисляться нужный множитель, а просто будет задан заведомо меньший и применен необходимое кол-во раз что бы примерно получить необходимое значение. Если будет тупить - программу использовать не будут. Машины: i7 12Gb RAM. И еще есть у кого что нибудь подобное? Поделитесь? Или подскажите где искать. Я инженер |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| htzg |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 17.4.2010 Репутация: нет Всего: нет |
||||
|
||||
| htzg |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 17.4.2010 Репутация: нет Всего: нет |
один момент
"The member-list of a union represents the kinds of data the union can contain. A union requires enough storage to hold the largest member in its member-list. For more information, refer to Union Declarations (C Language Reference)." Unions Зачем использовать union если это память не экономит? Пусть тогда будет double. При экспорте будет перевод в нужный тип... |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
нужно знать какие алгоритмы будут использоваться совместно с массивами и кто их будет реализовывать, для того чтоб оптимально принять решение, union или double. но одно стопроцентно - никакой QVariant или прочая run-time ерунда тебе не подходят. ибо производительность упадет в разы...
Это сообщение отредактировал(а) boostcoder - 4.9.2011, 22:30 |
|||
|
||||
| htzg |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 17.4.2010 Репутация: нет Всего: нет |
вопрос по union
|
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| htzg |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 17.4.2010 Репутация: нет Всего: нет |
я правильно понимаю что теперь, если использовать union, чтобы совершать какие либо математические действия над элементами массива, для каждого массива мне нужно иметь переменную характеризующую тип данных этого массива?
так? Более "элегантного"(легкого) способа нет? |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| htzg |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 17.4.2010 Репутация: нет Всего: нет |
однотипность распространяется на некоторую область/плоскость - т.е. на весь 3д массив. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
т.е. твой 3D массив, может состоять только из одного типа? я правильно понял? Добавлено через 44 секунды тип элементов массива, известен в момент компиляции? или он определяется/выбирается во время работы программы? |
|||
|
||||
| htzg |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 17.4.2010 Репутация: нет Всего: нет |
да
он определяется/выбирается во время работы программы как я уже писал может быть несколько массивов и у каждого может быть свой тип. это будет выглядеть так: главное окно: слева список массивов, справа - окно редактирования. импортируешь массив или сразу несколько; он(и) появляется в списке слева; выбираешь массив в списке; редактируешь; экспортируешь Это сообщение отредактировал(а) htzg - 5.9.2011, 22:06 |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
тогда три раздельных типа массива под каждый тип данных - судя по всему у них и набор функций будет немного разный..
и адаптер для привязки к гуи.. Добавлено через 2 минуты и 15 секунд если операции над массивом примитивные, естественно сам массив может быть элементарным, и тогда вся задача свеждется к реализации адаптера/контролера.. Это сообщение отредактировал(а) mes - 5.9.2011, 23:06 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
а обрабатывать массив лучше параллельно, в несколько потоков. тут самое место для OpenMP или параллельных алгоритмов GCC-STL ;)
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |