Как стать автором
Обновить

Комментарии 14

Ээ. А точно это нужно было оформлять в статью?
Хотя… Какое непаханное поле. Из каждой главы учебника математики можно сделать отдельную статью на хабр.

ничего нового

Полностью согласен с автором. Хотя он несколько критичен к своей статье в этой фразе.
" линейная, нелинейная'
Автор, вы изобрели новое определение нелинейности. Все Ваши преобразования в статье — линейны.

Если вы исходите из логики, что все трансформации в линейном пространстве являются линейными, то вы вводите себя в заблуждение.


Линейные трансформации специально называются линейными по той причине, что по определению обладают линейными свойствами: аддитивностью и однородностью, что, к слову, и позволяет выразить их через матрицы не прибегая к трюкам, описанным в статье.


Например x' = 3x — это линейное преобразование, а x' = 3x+4 — нелинейное, но оба афинные. Не верьте мне на слово, проверьте свойства.

Верно, функция вида y=ax+b линейная, а вот преобразование, как пишет автор, свойством линейности действительно не обладает (образ суммы не равен сумме образов). Хотя у меня сначала тоже вызвало реакцию отторжения использование определения «нелинейное» по отношению к чему бы то ни было вида y=ax+b.
Ну я скорее из электротехники. Там нелинейные цепи — порождающие новые гармоники. А линейные — нет. Так что тут использование термина «нелинейное» — весьма и весьма спорно. И система уравнений вида ax+by+cz=d… не зря называется системой линейных уравнений. Вот проективная геометрия(я ей занимался) — нелинейна, несмотря на то что прямые переходят в прямые (или точки) и наоборот. Ну так там есть нелинейная нормализация на последний член.

И вот как раз тут, чтобы уравнения снова стали линейными вводится фиктивная переменная w, которая в исследованном случае всегда равная единице.


Формально для 3вектора такое преобразование нелинейно, но если мы говорим об умножении на матрицу 4на4, то такая операция линейна, но умножить на 44матрицу можно только 4вектор, а мы не обобщаясь до однородных координат работаем с 3вектором.


Нелинейна здесь операция операция добавления и последующего изъятия фиктивной переменной. И в общем, учитывая, что переменную можно и не изымать и всё время работать с расширенными векторами… Короче, имхо, это всё-таки вопрос терминологии, считать ли такие преобразования линейными.

Фактически вектор всегда имеет эту переменную w, но для оптимизации её не записывают. А умные люди ещё и 1 строку не пишут в матрицу. spec-zone.ru/RU/Java/FX/8/docs/api/javafx/scene/transform/Affine.html
template<int W>
class vec{
    ...
    float w(){return W;}
    ...
};

using vec_p=vec<1>;
using vec_n=vec<0>;

Это вопрос оптимизации вычислений и к обсуждению математического формализма имеет довольно слабое отношение.


Вообще имхо, как раз в этой области особенно заметно, что вычислительные оптимизации и методы математического описания не обязаны совпадать. Некоторые научные статьи пользуются бикватернионами, например, вот смотрите, мы сделали систему управления мультикоптером на бикватернионах. Прекрасно… Только в чём концептуальная разница между парой из матрицы поворота и вектора трансляции с одной стороны и бикватернионом с другой, если эти формализмы эквивалентны. Поэтому я за то, чтобы выкладки всегда в нормальном векторно-матричном виде делать, а посчитать — это уж как вычислитель позволит.


P.S. Другие умные люди, которые экономят не память, а производительность пользуются для поворотов пространства кватернионами и лениво разворачивают их до матрицы при необходимости использовать объект-оператор преобразования для операции над вектором.

Память это и есть производительность. А Q это совершенно другой способ представления.

А как же количество аккумуляторных умножений.

Четвертая координата используется же для расчета конечной точки при перспективе.
Вот к примеру пост про это

Да, действительно, матрицы больших размерностей нашли своё применение в проективной геометрии. Я оставил ссылку в полезных материалах (третья), так как это интересный момент, но не тема моего исследования: в однородных координатах манипуляции с матрицами чуть более замысловатые, нежели добавление строки (0 0 0 1) для трёхмерного пространства, например, обратите внимание :)

Я исхожу только из точки зрения компьютерной графики, а не каких-либо иных соображений.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.