2013-07-09 2 views
1

Что такое обычный вариант использования Point4D vs Point3D?Что такое Point4D для WPF 3D?

Используется ли он для обработки специальной геометрии или просто имеет значение скалярного поля вокруг точки или что-то более специализированное?

ответ

2

Чтобы представить 3D affine transform, где в дополнение к масштабированию и вращению в качестве матричного преобразования может существовать перевод, вам необходимо расширить до 4D точек и увеличенную 4x4 матрицу. (Учтите, что матрица 3х3 не может перевести точку (0, 0, 0) в другое место.)

В WPF Matrix3D структура представляет собой матрицу 4х4, и Point4D является дополненным вектором структурой, вы можете умножить матрица Matrix3D. Расширенные векторы иногда называются «homogeneous 3D coordinates».

+0

Какая разница между Matrix3D.Transform (Point3D) и Matrix3D.Transform (Point4D) ли версия Point3D просто отбрасывает часть перевода аффинного преобразования или внутренне продвигает ее к Point4D, а затем обратно в Point3D? – bradgonesurfing

+0

Вы получаете тот же результат, что и до Point4D, хотя он реализован непосредственно с умножением по компонентам. – Govert

+0

Обратите внимание, что продвижение Point3D to Point4D устанавливает 4-й компонент в 1 не в 0, иначе перевод будет потерян. –