obliczenie kąta

0

Polecenie do zadania znajduje się na zdjęciu. Wydaje mi się ze brakuje mi kilku warunków. Program czasem liczy kąt wewnętrzny a czasem zewnętrzny. Zdarza się, że kąty zupełnie się od siebie różnią. Liczone są w radianach. Proszę o pomoc.

'import math
print("pierwszy sposob")
Xc = input("Podaj współrzędną Xc: ")
Yc = input("Podaj współrzędną Yc: ")
Xp = input("Podaj współrzędną Xp: ")
Yp = input("Podaj współrzędną Yp: ")
Xl = input("Podaj współrzędną Xl: ")
Yl = input("Podaj współrzedną Yl: ")
deltaX = float(Xp) - float(Xc)
deltaY = float(Yp) - float(Yc)

print("deltaX =",deltaX)
print("deltaY=", deltaY)
z=deltaY/deltaX
p=abs(z)
if deltaX >= 0 and deltaY >= 0:
A1 = math.atan(p)

elif deltaX >= 0 and deltaY <= 0:
A1 = math.atan(p) + math.pi*2

elif deltaX <= 0 and deltaY >= 0:
A1 = math.atan(p) + math.pi

elif deltaX <=0 and deltaY <=0:
A1= math.atan(p) + math.pi

deltaX1 = float(Xl) - float(Xc)
deltaY1 = float(Yl) - float(Yc)
f=deltaY1/deltaX1
t=abs(f)
print("deltaX =",deltaX1)
print("deltaY=", deltaY1)
if deltaX1 >= 0 and deltaY1 >= 0:
A2 = math.atan(t)

elif deltaX1 >= 0 and deltaY1 <= 0:
A2 = math.atan(t) + math.pi*2

elif deltaX1 <= 0 and deltaY1 >= 0:
A2 = math.atan(t) + math.pi

elif deltaX1 <=0 and deltaY1 <=0:
A2= math.atan(t) + math.pi

if A1>math.pi2:
A1-=math.pi
2

if A2>math.pi2:
A2-=math.pi
2

print("azymut cl=", A2)
print("azymut cp=", A1)

kat=A1-A2

if kat < 0:
kat += math.pi*2

print("kat B=",kat)

print("drugi sposob")
z=(float(Xp)-float(Xc))**2+(float(Yp)-float(Yc))**2
a=math.sqrt(z)
print("bok a=",a)
x=(float(Xp)-float(Xl))**2+(float(Yp)-float(Yl))**2
b=math.sqrt(x)
print("bok b=", b)
q=(float(Xl)-float(Xc))**2+(float(Yl)-float(Yc))**2
c=math.sqrt(q)
print("bok c=", c)

if a+b<c or a+c<b or b+c<a:
print("brak warunkow'")

k= (a2+c2-b**2)/(2ac)
while k>math.pi2 and k<-(math.pi2):
k /= math.pi2
if k<math.pi
2 and k>-(math.pi*2):
break

kat=math.acos(k)

if Xc>Xp:
kat1=math.pi*2-kat
if Xc<Xp:
kat1=kat

if kat1<0:
kat1 += math.pi*2

print("katB=",kat1)

print("trzeci sposob")

f1=((float(Xl)-float(Xc))(float(Yp)-float(Yc))-(float(Yl)-float(Yc))(float(Xp)-float(Xc)))/((float(Xp)-float(Xc))(float(Yp)-float(Yc)))
f2=((float(Xl)-float(Xc))
(float(Xp)-float(Xc))+(float(Yp)-float(Yc))(float(Yl)-float(Yc)))/((float(Xp)-float(Xc))(float(Yp)-float(Yc)))
f0=f1/f2
print("f1=",f1)
print("f2=",f2)
print("f0=",f0)
while f0>math.pi and f0<math.pi:
f0 /= math.pi
if f0<math.pi and f0>math.pi:
break
kat=math.atan(f0)
if kat<0:
kat += math.pi*2
print("katB=",kat)'

0

Użyj atan2, bo on nie wymaga dodatkowych sprawdzeń.

1 użytkowników online, w tym zalogowanych: 0, gości: 1