Nazdar mám problém s jedným kódom. Na riadku "gamma=math.pi/2-math.atan(yA/xA)" mi vypisuje syntax error ale mám podozrenie, že to skôr súvisí s tým "if" tesne pred tým. Môžete mi s tým niekto pomôcť?Kde je tá chyba? Ja viem, že kód asi nebude ideál a ak máte nejaké iné návrhy ako to vyriešiť privítam to. ďakujem za odpoveď a čas čo tomu budete venovať :)
Roman
#-*- coding: utf-8 -*-
import math
############################################################################
##### Zadavani vstupu #####
############################################################################
r1=0;
r2=110.5;
r3=212.5;
beta2d=35;
beta1dpoz=45;
beta2r=beta2d*math.pi/180
############################################################################
##### Vypocet suradnic stredu rotace #####
############################################################################
xA1, xA2= None, None
while xA1 == None and xA2 == None:
xs2=r3*math.sin(beta2r); #x-ova sourandnice stredu rotace S2
ys2=r1-r3*math.cos(beta2r); #y-ova sourandnice stredu rotace S2
kruh1=math.pow(xs2,2)+math.pow(ys2,2); #1. vyjadrenie kruhu
kruh2=math.pow(r1,2)+math.pow(r3,2)-2*r1*r3*math.cos(beta2r); #2. vyjadrenie kruhu
############################################################################
##### Vypocet suradnic prusecniku kruznic #####
############################################################################
#vypocet x-ovej souradnice bodu A - prusecik kruznic
try:
xA1=1.0/2*((xs2*(1+((math.pow(r1,2)-math.pow(r2,2))/(math.pow(xs2,2)+math.pow(ys2,2)))))+(ys2*(math.sqrt(((2*(math.pow(r1,2)+math.pow(r2,2)))/(math.pow(xs2,2)+math.pow(ys2,2)))-(math.pow(((math.pow(r1,2)-math.pow(r2,2))/(math.pow(xs2,2)+math.pow(ys2,2))),2))-1))));
xA2=1.0/2*((xs2*(1+((math.pow(r1,2)-math.pow(r2,2))/(math.pow(xs2,2)+math.pow(ys2,2)))))-(ys2*(math.sqrt(((2*(math.pow(r1,2)+math.pow(r2,2)))/(math.pow(xs2,2)+math.pow(ys2,2)))-(math.pow(((math.pow(r1,2)-math.pow(r2,2))/(math.pow(xs2,2)+math.pow(ys2,2))),2))-1))));
except ValueError:
r1=r1+0.1
xAmat=[xA1,xA2];
xA=max(xAmat); #vetsi hodnota xA - Musi byt realne cislo
print('xA',xA)
#podmínka pro znaménko yA
p=math.sqrt(2*math.pow(r1,2)+math.pow(r3,2)-2*r1*r3*(math.sin(beta2r)+math.cos(beta2r)));
if r2>p:
yA=math.sqrt(math.pow(r1,2)-math.pow(xA,2)) #y-onova suradnica bodu A ak r2>p
elif r2<=p:
yA=-1*math.sqrt(math.pow(r1,2)-math.pow(xA,2)) #y-onova suradnica bodu A ak r2<p
print ('yA',yA)
print ('r1',r1)
############################################################################
##### Vypocet uhlu pro kruznicovy vysek a delku oblouku #####
############################################################################
print ('r1',r1)
beta1d=None
while beta1d<beta1dpoz:
print (r1)
xs2=r3*math.sin(beta2r);
ys2=r1-r3*math.cos(beta2r);
kruh1=math.pow(xs2,2)+math.pow(ys2,2);
kruh2=math.pow(r1,2)+math.pow(r3,2)-2*r1*r3*math.cos(beta2r);
xA1=1.0/2*((xs2*(1+((math.pow(r1,2)-math.pow(r2,2))/(math.pow(xs2,2)+math.pow(ys2,2)))))+(ys2*(math.sqrt(((2*(math.pow(r1,2)+math.pow(r2,2)))/(math.pow(xs2,2)+math.pow(ys2,2)))-(math.pow(((math.pow(r1,2)-math.pow(r2,2))/(math.pow(xs2,2)+math.pow(ys2,2))),2))-1))));
xA2=1.0/2*((xs2*(1+((math.pow(r1,2)-math.pow(r2,2))/(math.pow(xs2,2)+math.pow(ys2,2)))))-(ys2*(math.sqrt(((2*(math.pow(r1,2)+math.pow(r2,2)))/(math.pow(xs2,2)+math.pow(ys2,2)))-(math.pow(((math.pow(r1,2)-math.pow(r2,2))/(math.pow(xs2,2)+math.pow(ys2,2))),2))-1))));
xAmat=[xA1,xA2];
xA=max(xAmat)
p=math.sqrt(2*math.pow(r1,2)+math.pow(r3,2)-2*r1*r3*(math.sin(beta2r)+math.cos(beta2r)))
if r2>p:
yA=math.sqrt(math.pow(r1,2)-math.pow(xA,2))
elif r2 <= p:
yA=-1*math.sqrt(math.pow(r1,2)-math.pow(xA,2)
gamma=math.pi/2-math.atan(yA/xA)
gammad=gamma*180/math.pi;
L=2*math.pi*r1*gammad/360;
b=abs(abs(xs2)-abs(xA));
a=abs(abs(ys2)-abs(yA));
gammad1=gammad-90;
etad=math.atan(b/a)*180/math.pi;
deltad=180-90-etad;
try:
beta1d=deltad-gammad1
except beta1d<=beta1dpoz:
r1=r1+0.1
print('r1',r1)
print('beta1d',beta1d)