Прикладная геометрия — различия между версиями
=DeaD= (обсуждение | вклад) |
=DeaD= (обсуждение | вклад) (→Переход от одной системы координат к другой) |
||
Строка 2: | Строка 2: | ||
== Переход от одной системы координат к другой == | == Переход от одной системы координат к другой == | ||
+ | Одна из наиболее распространенных геометрических задач, которые предстоит решать робототехнику - переход между системами координат. Чаще всего это нужно будет делать на плоскости, особенно при решении задач глобальной навигации. Типичная задача в робототехнике будет выглядеть так: | ||
+ | Робот находится в координатах (XR,YR) в глобальной системе координат (на карте) и повернут на угол AR по часовой стрелке от направления оси O-X, робот обнаружил препятствие относительно себя в координатах (X1,Y1) локальной системы координат робота. Требуется определить глобальные координаты (X0,Y0) препятствия. Либо наоборот - зная глобальные координаты препятствия требуется вычислить его локальные координаты. | ||
+ | |||
+ | Тройка чисел (XR,YR,AR) - координаты базиса локальной системы координат в глобальной системе координат. | ||
+ | |||
+ | Формула перехода из локальных координат в глобальные: | ||
+ | |||
+ | X0=XR+X1*cos(AR)-Y1*sin(AR) | ||
+ | Y0=YR+Y1*cos(AR)+X1*sin(AR) | ||
+ | |||
+ | Формула обратного перехода из глобальных координат в локальные: | ||
+ | |||
+ | X1=(X0-XR)*cos(AR)+(Y0-YR)*sin(AR) | ||
+ | Y1=(Y0-YR)*cos(AR)-(X0-XR)*sin(AR) | ||
+ | |||
+ | Проверим: (переведем координаты туда и обратно) | ||
+ | |||
+ | X1=(X0-XR)*cos(AR)+(Y0-YR)*sin(AR)= | ||
+ | |||
+ | =(XR+X1*cos(AR)-Y1*sin(AR)-XR)*cos(AR)+(YR+Y1*cos(AR)+X1*sin(AR)-YR)*sin(AR)= | ||
+ | |||
+ | =(X1*cos(AR)-Y1*sin(AR))*cos(AR)+(Y1*cos(AR)+X1*sin(AR))*sin(AR)= | ||
+ | |||
+ | =X1*cos(AR)*cos(AR)-Y1*sin(AR)*cos(AR)+Y1*cos(AR)*sin(AR)+X1*sin(AR)*sin(AR)= | ||
+ | |||
+ | =X1*cos(AR)*cos(AR)+X1*sin(AR)*sin(AR)=X1*(cos(AR)*cos(AR)+sin(AR)*sin(AR))=X1*(1)=X1, | ||
+ | |||
+ | и вторую координату: | ||
+ | |||
+ | Y1=(Y0-YR)*cos(AR)-(X0-XR)*sin(AR)= | ||
+ | |||
+ | =(YR+Y1*cos(AR)+X1*sin(AR)-YR)*cos(AR)-(XR+X1*cos(AR)-Y1*sin(AR)-XR)*sin(AR)= | ||
+ | |||
+ | =(Y1*cos(AR)+X1*sin(AR))*cos(AR)-(X1*cos(AR)-Y1*sin(AR))*sin(AR)= | ||
+ | |||
+ | =Y1*cos(AR)*cos(AR)+X1*sin(AR)*cos(AR)-X1*cos(AR)*sin(AR)+Y1*sin(AR)*sin(AR)= | ||
+ | |||
+ | =Y1*cos(AR)*cos(AR)+Y1*sin(AR)*sin(AR)=Y1*(cos(AR)*cos(AR)+sin(AR)*sin(AR))=Y1*(1)=Y1. | ||
== Пересчение двух отрезков == | == Пересчение двух отрезков == |
Версия 18:06, 19 декабря 2007
В этом разделе будут рассмотрены решения основных геометрических задач встречающихся при программировании роботов.
Содержание
- 1 Переход от одной системы координат к другой
- 2 (XR+X1*cos(AR)-Y1*sin(AR)-XR)*cos(AR)+(YR+Y1*cos(AR)+X1*sin(AR)-YR)*sin(AR)
- 3 (X1*cos(AR)-Y1*sin(AR))*cos(AR)+(Y1*cos(AR)+X1*sin(AR))*sin(AR)
- 4 X1*cos(AR)*cos(AR)-Y1*sin(AR)*cos(AR)+Y1*cos(AR)*sin(AR)+X1*sin(AR)*sin(AR)
- 5 (YR+Y1*cos(AR)+X1*sin(AR)-YR)*cos(AR)-(XR+X1*cos(AR)-Y1*sin(AR)-XR)*sin(AR)
- 6 (Y1*cos(AR)+X1*sin(AR))*cos(AR)-(X1*cos(AR)-Y1*sin(AR))*sin(AR)
- 7 Y1*cos(AR)*cos(AR)+X1*sin(AR)*cos(AR)-X1*cos(AR)*sin(AR)+Y1*sin(AR)*sin(AR)
Переход от одной системы координат к другой
Одна из наиболее распространенных геометрических задач, которые предстоит решать робототехнику - переход между системами координат. Чаще всего это нужно будет делать на плоскости, особенно при решении задач глобальной навигации. Типичная задача в робототехнике будет выглядеть так:
Робот находится в координатах (XR,YR) в глобальной системе координат (на карте) и повернут на угол AR по часовой стрелке от направления оси O-X, робот обнаружил препятствие относительно себя в координатах (X1,Y1) локальной системы координат робота. Требуется определить глобальные координаты (X0,Y0) препятствия. Либо наоборот - зная глобальные координаты препятствия требуется вычислить его локальные координаты.
Тройка чисел (XR,YR,AR) - координаты базиса локальной системы координат в глобальной системе координат.
Формула перехода из локальных координат в глобальные:
X0=XR+X1*cos(AR)-Y1*sin(AR) Y0=YR+Y1*cos(AR)+X1*sin(AR)
Формула обратного перехода из глобальных координат в локальные:
X1=(X0-XR)*cos(AR)+(Y0-YR)*sin(AR) Y1=(Y0-YR)*cos(AR)-(X0-XR)*sin(AR)
Проверим: (переведем координаты туда и обратно)
X1=(X0-XR)*cos(AR)+(Y0-YR)*sin(AR)=
(XR+X1*cos(AR)-Y1*sin(AR)-XR)*cos(AR)+(YR+Y1*cos(AR)+X1*sin(AR)-YR)*sin(AR)
(X1*cos(AR)-Y1*sin(AR))*cos(AR)+(Y1*cos(AR)+X1*sin(AR))*sin(AR)
X1*cos(AR)*cos(AR)-Y1*sin(AR)*cos(AR)+Y1*cos(AR)*sin(AR)+X1*sin(AR)*sin(AR)
=X1*cos(AR)*cos(AR)+X1*sin(AR)*sin(AR)=X1*(cos(AR)*cos(AR)+sin(AR)*sin(AR))=X1*(1)=X1,
и вторую координату:
Y1=(Y0-YR)*cos(AR)-(X0-XR)*sin(AR)=
(YR+Y1*cos(AR)+X1*sin(AR)-YR)*cos(AR)-(XR+X1*cos(AR)-Y1*sin(AR)-XR)*sin(AR)
(Y1*cos(AR)+X1*sin(AR))*cos(AR)-(X1*cos(AR)-Y1*sin(AR))*sin(AR)
Y1*cos(AR)*cos(AR)+X1*sin(AR)*cos(AR)-X1*cos(AR)*sin(AR)+Y1*sin(AR)*sin(AR)
=Y1*cos(AR)*cos(AR)+Y1*sin(AR)*sin(AR)=Y1*(cos(AR)*cos(AR)+sin(AR)*sin(AR))=Y1*(1)=Y1.