Сложнейший четырехугольник. Ч 2

Георгий Александров
Данную задачу я развил и более конкретизировал. Выяснил, что однозначное решение уравнение (1), показанное в первой части, будет при условии, что диагональ "d" будет больше как стороны "a", так и стороны "b". Составил программу, которая дает наглядный график этой функции. Его пересечение с осью дает нужный корень, то есть значение угла икс в градусах. Сделал несколько тестовых примеров (см. иллюстрацию). Далее программа вычисляет этот корень итерационным путем.
Текст проги:
 open window 400,400
a=12:b=10:d=14
if d<a or d<b then
print "OOOOO!!! d must be greater than a or b"
end
fi
A0=70:B0=80
A=A0/180*pi:B=B0/180*pi
print "a = ";:print a;:print "   b = ";:print b
print "d = ";:print d
print "A = ";:print A0;:print "   B = ";:print B0
ky=50:kx=100:k=40:dy=0.001:dx=0.0001
line 0, 200+ky, 350,200+ky
for x0=0 to 180 step 20
x=x0/180*pi
line x*kx+k,250+k-50,x*kx+k,250+0
next x0
text k-5,250+k-20,"0"
text 1*kx/3+k-5,250+k-20,"20"
text 2*kx/3+k-4,250+k-20,"40"
text 3*kx/3+k-3,250+k-20,"60"
text 4*kx/3+k-2,250+k-20,"80"
text 5*kx/3+k,250+k-20,"100"
text 6*kx/3+k,250+k-20,"120"
text 7*kx/3+k,250+k-20,"140"
text 8*kx/3+k,250+k-20,"160"
text 9*kx/3+k,250+k-20,"180"
for x=0 to 3.14 step 0.01
v1=cos(x+B)*(a/b*sin(A)-sin(x))
v2=sin(x+B)
v3=a/b*cos(A)-sqrt((d/b)^2-sin(x)^2)
z1=v1+v2*v3
v1=cos(x+dx+B)*(a/b*sin(A)-sin(x+dx))
v2=sin(x+dx+B)
v3=a/b*cos(A)-sqrt((d/b)^2-sin(x+dx)^2)
z2=v1+v2*v3
line x*kx+k,(z1*100+250),(x+dx)*kx+k,(z2*100+250)
next x
 x1=0:x2=pi
for j=1 to 50
if k<>1 then
p()
if z1*z3<=0 and z3*z3>0 then x2=x3:x1=x1:fi
if z1*z3>0 and z3*z2<=0 then x1=x3:x2=x2:fi
p()
if abs(abs(x1)-abs(x2))<0.00000001 then
print "x = ";:print x3*180/pi
y=2*pi-A-B-x3
y1=y*180/pi
c=b*cos(x3)+sqrt(d^2-b^2*sin(x3)^2)
f=a*cos(y)+sqrt(d^2-a^2*sin(y)^2)
print "y = ";:print y1
print "c = ";:print c
print "f = ";:print f
k=1:fi
fi
next j
 sub p()
v1=cos(x1+B)*(a/b*sin(A)-sin(x1))
v2=sin(x1+B)
v3=a/b*cos(A)-sqrt((d/b)^2-sin(x1)^2)
z1=v1+v2*v3
v1=cos(x2+B)*(a/b*sin(A)-sin(x2))
v2=sin(x2+B)
v3=a/b*cos(A)-sqrt((d/b)^2-sin(x2)^2)
z2=v1+v2*v3
x3=(x1+x2)/2
v1=cos(x3+B)*(a/b*sin(A)-sin(x3))
v2=sin(x3+B)
v3=a/b*cos(A)-sqrt((d/b)^2-sin(x3)^2)
z3=v1+v2*v3
end sub

1 марта 2024 г.