Объекты и геометрические преобразования
средство, позволяющее объявлять геометрические объекты в тексте программы независимо от их представления или реализации в данном компьютере. Выглядеть такое объявление должно примерно таким образом:
vector u,v; point p,q; scalar a,b;
Для определения абстрактных типов в объектно-ориентированных языках программирования, подобных С++, можно применить такие средства, как классы и перегрузку операторов. Это позволяет записать в программе операцию над данными некоторого геометрического типа в следующем виде1:
q = p+a*v;
Но сначала нужно определить функции, которые будут выполнять операции над данными новых типов, а для этого понадобится рассмотреть те математические соотношения, которые требуется реализовать в этих функциях.
4.1.4. Геометрические абстрактные типы данных
Рассмотрев понятия скаляра, точки и вектора с трех точек зрения, мы получили математическую и информационную "оболочку", в которой будем в дальнейшем работать с геометрическими объектами. Скаляры- это действительные числа, по отношению к которым можно применять обычные операции сложения и умножения. Геометрические точки - это положения в пространстве, а векторы - направленные отрезки в пространстве. На эти объекты распространяются правила, определенные в абстрактном аффинном пространстве. В программе можно определить абстрактные типы данных для представления базовых типов объектов и специфицировать операции, подчиняющиеся этим правилам.
Теперь рассмотрим, как можно использовать базовые типы для выполнения геометрических операций и формирования новых объектов. Будем обозначать в дальнейшем скаляры буквами греческого алфавита а, Р, у,…, точки- прописными буквами латинского алфавита P,Q,R,…, а векторы- строчными буквами латинского алфавита u,v,w, .... Позже, в разделе 4.3, мы введем в рассмотрение и другие абстрактные математические объекты, которые будем обозначать полужирными буквами латинского алфавита. До сих пор мы никак не затрагивали вопрос о системе отсчета, например системе координат, а потому векторы и точки являются для нас пока что абстрактными объектами, а не объектами, представленными в определенной системе отсчета. Модуль вектора v (или его длина, абсолютная величина - magnitude) - это действительное число, которое обозначим |v|. Операция умножения скаляра на вектор обладает следующим свойством (см. приложение Б):