Вот что мне нужно сделать:
Чтобы создать CAD-подобное приложение, которое загружает облако точек (т. Е. Тысячи 3D-точек, представляющих 3D-объект) из файла, позволяет пользователям манипулировать точками (т. Е. Изменять форму, перемещая точки), многое нужно сделать вычислений точек на точках (например, нахождение точек пересечения между линиями и поверхностями, определение точки над или под поверхностью и т. д., измерение расстояний между точками или точками на поверхности и т. д.), а затем сохранение измененных точек в файл.
Он также предоставляет базовые функции, подобные CAD-интерфейсу, такие как увеличение / уменьшение масштаба, панорамирование, вращение камеры и т. Д.
Скорость - главная проблема.
Вместо того чтобы писать свои собственные функции для работы с матрицами и определять свои собственные классы точек / линий / поверхностей, я хотел бы использовать существующие библиотеки / API для выполнения этой работы.
Я знаю, что WPF, XNA и SlimDX предоставляют API для выполнения трехмерных геометрических вычислений, и все они, наконец, вызывают DirectX, но я просто новичок во всех из них. Мне интересно:
Какой (или какое-либо другое предложение) может дать лучшую производительность в скорости.
Насколько я понимаю, 3D-функции DirectX в основном касаются игровой графики / экранных выводов, а также подходят ли они для вычислений на уровне данных (т. Е. Используются 3D-функции для манипулирования данными точек, вычисления расстояний и т. Д.). , а не выводить его на экран)? Под подходящим, я имею в виду, если я создам тысячи вершин DirectX и создаю их, будет ли это намного медленнее, чем использование моих собственных типов данных и структур?
Пожалуйста поправьте меня, если мое понимание неверно.
Если я использую WPF, нужно ли мне также использовать XNA? Я как бы смешиваю эти две вещи.
Предполагается, что приложение будет работать на ПК исследовательской лаборатории, у которого нет мощной игровой видеокарты, значит ли это, что XNA не является предпочтительным?
Для этого приложения следует использовать предложение о технологиях?
Спасибо !!
======== обновление
Чтобы сделать его более понятным, приложение будет загружать ~ 108 000 точек в 3D, и каждая точка будет формировать поверхности с другими смежными точками, поэтому примерно столько же трехмерных поверхностей задействовано (я не генерирую их в одно и то же время). Я сделаю много трехмерных геометрических и матричных вычислений с точкой и поверхностями, такими как пересечение, интерполяция, преобразование и т. Д., Поэтому скорость «вычислений» является моей главной задачей. Большую часть времени я буду рисовать только конечный результат на экране, а рисование - это в основном линии и точки, скорость «рисования» не представляет большой проблемы. так что на самом деле это не приложение с интенсивным использованием графики, а приложение с интенсивными геометрическими вычислениями.
Прочитав ответ и комментарии, я подумаю над двумя вариантами:
хранить и вычислять данные с примитивными типами данных и преобразовывать данные в структуры данных WPF / XNA / SlimDX при их рисовании на экране, или
использовать эти структуры данных API для хранения, расчета и отрисовки всех этих точек.
какой из них лучше?