Книги по разным темам Pages:     | 1 |   ...   | 8 | 9 | 10 | 11 | 12 |   ...   | 42 |

k k Искомую точку R :{x, y} найдем как результат пересечения двух прямых y = kx1+ b kyr + xr.

(1) y = - x + k k Решим это уравнение методом 1 kyr + xr подстановки kx + b = - x +, k k kyr + xr - kb (k2 +1)x = kyr + xr - kb, x =, k2 +kyr + xr - kb y = k + b = k +2 2 2 k yr + kxr - k b + k b + b k yr + kxr + b =.

2 k +1 k +Глава 1. Общие вопросы, функции и методы kyr + xr - kb x = k2 +Выпишем решение. (2) y = k2 yr + kxr + b k +Как мы уже отмечали, тангенс угла наклона прямой k может принимать значение и тем самым вызывать соответствующее компьютерное прерывание.

Поэтому в данной работе представление прямой в виде y = kx + b служит только для вывода промежуточных формул. Преобразуем (2), используя коэффициенты A C прямой, заданной в общем виде k = -, b = -, B B A AC - yr + xr B Bx = A - AByr + B2xr - AC + x = A2 + B B=. (3) A2 A C y = A2 yr - ABxr - BC yr - xr y = B2 B B A2 + B A+ BЗапишем (3) в матричном виде x xr A xr - C B2 - AB = Q0 + Q1 = Q0 + O1 = +. (4) y yr A2 + B2 B A2 + B2 yr - AB AОбратим внимание, что det(O1) = A2B2 - (-AB)(-AB) = 0, (5) что говорит о том, что проекционное преобразование не сохраняет длину исходного вектора, т.е. не является ортогональным. Преобразование, у которого определитель равен 0, не является аффинным (термин Л.Эйлера), т.е.

взаимно-однозначным.

Вынесем общие множители из строк матрицы O1 в диагональную матрицу. Тогда x xr A B 0 B - C 1 - A xr = Q0 + Op1Op2 = = +, (6) y yr A2 + B2 B A2 + B2 0 A B A yr - где det(Op2) = AB - AB = 0. Отсюда сразу следует, что и det(Op1Op2) = det(Op1)det(Op2) = 0.

Глава 1. Общие вопросы, функции и методы Таким образом, проекционное преобразование (не путать с проективным преобразованием!) некоторой исходной точки на плоскости состоит из векторной суммы двух слагаемых, причем первое слагаемое - вектор, зависящий от параметров прямой и не зависящий от координат этой точки, а второе слагаемое имеет вид произведения матрицы на вектор координат исходной точки и определитель этой матрицы всегда равен 0.

Продолжим исследовать (6) и сделаем замену коэффициентов прямой, заданных в общем виде, на коэффициенты прямой в нормальной форме.

Таким образом A = A2 + B2 cos, B = A2 + B2 sin, C = A2 + B2 pL.

егко проверить, что коэффициент A2 + B2 входит в квадрате и в числитель, и в знаменатель в оба слагаемых (6). Поэтому на этот коэффициент можно сократить и сделать подстановку, переходя к параметрам нормального уравнения прямой A cos, B sin, C pL. Отсюда x xr pL cos = Q0 + Op1Op2 = + y yr cos2 + sin2 sin cos2 + sin sin 0 sin - cos xr cos sin 0 sin - cos xr = pL +.

0 cos sin cos yr sin 0 cos sin cos yr - - (7) Если R :{xr, yr} = {0,0} совпадает с центром координат, то, естественно, что {x, y} = Q0 = pL{cos,sin}. (8) Выражение (8) есть нормальный вектор прямой (см.рис.2). Напомним, что он начинается в начале координат и заканчивается в точке проекции начала координат на прямую.

Приведем еще несколько вариантов формул решения этой задачи.

Пользуясь ассоциативным законом для произведения матриц A(BC) = (AB)C, найдем произведение матриц Op1Op2. Из (7) получим x cos xr sin2 - cos sin. (9) = pL + yr y sin - cos sin cosВернемся к (7) и зададим координаты R в полярных координатах, в которых центр полярных координат совпадает с центром координат в декартовой системе Глава 1. Общие вопросы, функции и методы координат, а полярная ось совпадает с осью абсцисс. Следовательно, 2 R : r{cos,sin}, где r = xr + yr, = ang(R,O) = ang(0,{xr, yr}). Тогда x cos sin 0 sin - cos r cos = pL +. (10) y sin 0 cos sin cos r sin - Или, окончательно x cos sin 0 sin - cos cos cos = pL + r = pL + y sin 0 cos sin cos sin sin - sin 0 sin cos - cos sin cos - sin sin( - ) + r 0 cos sin cos cos sin = pL sin + r cos sin( - ) = - cos - sin = pL + r sin( - ). (11) sin cos 2 вариант В этом случае вывод конечных формул значительно короче, чем в предыдущем. Воспользуемся системой координат XY с центром в P, повернутой относительно исходной системы на угол (см. рис.3). В этой системе проекция R осуществляется на новую ось ординат в R.

Решение находится сразу y = r sin( - ). (12) x = Пользуясь формулами перехода к старой системе координат (1.5.1.-10) x = x0 + x cos - y sin, (13) y = y0 + x sin + y cos где {x0, y0} = pL{cos,sin}, а угол наклона новой системы координат по отношению к старой, совпадает с, получим x = pL cos - r sin sin( - ), (14) = pL sin + r cos sin( - ) y что совпадает с (11).

Глава 1. Общие вопросы, функции и методы Найдем известную формулу расстояния от точки до прямой [16, з63 - з64]. Перед этим выскажем замечание общего характера.

Геометрические свойства объектов [18, з78], в частности длины отрезков, углы между векторами (лучами) независимы (инвариантны) от выбора системы координат. Подчеркнем, что это касается только конечных результатов расчета. С другой стороны, и координаты, и направления лучей, входящие во все формулы, должны браться в той системе координат, в которой вычисляется данная формула.

Наш расчет мы сразу можем сделать в исходной системе координат (т.к. он несложен) RR = PD = OD - pL = OR cos( - ) - pL = r cos( - ) - pL = = r(cos cos + sin sin ) - pL = r cos cos + r sin sin - pL = xr cos + yr sin - pL.

(15) (Ср. [18,з103,2], [16,з63,1], [16,з64]) Используя рис. 3, найдем в ORD длину другого катета - RD PR = RD = r sin( - ) = r sin cos - r cos sin = yr cos - xr sin. (16) Тот же результат, выраженный с помощью определителя, взятого по cos sin абсолютной величине PR = ABS. (16а) xr yr Упражнение 1. Найдите, в каком случае центр координат находится по одну сторону от точки пересечения прямых, а когда по разные стороны (см. рис.1.4.8.1,2).

Упражнение 2. Докажите, что проекционное преобразование не ортогонально.

1.5.3. Вращение точек Пусть некоторую точку A нужно повернуть на некоторый угол относительно выбранной точки C - локального центра координат. В результате Глава 1. Общие вопросы, функции и методы поворота A займет место B. Для нескольких точек задача решается в цикле по аналогии. Итак:

1) найдем расстояние между A иC r = dist(A, C) ;

2) найдем угол, под которым вращаемая точка видна из локального центра координат C 0 = ang(C, A), 3) т.к. расстояние при вращении между точками A иC не меняется, то получим искомые (декартовые) координаты B B = {Cx + r cos(0 +), Cy + r sin(0 +)}. (1) В том случае, если угол поворота зависит от времени равномерно, т.е.

= t, то мы можем знать положение вращающейся точки в любой момент времени B = {Cx + r cos( t +0), Cy + r sin( t +0)}. (2) (Для вращения прямых нам понадобится формулы отклонения точки от прямой. Поэтому мы этот вопрос изложим ниже.) Глава 1. Общие вопросы, функции и методы 1.5.4. Зеркальные отображения точек и углов 1.5.4.1. Зеркальные отображения точек Определим зеркальное отображение (и вместе с ним алгоритм 1) A по отношению к некоторой прямой, заданной двумя точками Z1, Z2.

1 Алгоритм 1) опускаем из A перпендикуляр на эту прямую (или ее продолжение);

2) вычисляем расстояние S от A до O основания перпендикуляра;

продолжаем перпендикуляр от O дальше на такое же расстояние S, сохраняя направление от A до O (см.

рис.1).

Из п.3) следует, что чем дальше от оси стоит исходная точка (прообраз), тем дальше по другую сторону от оси стоит ее зеркальный образ.

2 Алгоритм Можно заменить п.3) поворотом отрезка AO вокруг центраO на (см.

рис.2). Назовем этот вариант алгоритмом 2.

3 Алгоритм Самый простой способ (с точки зрения преобразования координат) выполнить зеркальное отображение можно тогда, когда зеркальная ось совпадает Глава 1. Общие вопросы, функции и методы или с осью абсцисс, или ординат. Для оси абсцисс P :{x, y} Pz :{x,-y}, а для оси ординат Q :{x, y} Qz :{-x, y}(см. рис.3). Рассмотрим примеры в табл.1.

Зеркальная ось X Y Исходные A :{-8,5} B :{15,-10} C :{6,10} D :{-10,20} Точки Зеркальные Az :{-8,-5} Bz :{15,10} Cz :{-6,10} Dz :{10,20} Точки Табл.1.

Из наших экспериментов мы уже можем сделать некоторые выводы: если зеркальная ось расположена горизонтально, то мы получаем вертикально расположенные симметричные точки, а если ось расположена вертикально - то горизонтально симметрично расположенные точки. Это свойство следует из определения зеркального отображения точек - ось симметрии и направление симметрии взаимно.

Для определенности выберем в качестве зеркальной оси ось ординат и запишем в матричном виде зеркальное преобразование xz x 1 0 x. (*) = M = yz y 0 -1 y Обратим внимание на известный факт, что определитель зеркального преобразования det(M) =1(-1) = -1.

Обобщая данный вариант, выберем положение зеркальной оси относительно старой системы координат произвольно. Новую систему координат определим таким образом, что данная зеркальная ось будет также служить и осью ординат (см. рис.4), а начало новой системы координат удобно выбрать в P : pL{cos,sin} - проекции начала координат на зеркальную ось.

Исходя из этого, мы можем построить УзеркальныйФ алгоритм получения зеркальных координат:

1) преобразуем координаты некоторой точки в новую систему координат;

2) меняем знак у новой абсциссы этой точки;

3) возвращаемся в исходную систему координат.

Глава 1. Общие вопросы, функции и методы Учитывая, что формулы преобразования из одной прямоугольной правой декартовой системы координат в другую прямоугольную правую декартову систему координат при повороте осей и смещении начала координат относительно просты, мы можем получить не только численный алгоритм, но и формулы преобразования координат из исходной точки в зеркальную. Обращаем внимание на то, что при нашем отображении мы не меняем ориентацию системы:

системы координат как исходная, так и новая остаются правыми системами координат.

Исходя из (1.5.1.-9), запишем формулы преобразования в новую систему координат x = (x-x0) cos + (y - y0)sin,, (1) y = -(x-x0)sin + ( y - y0)cos и формулы возврата (1.5.1.-10) в исходную систему координат x = x0 + x cos - y sin,. (2) y = y0 + xsin + y cos В нашем случае роль угла играет угол между нормалью к зеркальной оси и осью абсцисс исходной системы координат. Меняя знак x = -x, мы получим зеркальную абсциссу в новой системе координат.

Для сокращения записи при выводе, временно, начало новой системы координат в P : pL{cos,sin} оставим в виде {x0, y0}. Теперь выполним все подстановки, и найдем зеркальные координаты {xz,yz} произвольной точки {x,y} в исходной системе координат:

xz = x0 + x cos - y sin = x0 - ((x - x0)cos + ( y - y0)sin )cos - (-(x - x0)sin + + (y - y0) cos )sin = x0 - x cos2 + x0 cos2 - y cos sin + y0 cos sin + xsin2 + - x0 sin2 - y cos sin + y0 cos sin = (1+ cos2 - sin2 )x0 + (cos sin + cos sin )y0 + + (-cos2 + sin2 )x + (-cos sin - cos sin )y = (2cos2 )x0 + (sin 2 )y0 + - (cos 2 )x - (sin 2 )y, (3a) yz = y0 + x sin + y cos = y0 - ((x-x0)cos + (y - y0)sin )sin + (-(x-x0)sin + + (y - y0)cos )cos = y0 - x cos sin + x0 cos sin - y sin2 + y0 sin2 - x cos sin + + x0 cos sin + y cos2 - y0 cos2 = (cos sin + cos sin )x0 + (1+ sin2 - cos2 )y0 + + (-cos sin - cos sin )x + (-sin2 + cos2 )y = (sin 2 )x0 + (2cos2 ) y0 + - (sin 2 )x + (cos 2 )y. (3б) Запишем эти результаты в матричном виде:

Глава 1. Общие вопросы, функции и методы xz x0 x x 2cos2 sin 2 - cos 2 - sin 2 x +. (4) = M0 + M1 = yyz y0 y - sin 2 cos 2 y sin 2 2sin Определитель второй матрицы det(M1) = -cos2 2 - sin2 2 = -1, что связано с зеркальностью отображений [16,з181]. Таким образом, зеркальные отображения меняет ориентацию любого угла или треугольника, а также сохраняют длину между двумя точками.

Упражнение 1. Докажите, что зеркальные преобразования ортогональны.

Продолжим преобразования. В 1-м слагаемом: сделаем обратную замену {x0, y0} = pL{cos,sin}, вынесем одинаковые множители 2cos из 1-й строки и 2sin из 2-й строки матрицы в диагональную матрицу. Во 2-м слагаемом представим отображаемую точку в полярных координатах: {x,y} = r{cos,sin}.

Тогда:

xz cos 0 cos sin cos - cos 2 - sin 2 cos = 2 pL cos sin sin ) + r sin 2 cos 2 sin = 0 sin ( yz cos cos2 + sin2 - cos 2 cos - sin 2 sin cos = 2 pL r = 2 pL 0 sin 2 cos + sin2 + sin - sin 2 cos + cos 2 sin cos( - 2 ) cos cos( - 2 ) - r = 2 pL - x2 + y2. (5) sin( - 2 ) sin sin( - 2 ) Ниже нам понадобится, также, и такой вариант формулы xz cos - cos 2 - sin 2 x = 2 pL +. (6) yz sin - sin 2 cos 2 y Вычисление вектора 2 pL{cos,sin} производится только 1 раз для данной зеркальной прямой. При большом количестве отображаемых точек, это может существенно улучшить показатели быстродействия данного алгоритма. Кроме того, и для (4), и для (5) вычисление этого вектора можно интерпретировать как зеркальное отображение начала координат O Oz. Запишем это {xz, yz} = Oz + M1{x, y}. (7) Глава 1. Общие вопросы, функции и методы Рассмотрим интерпретацию (5) (см. рис.5). Отложим от P на продолжении нормали OP зеркальной оси Z1Z2 отрезок pL, получая Oz. (Таким образом, OP2 = 2 pL.) От P2 радиусом r = OR под углом = + ( - 2 ) к оси абсцисс откладываем искомую Rz. Докажем, что RC = CRz и RCD =, т.е. что таким образом получено зеркальное отображение.

Сначала объясним, откуда появилось число в угле. Оно появилось изза знака У-Ф перед радиусом r в (5). Действительно, противоположное направление добавляет к любому углу.

Докажем теперь, что DOOz равнобедренный. Для этого достаточно доказать, что углы при его основании равны. Найдем их.

DOOz = -.

OOzD = ang(Oz,O) - ang(Oz, D) = + ang(O,Oz ) - = + - + - 2 = -.

Отсюда следует, что RDRz также равнобедренный. Действительно RD = r - OD, RzD = r - OOz = r - OD. Из того, что DP в DPOz является биссектрисой, следует, что ее продолжение - CD в RDRz также биссектриса, медиана и высота.

1.5.4.2. Зеркальные отображения лучей Напомним, что луч - это вектор бесконечной длины, т.е. объект, имеющий начало и направление. Направления лучей вычисляются между Глава 1. Общие вопросы, функции и методы некоторым направлением луча, задаваемый обычно с помощью вектора, и лучом с нулевым направлением, который задается направлением полярной оси.

Вектор, задающий направление луча, можно определить, например, при помощи двух различных точек P1, P2 на самом луче. При зеркальном отображении луча относительно зеркальной оси Z1Z2, наклоненной к оси X под углом, эти точки отображаются в P1z, P2z, и по ним, с помощью ang(P1z, P2z ), можно найти новое, зеркальное значение направления луча (см.рис.1). Найдем его.

Pages:     | 1 |   ...   | 8 | 9 | 10 | 11 | 12 |   ...   | 42 |    Книги по разным темам