11341
|
Программирование / Алгоритмы / Re: Пересечение поверхностей
|
: Август 30, 2009, 16:07
|
1) Имем тругольник (твое допущение) 2) Имеем 2 точки на нем соединенные отрезком
Это только очень частный случай. А представьте себе какая-то ваза стоит на полу и немного "вдавлена" в пол. Тут мы имеем сотни отрезков пересечения. Очевидно что пытаться классифицировать все случаи бесполезно, нужна более общая "engine". Какая?
|
|
|
11342
|
Программирование / Алгоритмы / Re: Пересечение поверхностей
|
: Август 30, 2009, 15:22
|
1) Все-таки исходные полигоны или треугольники. 2) Результатирующие - только треугольники? Админы! Похоже в данном разделе вложения файлов не делаются . Это как-то фигово! Как вариант, можно разместить какртинку на сайте, например здесь http://www.radikal.ru/ и дать ссылку. Понял, разместил, даю ссылку http://i022.radikal.ru/0908/b0/b948c7d4e4f7.pngДля простоты полагаем что все состоит из треугольников имеющих представительную площадь. Например на картинке каждый квадрат состоит из 2 треугольников. Результат должен быть в том же формате - корректная геометрия.
|
|
|
11343
|
Разное / Говорилка / Re: Программы для продаж
|
: Август 30, 2009, 14:48
|
Как Юзер добавлю, качать прогу с таких сервисов страшновато - "а вдруг там чего-нибудь похлеще рядового вирусника".
На деле все намного хуже. Сначала смотришь - солидная компания, солидный сайт и т.п.. Разрабатывайте пожалуйста, вот Вам бета-тестирование, мы обеспечиваем на своем сайте и все такое. Ну пашешь конечно как папа Карло. И только потом доходит - меня просто использовали, ничего я здесь заработать не мог "в принципе". И тот кто мне письма хорошие писал - прекрасно об этом знал. И я далеко не первый и не последний мотылек прилетевший на этот огонь
|
|
|
11344
|
Программирование / Алгоритмы / Re: Пересечение поверхностей
|
: Август 30, 2009, 13:58
|
1) Какого типа пересечения, например в 2-х или в 3-х измерениях 2) Соответсвенно по какому принципу разбивка и сборка новых(очень желательна картинка) 3) Какова цель(не вдаваясь в предметную область) 4) Какие ограничения
1) в 3-х измерениях 2) Никаких принципов пока нет - это и есть цель/тема обсуждения. Пока я умею находить точки/отрезки пересечений. 3) Цель - та же геометрия но с новыми вершинами (вертексами) в местах пересечений. Для этого надо построить новые треугольники. 4) Гарантируется что все исходные полигоны корректны (планарны). Все в памяти (примерно до 12 Gb) свапа на диск нет. Edit: хотел "прикрепить картинку" а она что-то "не прикрепляется" Наверное что-то не так делаю
|
|
|
11345
|
Программирование / Алгоритмы / Пересечение поверхностей
|
: Август 30, 2009, 12:43
|
Здравствуйте
Есть полигоны (только треугольники), нужно разбить их в местах где они пересекают друг друга. Задача очень близка к boolean, но в данном случае цель - улучшение качества карты освещенности. Сам инструмент collision detection у меня есть. Я могу определять что ребро и/или полигон пересекает другой полигон, могу найти точки пересечения. Проблема в том что делать когда пересечения найдены и как вообще организовать данные. Например, один большой полигон (такой как пол или потолок) может пересекаться с очень многими другими. Что мне делать с найденными отрезками пересечений? Как собрать их в новые полигоны?
Идеи, предложения?
Заранее спасибо
|
|
|
11346
|
Qt / Установка, сборка, отладка, тестирование / Re: mac os 10.6
|
: Август 30, 2009, 10:22
|
Я буду сидеть на 10.5 до последней возможности. Неприятности искать не надо, они сами нас находят От 10.6 уже получил: скорее всего прийдется переписывать драйверы для hardware key, т.к. все ядро 10.6 в 64-bits.
|
|
|
11347
|
Программирование / С/C++ / Re: Передача параметров/аргументов
|
: Август 30, 2009, 10:00
|
Вызов new/delete гораздо дороже чем передача структуры по значению. Само инвертирование довольно сложное, больше 100 строк, поэтому надо держать его в 1 функции. Разумеется, Ваш и мой варианты будут работать, но согласитесь: ковбой из Колорадо написал короче/проще
|
|
|
11349
|
Программирование / С/C++ / Re: Передача параметров/аргументов
|
: Август 29, 2009, 19:03
|
Правильнее и наиболее оптимально: void InvertMatrix(Matrix& theInvertedMatrix, const Matrix* theSourceMatrix=NULL) { if (theSourceMatrix && theSourceMatrix != &theInvertedMatrix) {theInvertedMatrix= *theSourceMatrix;}
// invert matrix theInvertedMatrix
} Так сходу не получается Defaulrt NULL не имеет смысла, нет исходной матрицы - нечего инвертировать. Присвоение theInvertedMatrix ничего не дает т.к. theInvertedMatrix должна (довольно тщательно) вычисляться. Логика мало изменилась со времен Аристотеля - и она столь же неумолима (знание классов мало помогает :-))
|
|
|
11350
|
Разное / Говорилка / Re: Программы для продаж
|
: Август 29, 2009, 18:04
|
Хотел узнать есть ли в мире нета, сайты где каждый может выкласть свои проги(что-то типа http://qt-apps.org) только за деньги (правда небольшие). Таких сайтов довольно много, и я (к сожалению) имел (не)счастье с этой системой ознакомиться на практике. Мои личные выводы: НИКОГДА юзер не воспринимает серьезно программу/продукт которая "даже" не имеет своего сайта, своей системы платежей и.т.п. Не имейте иллюзий что кто-то будет продавать Вашу программу за Вас - хотя такой продавец и найдется, его цели будут совсем другие. Глагол "ложить" должен употребляться с приставкой, глагол "класть" - без приставки. Так и с продажей программ - какую-то "приставку" нужно иметь
|
|
|
11351
|
Программирование / С/C++ / Re: Передача параметров/аргументов
|
: Август 29, 2009, 17:14
|
Ну и в чем прикол? Не вижу особой разницы. Разве что void InvertMatrix( Matrix * theInvertedMatrix, const Matrix * theSourceMatrix ); Лучше чем void InvertMatrix( Matrix * theInvertedMatrix, Matrix theSourceMatrix ); с точки зрения оптимизации. В последнем случае - может возникнуть лишнее копирование структуры
Для приколов есть другие threads. Здесь же (увы) прийдется все разжевывать. Часто (в большинстве случаев) нужно инвертировать матрицу "на месте". В этом случае theInvertedMatrix и theSourceMatrix указывают на тот же адрес. При передаче обеих матриц по адресу/ссылке надо это предусмотреть: void InvertMatrix( Matrix * theInvertedMatrix, const Matrix * theSourceMatrix ) { Matrix temp; if (theInvertedMatrix == theSourceMatrix) { temp = *theSourceMatrix; theSourceMatrix = &temp; } // теперь инвертируем Гауссом и.т.п. .... }
А он просто сказал компилятору то же сделать и спокойно вызывает Matrix M = ... ... InvertMatrix(&M, M):
|
|
|
11352
|
Qt / Общие вопросы / Re: QFileDialog - не правильно работает под MAC
|
: Август 29, 2009, 16:50
|
Причем здесь это. Диалог с режимом ввода имени файла в Mac есть, что показывает работа в режиме QFileDialog::AcceptSave. Просто в Qt для QFileDialog::AcceptOpen + QFileDialog::AnyFile вызывается не тот Mac диалог(или возможно не в том режиме) это и есть ошибка троллей.
Нативные файловые диалоги "Open" и "Save" = 2 совершенно разных диалога (по крайней мере на Mac). Разные нативные функции (типа NavGetFile/NavPutFile) используются для каждого, разные нативные ресурсы и т.п. Это 2 разных сервиса, а не 2 режима того же диалога. Для "Open" диалога строки ввода никогда не было, а для "Save" всегда была. Претензии к Qt программистам в данном случае беспочвенны
|
|
|
11354
|
Программирование / С/C++ / Re: Передача параметров/аргументов
|
: Август 29, 2009, 16:27
|
Без контекста использования ничего толкогого о таком способе сказать нельзя. Так что рассказывай Подумайте как было бы удобно (и неудобно) вызывать функцию InvertMatrix. Какие проблемы/неудобства могут возникнуть при использовании классического void InvertMatrix( Matrix * theInvertedMatrix, const Matrix * theSourceMatrix ); ?
|
|
|
11355
|
Qt / Общие вопросы / Re: QFileDialog - не правильно работает под MAC
|
: Август 29, 2009, 15:58
|
Есть в режиме QFileDialog::AcceptSave, а значит в Mac есть диалог! Но QT делает неправильный вызов для режима QFileDialog::AcceptOpen + QFileDialog::AnyFile!
Пережил 3 поколения нативных файл диалогов в Mac (каждый раз приходилось переписывать программы). Но ни разу не видел строку ввода чтобы в режиме "Open" Конечно, можно ее добавить через customize, но то глухой нативняк.
|
|
|
|
|