Skip to content

Commit

Permalink
0.52: doc: circle concatenate
Browse files Browse the repository at this point in the history
  • Loading branch information
zvezdochiot committed Aug 16, 2022
1 parent 581cb29 commit 1e821ad
Showing 1 changed file with 126 additions and 0 deletions.
126 changes: 126 additions & 0 deletions doc/circle_concatenate/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
# circle concatenate

## К задаче определения пикетажа и смещения на переходной кривой ЖД.

### Введение.

Основой, определяющей геометрические элементы трассы ЖД, является [ВСН 160-69 "Инструкция по геодезическим и маркшейдерским работам при строительстве транспортных тоннелей"](https://docs.cntd.ru/document/1200029879?ysclid=l6uu8912n7993242512).
В нём прописан порядок вычисления и математические взаимосвязи геометрических элементов трассы ЖД.
Именно по этим нормам должны проводиться все вычисления трассы и определения пикетажа и смещения вдоль неё.

Но! Для определения пикетажа и смещения на переходной кривой в ВСН 160-69 используется достаточно грубое приближение и не очень удобные для программных продуктов формулы уточнения этих приближений.

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

В данной работе можно выделить следующие основные моменты:
1. Упрощение. Производится ряд простых зеркалирующих преобразований, сводящих все варианты к одной расчётной схеме.
2. Ограничение. Производится проверка принадлежности точки переходной кривой.
3. Пропорция. Используется менее плохое пропорциональное начальное приближение вместо грубого линейного приближения.
4. Разворот. Используются полные матрицы поворота вместо отдельных элементов с неопределённым знаком (что хорошо для ПО).

Перечисленные пункты означают, что данная работа является исследовательской, так как нет норм, подтверждающих изложенный в данной работе материал, не смотря на то, что определённые моменты имеют подтверждение в ВСН 160-69..

Формулы ВСН 160-69 для расчёта переходных кривых в данной работе продублированы файлами для системы [maxima](https://maxima.sourceforge.io/ru/), что позволяет пользоваться этими формулами с любым разумным количество членов ряда Тейлора, а не только теми, которыми ограничен ВСН 160-69:
* [circle_concatenate.mac](circle_concatenate.mac)
* [circle_concatenate.wxm](circle_concatenate.wxm)

### Упрощение.

Как и в ВСН 160-69, сначала производится вычисление пикетажа и смещения относительно линии тангенса (продолжение прямой линейного участка):

![PKP=PK0+(XP-X0)cos(a)+(YP-Y0)sin(a)](https://dxdt.ru/f/?{PK}_{P}={PK}_{0}+\(X_{P}-X_{0}\)\cos\(\alpha\)+\(Y_{P}-Y_{0}\)\sin\(\alpha\))
![deltaP=(YP-Y0)cos(a)-(XP-X0)sin(a)](https://dxdt.ru/f/?{\delta}_{P}=\(Y_{P}-Y_{0}\)\cos\(\alpha\)-\(X_{P}-X_{0}\)\sin\(\alpha\))

В результате мы получаем 4 варианта расположения переходной кривой. Для того, чтобы не усложнять расчётную схему, переходим к условной системе, началом которой (0,0) будет точка соединения линейного участка и переходной кривой (ПКнпк). Вторую координату приравниваем к смещению с обратным знаком :

![xP=PKP-PKNCC](https://dxdt.ru/f/?x_{P}={PK}_{P}-{PK}_{NCC})
![yP=-deltaP](https://dxdt.ru/f/?y_{P}=-{\delta}_{P})
![PKNCC=PKNC+-a](https://dxdt.ru/f/?{PK}_{NCC}={PK}_{NC}\pm{a})

Ежели второй конец переходной кривой имеет отрицательное значение ![xL](https://dxdt.ru/f/?x(L)), меняем знаки всех ![xP](https://dxdt.ru/f/?{x}_{P}) на противоположный и запоминаем это.

Помимо этого в данном расчёте участвует также и центр кривой ![CC](https://dxdt.ru/f/?{CC}). Для него так же вычисляются от линии тангенса пикетаж и смещение, так же переводится в условную систему. Ежели вторая координата центра кривой ![yCC](https://dxdt.ru/f/?{y}_{CC}) оказывается отрицательным, то меняются знаки всех ординат ![yP](https://dxdt.ru/f/?{y}_{P}) на противоположный и запоминаем это.

В результате таких нехитрых преобразований вместо четырёх вариантов мы имеем одну единую расчётную схему.

### Ограничение.

Область переходной кривой ограничена двумя прямыми:
* первая перпендикулярна прямому участку и проходит через соединение прямого участка и переходной кривой.
* вторая является радиусом круговой кривой, проходящим через соединение переходной и круговой кривых.

Первая ограничивающая линия очень проста для проверки: координата ![xP](https://dxdt.ru/f/?{x}_{P}) точек в условной системе должна быть больше 0. Это расстояние назовём ![p1](https://dxdt.ru/f/?{p1}={x}_{P}), оно будет использовано в пропорциональном приближении в следующей главе.

Вторая ограничивающая линия определяется центром круговой кривой ![CC](https://dxdt.ru/f/?\(a,R\)) и соединением переходной и круговой кривой ![KCC](https://dxdt.ru/f/?\(x(L),y(L)\)). Воспользуемся градиентами этой линии для определения принадлежности точек к переходной кривой:

![dx=xL-a](https://dxdt.ru/f/?\Delta{x}=x(L)-a)
![dy=yL-a](https://dxdt.ru/f/?\Delta{y}=y(L)-R)
![Rk=sqrt(dx^2+dy^2)](https://dxdt.ru/f/?{R}_{k}=\sqrt{\Delta{x}^2+\Delta{y}^2})
![gc=dx/Rk](https://dxdt.ru/f/?{g}_{c}=\Delta{x}/{R}_{k})
![gs=dy/Rk](https://dxdt.ru/f/?{g}_{s}=\Delta{y}/{R}_{k})

Для данных градиентов легко определяется второй элемент пропорции ![p2](https://dxdt.ru/f/?{p2}) пропорционального приближения:

![p2=(xP-a)*gs-(yP-R)*gc](https://dxdt.ru/f/?{p2}=\({x}_{P}-a\){g}_{s}-\({y}_{P}-R\){g}_{c})

Ежели этот элемент больше, либо равен 0, то точка принадлежит переходной кривой.

### Пропорция.

В предыдущей главе для каждой определяемой точки были получены два элемента пропорции (![p1](https://dxdt.ru/f/?{p1}) и ![p2](https://dxdt.ru/f/?{p2})), которые являются ни чем иным, как расстояниями по нормали к ограничивающим область переходной кривой линиям.
Эти два элемента не только служат проверкой попадания точек в область переходной кривой, но позволяют получить хорошее начальное приближение длины вдоль переходной кривой до нашей точки:

![lP=L*p1/(p1+P2)](https://dxdt.ru/f/?{l}_{P}=L{{p1}\over{p1+p2}})

Это приближение по многим характеристикам менее плохое, чем предложенное в ВСН 160-69: ![lP=xP](https://dxdt.ru/f/?{l}_{P}={x}_{P})

Имея такое приближение длины вдоль переходной кривой мы можем получить положение соответствующей точки на переходной кривой и угол уклонения переходной кривой от прямой в этой точке:

![xlP=lP-lP^5/40/C^2+lP^9/3456/C^4-lP^13/599040/C^6](https://dxdt.ru/f/?{x\(l_P\)}={l_P}-{{l_P^{5}}\over{40C^2}}+{{l_P^{9}}\over{3456C^4}}-{{l_P^{13}}\over{599040C^6}})
![ylP=lP^3/6/C-lP^7/336/C^3+lP^11/42240/C^5-lP^15/9676800/C^7](https://dxdt.ru/f/?{y\(l_P\)={{l_P^{3}}\over{6C}}-{{l_P^{7}}\over{336C^3}}+{{l_P^{11}}\over{42240C^5}}-{{l_P^{15}}\over{9676800C^7}})
![philP=lP^2/2/C](https://dxdt.ru/f/?{\phi\(l_P\)={{l_P^2}\over{2C}})

Дополнительные члены ряда Тейлора взяты из указанного во введении файла системы maxima (см. выше).

### Разворот.

Для получения условного смещения (знак будет соответствовать y) и уточнения длины вдоль переходной кривой используем полную матрицу поворота на угол отклонения переходной кривой от прямой:

![dlP=(xP-xlP)*cos(phiLP)+(yP-ylP)*sin(phiLP)](https://dxdt.ru/f/?{\Delta{l_P}}=\({x}_{P}-{x(l_P)}\){\cos(\phi(l_P))}+\({y}_{P}-{y(l_P)}\){\sin(\phi(l_P))})
![deltayP=(yP-ylP)*cos(phiLP)-(xP-xlP)*sin(phiLP)](https://dxdt.ru/f/?{\delta^y_P}=\({y}_{P}-{y(l_P)}\){\cos(\phi(l_P))}-\({x}_{P}-{x(l_P)}\){\sin(\phi(l_P))})

Мы можем проконтролировать точность смещения для данного приближения по абсолютной величине:

![|deltayP|=sqrt((yP-ylP)^2+(xP-xlP)^2)](https://dxdt.ru/f/?|{\delta^y_P}|={\sqrt{\({y}_{P}-{y(l_P)}\)^2+\({x}_{P}-{x(l_P)}\)^2}})

Имея величину уточнения длины по переходной кривой ![dlP](https://dxdt.ru/f/?{\Delta{l_P}}) мы решаем стоит ли вносить это уточнение или использовать текущие значения длины и смещения. В случае необходимости уточнения:

![lP=lP+dlP](https://dxdt.ru/f/?{l_P}={l_P}+{\Delta{l_P}})

После чего производится пересчёт всех связанных с длиной компонент: ![xlP](https://dxdt.ru/f/?{x\(l_P\)}), ![ylP](https://dxdt.ru/f/?{y\(l_P\)}), ![philP](https://dxdt.ru/f/?{\phi\(l_P\)}), ![dlP](https://dxdt.ru/f/?{\Delta{l_P}}), ![deltayP](https://dxdt.ru/f/?{\delta^y_P}).
Это образует быстро сходящийся итерационный процесс, который останавливается при достижении необходимой точности.

Есть ещё один не очень приятный момент, который заключается в том, что сумма заменяемых переходной кривой участков прямой и круговой кривой хоть и близка к длине переходной кривой, но не равна в точности.
Для устранения этого используется небольшое масштабирование:

![kL=(a+a1)/L](https://dxdt.ru/f/?{k_L}={{a+a_1}\over{L}})
![lP=lP*kL](https://dxdt.ru/f/?{l_P}={l_P}\cdot{k_L})

Наконец для величин ![lP](https://dxdt.ru/f/?{l_P}) и ![deltayP](https://dxdt.ru/f/?{\delta^y_P}) производятся те же смены знаков, что были произведены и запомнены в главе "Упрощение".
После этого производится возврат из условной системы:

![PKP=lP+PKNCC](https://dxdt.ru/f/?{PK}_{P}={l}_{P}+{PK}_{NCC})
![deltaP=-deltayP](https://dxdt.ru/f/?{\delta}_{P}=-{\delta}^y_{P})

### Заключение.

Для демонстрации изложенного материала была составлена расчётная схема в формате DXF и таблица в формате XLS для круговой кривой радиусом 600м и переходной кривой длиной 40м:
* [circle_concatenate_r600_l40.dxf](circle_concatenate_r600_l40.dxf) [38404]
* [circle_concatenate_r600_l40.xls](circle_concatenate_r600_l40.xls) [183808]

Ознакомление с данным материалом рекомендуется производить совместно с указанной схемой и таблицей.

---

2022
zvezdochiot

0 comments on commit 1e821ad

Please sign in to comment.