Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.08.2011, 23:00   #1
Genco
Пользователь
 
Аватар для Genco
 
Регистрация: 16.11.2010
Сообщений: 46
По умолчанию Решения для графики. Нужен совет.

Здравствуйте всем!
Такое дело: пишем графическое приложение на C#+WPF, работающее со специфическими трехмерными моделями. Хранятся они в obj-файлах. Дело идет, но есть ряд вопросов, по которым интересуют мнения знающих людей:

1) Что работает быстрее - массивы или коллекции, если учесть, что 3D/2D точки надо будет сортировать при выводе.
2) В ряде ситуаций (некие сечения) имеется набор двумерных точек, образующих кривую (достаточно гладкую, "почти" выпуклую обычно). Кривую надо проводить через них не как попало, а последовательно, значит точки стоит отсортировать. Вопрос - как? Точнее, как удобнее и лучше?
3) кто знает WPF хорошо - если на экране куча мелочей, которые могут включаться/выключаться/уползать за край, то правильнее пересоздавать их (убирать-добавлять с окна) или двигать, включив проверки на выход за окно?

Это основное, буду рад ответам.
Бложегов не имею, но найти меня можно в уютном междусобойчике тут: http://coverduck.ru
"Форум программистов, анархистов, анонимусов и просто любителей с интересом пообщаться"
Genco вне форума Ответить с цитированием
Старый 18.08.2011, 11:58   #2
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

1) Коллекции удобнее. Насколько я знаю, существенная разница в скорости может быть только за счёт изменения размера коллекции (функции Add/Remove), но можно заранее выделить нужное количество памяти, и не трогать эти функции.

2) Я бы сортировал так:
a) Ищем пару точек, наиболее удалённых друг от друга, берём любую из них.
b) Добавляем её в выходной массив, убираем её из исходного массива.
c) Ищем ближайшую к ней точку из оставшихся.
d) Переходим к пункту (b).

Upd: оконечную точку (пункт (a)) лучше искать так:
Для каждой точки ищем две ближайшие точки.
Для оконечной точки эта пара точек будет ближе всего друг другу, так как они лежат с одной стороны от оконечной.

Upd: либо ещё лучше: сравниваем вектора от анализируемой точки до каждой из двух ближайших. У оконечной точки эти вектора почти сонаправлены (векторное произведение векторов минимально).

Последний раз редактировалось ds.Dante; 18.08.2011 в 12:10.
ds.Dante вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен совет в создании покер бота (Есть великолепная идея и основные программы для этого) z3xix13 Помощь студентам 3 11.03.2014 14:32
FREE Компилятор для GUI | Нужен совет sawer6 Софт 1 26.12.2010 19:53
Хочу написать прогу для личных целей, нужен совет! d_mal Помощь студентам 10 31.01.2010 03:17
Нужен детонаторы для решения на VBA Simbad Microsoft Office Excel 2 14.12.2009 16:08
Нужен Макрос, для решения конкретной задачи IREN_27 Microsoft Office Excel 5 23.04.2009 12:42