Хорошая библиотека для 3D-математики в С#?

Я пишу инструмент, который будет использоваться для обработки кучи трехмерных данных, делая такие вещи, как вращающиеся объекты, перевод, масштабирование и все эти хорошие вещи. Кто-нибудь знает хорошую библиотеку, которая уже делает некоторые из этих общих 3D-материалов?

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

Вещи, которые я знаю, мне понадобятся в этот момент:

  • 2D/3D/4D векторы
    • (добавление, вычитание, точечный продукт, кросс-продукт и т.д.)
  • Вращение/Перевод/Масштабирование с использованием матриц
  • Кватернионы

Мне удалось найти библиотеку Sharp3D, но похоже, что она может делать то, что я хочу, но не обновлялась в долго. Кто-нибудь использовал это раньше? Любые другие (лучшие) предложения?

Ответы

Ответ 1

Microsoft.Xna.Framework (отправка этой XNA) может выполнить работу.

Библиотека XNA Framework Math имеет несколько базовых геометрических типов, которые можно использовать для управления объектами в 2D или 3D пространстве. Примитивные объекты в этой библиотеке представляют данные, необходимые для представления геометрического объекта или операции над этим объектом. Каждый геометрический тип имеет ряд математических операций, которые поддерживаются для типа.

вектор

XNA Framework предоставляет классы Vector2, Vector3 и Vector4 для представления и управления векторами. Вектор обычно используется для представления направления и величины. Однако в инфраструктуре XNA он также может использоваться для хранения координаты или какого-либо другого типа данных с одинаковыми требованиями к хранению.

Каждый векторный класс имеет методы для выполнения стандартных векторных операций, таких как:

  • Точечный продукт
  • Перекрестный продукт
  • Нормализация
  • Преобразование
  • Линейная, кубическая, катмаль-ромская или эрмитовая сплайновая интерполяция.

Матрица

XNA Framework предоставляет класс Matrix для преобразования геометрии. Класс Matrix использует основной порядок строк для адресации матриц, что означает, что строка указывается перед столбцом при описании элемента двумерной матрицы. Класс Matrix предоставляет методы для выполнения стандартных матричных операций, таких как вычисление детерминированной или обратной матрицы, в дополнение к вспомогательным методам создания матриц масштабирования, трансляции и вращения.

Кватернионы

XNA Framework предоставляет структуру кватернионов для представления и вычисления эффективного вращения вокруг вектора вокруг заданного угла.

Ответ 2

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

Что касается недавних обновлений, это не похоже на математику меняется или что-то еще...

Ответ 3

Попробуйте Scinet Linea в www.obacs.com. Это не бесплатная библиотека, но по сравнению с альтернативами это не очень дорого ww

Ответ 4

Scinet Linea больше не доступна на сайте www.obacs.com. Теперь он входит в состав Scinet Math, который имеет гораздо больше возможностей. Я купил копию для своих исследований месяц назад. Мне это нравится до сих пор.