Книга третья.
Инженер конструктор отдела гл.механика Гаврилов Сергей Фёдорович написал эту книгу для начинающих программистов, желающих начать программировать на языке Python 3. Книга будет полезна для студентов механиков и для конструкторов механиков. Данная книга содержит листинги – набор небольших рабочих программ облегчающих расчеты встречающиеся в практической работе цехового конструктора. Листинги выполнены как есть, без сокращений, и после копирования готовы к работе. Предлагаемые в книге расчеты существенно экономят время и уменьшают вероятность ошибок. Все программы проверены и постоянно используются в работе конструктора механика. Листинги программ снабжены пояснениями. Листинги удобно использовать в качестве готовых блоков для вновь разрабатываемых программ. Для практического применения листингов программ проверьте – установлен ли на вашем компьютере Python 3.4. или более старшая версия Python 3.8..Python 3.4 распространяется свободно и бесплатно – например на сайте https://soft-file.ru/python/ Перед скачиванием исходника Python 3.4 проверьте разрядность вашей ЭВМ. Посмотрите вкладку – Компьютер – Свойства системы. Бывают 32 разрядные и 64 разрядные системы. Для каждой системы свой Python 3.4..
Программы написаны для Python 3.4 и более новых версий. На Python 2 программы работать не будут, так как в Python 3.4 написание команд отличается от Python 2.
В программе на любом языке очень важен синтаксис – порядок написания символов в строке.
Малейшая ошибка, которую человек даже не заметит, – ЭВМ замечает и отказывается исполнять программу. Поэтому проще копировать блоки уже работающих программ в свою программу, при необходимости, подправить готовые блоки легче, чем писать блок заново – так будет меньше ошибок в программе и экономится время.
Программа в Python состоит из строк, написанных в простом текстовом редакторе.
Текстовый редактор должен быть именно простым, к примеру Блокнот. Редактор Microsoft Word не годится потому, что он вставляет в строку невидимые служебные символы, которые, искажают команды Python и программа отказывается работать. Если листинг программы вы скачали в формате «.doc » или подобном – следует создать пустой текстовый файл в программе « Блокнот » – выделить и скопировать листинг из файла «.doc » и вставить в пустой текстовый файл « Блокнота » с расширением «.txt » и сохранить его с именем программы. Затем открыть этот файл и сохранить уже с расширением «.py ». Вам будут нужны оба этих файла.
Важно, строки программы должны начинаться без пробела точно с начала строки.
Если в программе имеются логические операторы, например while или for, то за таким оператором следуют строки одного или нескольких блоков. Блоки выполняются программой, или пропускаются без исполнения, в зависимости от условия в логическом операторе.
Блоки отделяются от основной программы пробелами в начале строки. Обычно в начале строки блока ставят четыре пробела. Число пробелов в начале строки – важная величина.
Сама программа начинается со стороки « # -*– coding: cp1251 -*– » и заканчивается строкой « # .... Конец листинга программы ..... ». Копируя листинг в файл .txt – надо копировать только программу, любой текст до тела программы и после тела программы даст сбой в работе.
Если в компьютере Python 3.4 установлен правильно, то при двойном клике мышью на файле с расширением “.py ”. программа начнет исполнятся. Если программа стопорится или вылетает – Запускаем файл редактора программы « IDLE( Python GUI) » в этом редакторе щелкаем левой кнопкой мыши на – File – затем Open. В выпавшем меню находим свой файл, выделяем его – щелкаем – Открыть. На экран выводится листинг вашего файла с выделением цветом элементов команд. Находим колонку – Run- щелкнув – открываем выпадающее меню и щелкаем на – Run Module F5 – Ваша программа начинает выполняться и останавливается на месте ошибки. Иногда она останавливается на следующей за ошибкой команде. Выводится комментарий к ошибке на английском.
В некоторых случаях помогает удаление строки в начале программы
« # -*– coding: cp1251 -*– » и программа заработает. Иногда помогает удалить конфликтную строку и забить ее вновь в текстовом редакторе.
« Программа редактор « IDLE( Python GUI) » идет в комплекте с программой Python 3.4.. и служит для нахождения ошибок в разрабатываемой программе.
При верстке книги к печати « умные программы » что-то убирают, а что-то добавляют, искажая оригинал. Для программы маленькие буквы и большие буквы – это разные буквы, а « умные программы » при верстке в начале строки бывает, что заменяют маленькую букву большой или меняет форму ковычек – программа вылетает.
К примеру при верстке удаляются все « лишние» пробелы. Скопировав листинг программы в «Блокноте» в формате «.txt» необходимо восстановить утраченные пробелы. Перед знаком # расположенным после команды надо добавить два пробела. Строка коментариев после значка # не должна переносится на следующую строку. В блоках- там, где блок выделяется пробелами, перед строками блока будет написана фраза: # Далее Cдвиг – четыре пробела в начале каждой строки. Соответственно в листинг ставим четыре пробела в начало каждой строки. Там, где блок закончился, написано: # Далее Конец Cдвига – четыре пробела в начале каждой строки – и строки начинаются без пробелов в начале строки. Иногда меняется вид ковычек – это тоже не дает работать программе – искать такие ошибки лучше в «IDLE( Python GUI)». Часть програм из книги первой и из книги второй в этой книге повторяются – это программы, часто применяемые в работе.
При вводе числа с дробной частью, необходимо отделять дробную часть от целой части числа точкой. Если части числа разделить запятой – программа вылетает без предупреждения.
Величины углов для расчета в программе необходимо задавать в радианах. Если программа в результат расчета выводит величину угла – то он выводится в радианах. Для человека ответ на экран удобнее выводить в градусах – при выводе на экран радианы програмно переводят в градусы. При вводе угловых величин- их обычно вводят в градусах и, перед подачей в расчетную часть программы, переводят програмно в радианы.
Значок # предваряет начало комментариев. То, что следует за значком программа просто пропускает, переходя на следующую строку. Комментарий программист пишет себе для справки,чтобы потом ему или другому программисту было легче разобраться в работе программы.
Листинги программ
:
Линейную интерполяцию применяем для определения значения коэффициента находящегося между двемя табличными значениями.
Листинг программы.
# -*– coding: cp1251 -*-
import math # Подключили математич модуль
# Эти первые две строки листинга определяют таблицу кодировки символов
# и подключают библиотеку для математических расчетов.
# Эти две строки, точно без изменения, применяют во всех листингах программ.
uu=” “ # Далее идет вывод на экран заголовка программы.
print (uu)
print (uu)
u=" Расчет линейной интерполяции "
print (u)
print (uu)
# Далее вводим в программу исходные данные для расчета.
print (uu)
u=" Введите X1 "
print (u)
print (uu)
x1=0.00000000
x1=input( ) # Вводим число
x1=float(x1) # Принудительно в вещественное число
print (uu)
u=" Введите X2 "
print (u)
print (uu)
x2=0.00000000
x2=input( ) # Вводим число
x2=float(x2) # Принудительно в вещественное число
print (uu)
u=" Введите Xx "
print (u)
print (uu)
xx=0.00000000
xx=input( ) # Вводим число
xx=float(xx) # Принудительно в вещественное число
print (uu)
u=" ........................................................................ "
print (u)
print (uu)
u=" Введите Y1 "
print (u)
print (uu)
y1=0.00000000
y1=input( ) # Вводим число
y1=float(y1) # Принудительно в вещественное число
print (uu)
u=" Введите Y2 "
print (u)
print (uu)
y2=0.00000000
y2=input( ) # Вводим число
y2=float(y2) # Принудительно в вещественное число
# Далее идет расчет по формуле..
yx=(((y2-y1)*(xx-x1))/(x2-x1))+y1
# Далее выводится на экран результат расчета
u=" ........................................................................ "
print (u)
print (u)
print (uu)
print (uu)
u=" X1 = ", x1," Y1 = ",y1," "
print (u)
print (uu)
u=" X2 = ", x2," Y2 = ",y2," "
print (u)
print (uu)
u=" Xx = ", xx," Yx = ",yx," "
print (u)
print (uu)
u=" ..... ..... ..... ..... ..... ...... ...... "
print (u)
print (u)
print (uu)
print (uu)
input( ) # Ожидание нажима Ентер
# Далее делаем еще один расчет на тех же исходных данных и выводим результаты.
Pii=math.pi # Вытащили число " Пи " и поместили в переменную Pii …
cc=((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1))
c=math.sqrt(cc) # Квадратный корень из " cc "
cs=str(c) # Преобразуем число в строку
u=" Длина линии x1;y1 – x2;y2 = "+cs
print (uu)
print (u)
a=(y2-y1)/(x2-x1)
aur=math.atan(a) # Угол aur в радианах через арс тангенс
au=aur*180/Pii # Угол au в градусах ( переводим ).
aus=str(au) # Преобразуем число в строку
u=" Угол линии x1;y1 – x2;y2 с осью Х = "+aus+" градус "
print (uu) # Выводим пустую строку
print (u) # Выводим результат – угол в градусах
print (uu)
print (uu)
input( ) # Ожидание нажима Ентер что бы можно было прочитать результаты.
# ..... ..... ..... Конец листинга программы ..... ....
Программа бывает необходима при построении сегмента с радиусом
большой величины – который построить непосредственной разметкой
сложно или невозможно из за мешающих препятствий.
Результаты расчета записываются в файл 'Rezult.txt'.
Листинг программы.
# -*– coding: cp1251 -*-
import math # Подключили математический модуль
import sys # Подключили основные библиотеки
# ....... ....... ....... ...... ...... ....... ....... ......
Pii=math.pi # Вытащили число " Пи "
f = open('Rezult.txt', 'w') # Открыли файл для записи результатов
# Записываем числа в текстовом виде
uu=" "
u=uu+"\n" # Добавим код перевода строки
f.write(u)
u1=" Расчет координат точек на радиусной кривой "
u=u1+"\n"
f.write(u)
uu=" "+"\n"
f.write(uu)
uuu=" ,,,,,,,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,, "+"\n"
f.write(uuu)
f.write(uu)
print (uu)
u=" Построение большого радиуса методом подьема "
print (u)
print (uu)
u=" Размер по горизонтали отсчитывается от центра хорды "
print (u)
u=" от точки Х2 на хорде проводим перпендикуляр Нм расчитанной величины. "
print (u)
u=" При вводе размера по горизонту = нулю – выход из программы "
print (u)
print (uu)
input( ) # Ожидание нажима Ентер
print (uu)
a=0.00000000
y=0.00000000
ug=0.00000000
ugg=0.00000000
R=0.00000000
hm=0.00000000
ht= 0.0000000
u=" Введите радиус "
print (u)
print (uu)
R=input( ) # Вводим число
R=float(R) # Принудительно в вещественное число
u=" Радиус заданной кривой = "
ss=str(R) # Преобразуем число в строку
Rad=u+ss
u=Rad+"\n"
f.write(u)
u=" Введите Хорду L "
print (u)
print (uu)
a=input( ) # Вводим число
a=float(a) # Принудительно в вещественное число
u=" Хорда максимальная заданная L = "
ss=str(a) # Преобразуем число в строку
Xord=u+ss
u=Xord+"\n"
f.write(u)
# Находим значения максимального прогиба при X2 = 0....
x=((R*R)-(a*a/4))
b=R-(math.sqrt(x)) # Квадратный корень из " x "
# b – максимальный прогиб…
u=" Подъем максимальный в центре хорды = "
ss=str(b) # Преобразуем число в строку
Progi=u+ss
u=Progi+"\n"
f.write(u)
x=(a/2)/R
y=math.asin(x)
v=math.cos(y)
aur=2*y
au=aur*180/Pii # Угол А в градусах
Lx= 0.0000001 # <Начальное значение>
while Lx>0: # Далее идет циклический расчет
# Далее Cдвиг – четыре пробела в начале каждой строки
print (uu)
u=" Введите растояние от центра хорды до перпендикуляра X2 "
print (u)
print (uu)
Lx=input( ) # Вводим число
Lx=float(Lx)
u=" От центра хорды до точки X2 по оси Х-Х = "
ss=str(Lx) # Преобразуем число в строку
Xord=u+ss
u=Xord+"\n"
f.write(uu)
f.write(u)
x=(R*R)-(Lx*Lx)
z=math.sqrt(x)
y=R-z # Прогиб при хорде = Lx*2
ht=b-y # Расчитали величину подьема
Gsf = 461030/2725231222..
u=" На растоянии от центра = "
ss=str(Lx) # Преобразуем число в строку
u=u+ss
print (u)
print (uu)
u=" Величина подьема ( перпендикуляра ) Hm = "
ss=str(ht) # Преобразуем число в строку
u=u+ss
print (u)
f.write(u)
f.write(uu)
print (uu)
u=" =================================== "
print (u)
f.write(u)
print (uu)
input( ) # Ожидание нажима Ентер
# Далее Конец Cдвига – четыре пробела в начале каждой строки
print (uu)
input( ) # Ожидание нажима Ентер
print (uu)
# ....... ....... ....... ...... ...... ....... ....... ......
f.write(uu)
f.write(uuu)
f.close() # закрыли файл
# ....... ....... ....... ...... ...... ....... ....... ....... ........ ........ ........
u=" ...... ...... ...... Конец программы ...... ...... ...... "
print (u)
print (uu)
input( ) # Ожидание нажима Ентер –
# Позволяет рассмотреть результаты расчета
# ..... Конец листинга программы ..... ..
В этом разделе объединены двенадцать небольших программ. Производится расчет при разном наборе исходных данных.
Расчет по Хорде – Радиусу
Листинг программы.
# -*– coding: cp1251 -*-
import math # Подключили математический модуль
Pii=math.pi # Вытащили число " Пи "
uu=” ”
print (uu)
print (uu)
u=" Расчет по Хорде – Радиусу "
print (u)
print (uu)
u=" Введите Хорду "
print (u)
print (uu)
a=0.00000000
a=input( ) # Вводим число
a=float(a) # Принудительно в вещественное число
u=" Введите Радиус "
print (u)
print (uu)
R=0.00000000
R=input( ) # Вводим число
R=float(R) # Принудительно в вещественное число
x=0.00000000
y=0.00000000
v=0.00000000
Sk=0.0000000
St=0.00000000
S=0.000000000
x=((R*R)-(a*a/4))
b=R-(math.sqrt(x)) # Квадратный корень из " x "
x=(a/2)/R
y=math.asin(x)
v=math.cos(y)
aur=2*y
au=aur*180/Pii # Угол А в градусах
#
Вывод по Хорде Прогиб Радиус
# Этот вывод без изменений будет во всех программах
# « Хорда прогиб радиус » – поэтому в дальнейшем мы повторяться
# не будем – ограничимся только заголовком.
D=R+R
Sk=Pii*D*D*au/(4*360) # Площадь сектора круга с углом aur
St=(a/2)*(R-b) # Площадь треугольника в секторе
S = Sk-St # Площадь горбушки
L=Pii*D*au/360 # Длина дуги
print (uu)
u=" ,,,, ,,,, ,,,, ,,,,, ,,,,, ,,,, "
print (u)
print (uu)
print (uu)
u=" Хорда = "
ss=str(a) # Преобразуем число в строку
u=u+ss
print (u)
Xord=u
print (uu)
u=" Стрела прогиба = "
ss=str(b) # Преобразуем число в строку
u=u+ss
print (u)
Progi=u
print (uu)
u=" Радиус = "
ss=str(R) # Преобразуем число в строку
u=u+ss
print (u)
Rad=u
print (uu)
u=" Диаметр = "
ss=str(D) # Преобразуем число в строку
u=u+ss
print (u)
Diam=u
print (uu)
u=" Угол раствора хорды = "
ss=str(au) # Преобразуем число в строку
u=u+ss
print (u)
UgSe=u
print (uu)
u=" Длина дуги над хордой = "
ss=str(L) # Преобразуем число в строку
u=u+ss
print (u)
Dug=u
print (uu)
u=" Площадь сектора = "
ss=str(Sk) # Преобразуем число в строку
u=u+ss
print (u)
PlSe=u
print (uu)
u=" Площадь треугольника под горбушкой = "
ss=str(St) # Преобразуем число в строку
u=u+ss
print (u)
PlTr=u
print (uu)
u=" Площадь горбушки = "
ss=str(S) # Преобразуем число в строку
u=u+ss
print (u)
PlGo=u
print (uu)
input( ) # Ожидание нажима Ентер
# Позволяет рассмотреть результаты расчета
# ..... Конец листинга программы ..... ..
Угол раствора это угол между двумя радиусами идущими к концам хорды.
Листинг программы.
# -*– coding: cp1251 -*-
import math # Подключили математический модуль
Pii=math.pi # Вытащили число " Пи "
uu=" "
print (uu)
print (uu)
u=" Расчет по Хорде и углу раствора "
print (u)
print (uu)
u=" Введите Хорду "
print (u)
print (uu)
a=0.00000000
a=input( ) # Вводим число
a=float(a) # Принудительно в вещественное число
u=" Введите Угол раствора в градусах "
print (u)
print (uu)
au=0.00000000
au=input( ) # Вводим число
au=float(au) # Принудительно в вещественное число
x=0.00000000
aur=0.00000000
v=0.00000000
y=0.00000000
Sk=0.0000000
St=0.00000000
S=0.000000000
aur=au*Pii/180
x=math.sin(aur/2)
R=(a/2)/x # Нашли радиус
y=(R*R)-(a*a/4)
v=math.sqrt(y) # Квадратный корень из " y "
b=R-v # Нашли прогиб
# ...... ....... ....... ....... ....... ........ .......
# Вывод по Хорде Прогиб Радиус
# Далее следует блок вывода результата ( смотри выше ).
input( ) # Ожидание нажима Ентер
# Позволяет рассмотреть результаты расчета
# ..... Конец листинга программы ..... ..
Листинг программы.
# -*– coding: cp1251 -*-
import math # Подключили математический модуль
Pii=math.pi # Вытащили число " Пи "
uu=" "
print (uu)
print (uu)
u=" Расчет по Хорде и длине Дуги "
print (u)
print (uu)
u=" Введите Хорду "
print (u)
print (uu)
a=0.00000000
a=input( ) # Вводим число
a=float(a) # Принудительно в вещественное число
u=" Введите длину Дуги "
print (u)
print (uu)
L=0.00000000
L=input( ) # Вводим число
L=float(L) # Принудительно в вещественное число
R=0.00000000
dx=a/200000
rt=(a/2)+dx # Начальный радиус расчета
aa=a/2 # Половина хорды
dl=Pii*rt
while dl>L: # Расчет по Хорде и длине Дуги
# Далее Cдвиг – четыре пробела в начале каждой строки
rt=rt+dx # Текущий радиус
x=aa/rt
y=2*(math.asin(x)) # Угол А в радианах через арс синус
dl=rt*y # Текущая длина дуги
# Далее Cдвига нет
yg=y*180/Pii # Угол " y " в градусах
au=yg
R=rt # Нашли радиус
y=(R*R)-(aa*aa)
v=math.sqrt(y) # Квадратный корень из " y "
b=R-v # Нашли прогиб
D=R+R
Sk=Pii*D*D*yg/(4*360) # Площадь сектора круга с углом aur
St=aa*v # Площадь треугольника в секторе
S = Sk-St # Площадь горбушки
# Вывод по Хорде Прогиб Радиус
# Далее следует блок вывода результата ( смотри выше ).
input( ) # Ожидание нажима Ентер
# Позволяет рассмотреть результаты расчета
# ..... Конец листинга программы ..... ..
# ...... ...... ....... ...... ......
Листинг программы.
# -*– coding: cp1251 -*-
import math # Подключили математический модуль
Pii=math.pi # Вытащили число " Пи "
uu=" "
print (uu)
u=" Расчет по Хорде – Прогибу "
print (u)
print (uu)
u=" ...... ...... ...... ...... ...... "
print (u)
print (uu)
u=" Введите Хорду "
print (u)
print (uu)
a=0.00000000
a=input( ) # Вводим число
a=float(a) # Принудительно в вещественное число
u=" Введите Стрелу Прогиба "
print (uu)
print (u)
print (uu)
b=0.00000000
b=input( ) # Вводим число
b=float(b) # Принудительно в вещественное число
x=0.00000000
y=0.00000000
v=0.00000000
R=0.00000000
Sk=0.0000000
St=0.00000000
S=0.000000000
Ex=1.000000
k=a/2
Rt=k+(k/100000)
Rd= k/100000
t=k/100000000
# Уточнение шаговым подбором
while Ex >t:
# Далее Cдвиг – четыре пробела в начале каждой строки
Rt=Rt+Rd
x=((Rt*Rt)-(k*k))
c=math.sqrt(x) # Квадратный корень из " x "
Ex=(Rt-c)-b
# E=math.abs(x)
# Конец подбора .......
# Далее Cдвига нет …
R=Rt
D=R+R
x=k/Rt
sur=math.asin(x) # Угол А в радианах
su=sur*180/Pii # Угол А в градусах
au=2*su
yg=au
L=(R+R)*Pii*au/360
# ....... ....... .......
# Вывод по Хорде Прогиб Радиус
# Далее следует блок вывода результата ( смотри выше ).
input( ) # Ожидание нажима Ентер
# Позволяет рассмотреть результаты расчета
# ..... Конец листинга программы ..... ..
# ...... ...... ....... ...... ......
Листинг программы.
# -*– coding: cp1251 -*-
import math # Подключили математический модуль
Pii=math.pi # Вытащили число " Пи "
uu=" "
print (uu)
u=" Расчет по Радиусу и Прогибу "
print (u)
print (uu)
u=" ...... ...... ...... ....."
print (u)
print (uu)
u=" Введите Радиус "
print (u)
print (uu)
R=0.00000000
R=input( ) # Вводим число
R=float(R) # Принудительно в вещественное число
u=" Введите Прогиб "
print (uu)
print (u)
print (uu)
b=0.00000000
b=input( ) # Вводим число
b=float(b) # Принудительно в вещественное число
k=R-b
x=(R*R)-(k*k)
a=(math.sqrt(x))*2
x=(a/2)/k
aur = (math.atan(x))*2
au=aur*180/Pii
yg = au
# Вывод по Хорде Прогиб Радиус
# Далее следует блок вывода результата ( смотри выше ).
input( ) # Ожидание нажима Ентер
# Позволяет рассмотреть результаты расчета
# ..... Конец листинга программы ..... ..
# ...... ...... ....... ...... ......
Листинг программы.
# -*– coding: cp1251 -*-
import math # Подключили математический модуль
Pii=math.pi # Вытащили число " Пи "
uu=" "
print (uu)
u=" Расчет по Прогибу и длине Дуги "
print (u)
print (uu)
u=" ...... ...... ...... ...... "
print (u)
print (uu)
u=" Введите стрелу Прогиба "
print (u)
print (uu)
b=0.00000000
b=input( ) # Вводим число
b=float(b) # Принудительно в вещественное число
print (uu)
u=" Введите длину Дуги "
print (u)
print (uu)
L=0.00000000
L=input( ) # Вводим число
L=float(L) # Принудительно в вещественное число
print (uu)
u=" Подождите – идет расчет "
print (u)
print (uu)
bb=0.000000 # Текущий прогиб
Rt=L/Pii # Начальный Текущий радиус
xx=b/100000 # Приращение радиуса
xb=b/1000 # Допустимая ошибка..
db=10000000*b # Начальное значение ошибки
ugr=0.0000000
# Уточнение подбором
while db >xb:
# Далее Cдвиг – четыре пробела в начале каждой строки
Rt=Rt+xx
ygr=(2*Pii)* (L/((Rt+Rt)*Pii)) # Угол раствора хорды радиан
x=math.sin(ygr/2)
y=Rt*x
a=y+y # Хорда
t=((Rt*Rt)-(y*y))
z=math.sqrt(t) # Квадратный корень из " y "
bb=Rt-z # Прогиб
x=(b-bb)*(b-bb)
db=math.sqrt(x) # Квадратный корень из " x "
# Далее Cдвига нет..
db=db+xb
xx=b/100000000 # Приращение радиуса
xb=b/1000000
# Уточнение подбором ( вторая ступень )
while db >xb:
# Далее Cдвиг – четыре пробела в начале каждой строки
Rt=Rt+xx
ygr=(2*Pii)* (L/((Rt+Rt)*Pii)) # Угол раствора хорды радиан
x=math.sin(ygr/2)
y=Rt*x
a=y+y # Хорда
t=((Rt*Rt)-(y*y))
z=math.sqrt(t) # Квадратный корень из " y "
bb=Rt-z # Прогиб
x=(b-bb)*(b-bb)
db=math.sqrt(x) # Квадратный корень из " x "
# Далее Cдвига – нет …
# Конец подбора ........
# Gsf = 461030/2725231222…
R=Rt
yg=ygr*180/Pii # Угол раствора хорды град.
# Далее Cдвига – нет….
x=a/(R+R)
k=math.asin(x)
au=(k+k)*180/Pii # Угол на хорду в градусах