Navigation bar
  Print document Start Previous page
 161 of 179 
Next page End  

161
d213 = (у2 - yl)*(x3 - х1) - (х2 - х1)*(у3 - у1) 
d214 = (у2 - у1)*(х4 - х1) - (х2 - х1)*(у4 - у1) 
d431 = (у4 - у3)*(х1 - хЗ) - (х4 - х3)*(у1 - уЗ) 
d432 = (у4 - у3)*(х2 - хЗ) - (х4 - х3)*(у2 - уЗ) 
if d213*d2l4 > 0 or d431*d432 > 0 then
' нет пересечения 
elseifd213*d214 < 0 or d431*d432 < 0 then
gosub tchki ' расчет точки 
else ' отрезки на одной прямой
gosub lin 1 
end if 
return
tchki: ' расчет точки пересечения 
np = np+1
? «отрезок:»; k; k + 1 
? «отрезок:»; I; I + 1
D = (у2 - yl)*(x4 - хЗ) - (х2 - х1)*(у4 - уЗ) 
Dx = [(у2 - у1)*х1 - (х2 - х1)*у1]*(х4 - хЗ) 
Dx = Dx - (х2 - х1)*[(у4 - у3)*х3 - (х4 - х3)*у3] 
Dy = (у2 - у1)*[(у4 - у3)*х3 - (х4 - х3)*у3] 
Dy = Dy - [(у2 - yl)*xl - (х2 - х1)*у1]*(у4 - уЗ) 
х = Dx/D 
у = Dy/D 
? х; у
return
lin 1: 'отрезки на одной прямой 
d2 = (х2 - х1)*(х2 - х1) + (у2 - у1)*(у2 - 1) 
d3 = (хЗ - х1)*(х2 - х1) + (уЗ - у1)*(у2 - 1) 
d4 = (х4 - xl)*(x2 - х1) + (у4 - у1)*(у2 - 1) 
if d3 > d2 and d4 > d2 then
' нет пересечения 
Iseif d3 < 0 and d4 < 0 then
' нет пересечения 
else ' отрезки пересекаются:
gosub otrеz ' общий отрезок 
end if 
return
otrez: 'расчет общего отрезка 
np = np + 1
? «отрезок пересечения:» 
if d3 < 0 or d4 < 0 then
? х1; у1; «-» 
elseif d3 < d4 then
? х3; у3; «-»
else                                     
? х4; у4; «-» 
end if 
if d2 < d3 or d2 < d4 then
? х2; у2 
elseif d3 < d4 then
? x3; y3 
else
? х4; у4 
Сайт создан в системе uCoz