Guest User

bisector_equation

a guest
Oct 29th, 2021
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.63 KB | None | 0 0
  1.  
  2. uses crt,math;
  3. type TPoint = record
  4.                 x,y:Real;
  5.               end;
  6.  
  7.  
  8. procedure quadratic(a,b,c:Real;var x1,x2:Real);
  9. var delta:Real;
  10. begin
  11.   delta:=sqr(b)-4*a*c;
  12.   if delta >= 0 then
  13.   begin
  14.     x1 := (-b - sqrt(delta))/(2*a);
  15.     x2 := (-b + sqrt(delta))/(2*a);
  16.   end;
  17. end;
  18.  
  19. var a1,b1,c1:Real;
  20.     a2,b2,c2:Real;
  21.     a3,b3,c3:Real;
  22.     r,t1,t2:Real;
  23.     a,b,c,d:TPoint;
  24.     f:text;
  25.  
  26. begin
  27.   //clrscr;
  28.   Assign(f,'bisector.txt');
  29.   {$I-}
  30.     reset(f);
  31.   {$I+}
  32.     if IOResult = 0 then
  33.        Append(f)
  34.     else
  35.         Rewrite(f);
  36.   randomize;
  37.   writeln('Podaj rownanie pierwszej prostej zawierajacej ramie kata');
  38.   readln(a1,b1,c1);
  39.   writeln('Podaj rownanie drugiej prostej zawierajacej ramie kata');
  40.   readln(a2,b2,c2);
  41.   writeln(f,'Wspolczynniki rownania pierwszej prostej zawierajacej ramie kata');
  42.   writeln(f,a1:1:10,' ',b1:1:10,' ',c1:1:10);
  43.   writeln(f,'Wspolczynniki rownania drugiej prostej zawierajacej ramie kata');
  44.   writeln(f,a2:1:10,' ',b2:1:10,' ',c2:1:10);
  45.   a.x := -(c1*b2-c2*b1)/(a1*b2-a2*b1);
  46.   a.y := -(a1*c2-a2*c1)/(a1*b2-a2*b1);
  47.   writeln(f,'Wspolczynniki wierzcholka kata');
  48.   writeln(f,a.x:1:10,' ',a.y:1:10);
  49.   if b1 <> 0 then
  50.   begin
  51.     b.x := random(10);
  52.     b.y := -1/b1*(c1 + a1*b.x);
  53.   end
  54.   else
  55.   begin
  56.     b.y := random(10);
  57.     b.x := -1/a1*(c1 + b1*b.y)
  58.   end;
  59.   writeln(f,'Wspolczynniki wybranego punktu na jednym z ramion kata');
  60.   writeln(f,b.x:1:10,' ',b.y:1:10);
  61.   r := hypot(b.x - a.x,b.y - a.y);
  62.   writeln(f,'Promien okregu o srodku w punkcie A');
  63.   writeln(f,r:1:10);
  64.   quadratic(1+sqr(a2/b2),2*(c2/b2+a.y)*(a2/b2)-2*a.x,sqr(a.x)+sqr(c2/b2+a.y)-sqr(r),t1,t2);
  65.   writeln(f,'Wspolczynniki rownania kwadratowego powstalego z ukladu rownan');
  66.   writeln(f,1+sqr(a2/b2):1:10,' ',2*(c2/b2+a.y)*(a2/b2)-2*a.x:1:10,' ',sqr(a.x)+sqr(c2/b2+a.y)-sqr(r):1:10);
  67.   c.x := t1;
  68.   c.y := -1/b2 * (c2 + a2*c.x);
  69.   d.x := t2;
  70.   d.y := -1/b2 * (c2 + a2*d.x);
  71.   writeln(f,'Wspolczynniki mozliwych punktow przeciecia okregu z prosta zawierajaca drugie ramie kata');
  72.   writeln(f,c.x:1:10,' ',c.y:1:10);
  73.   writeln(f,d.x:1:10,' ',d.y:1:10);
  74.   a3:= -(c.x-b.x)/(c.y-b.y);
  75.   b3:=-1;
  76.   c3:=-a3*a.x + a.y;
  77.   writeln('Rownanie dwusiecznej to: ');
  78.   writeln(a3:1:10,'*x+',b3:1:10,'*y+',c3:1:10);
  79.   writeln(f,'Rownanie dwusiecznej to: ');
  80.   writeln(f,a3:1:10,'*x+',b3:1:10,'*y+',c3:1:10);
  81.   a3:= -(d.x-b.x)/(d.y-b.y);
  82.   b3:=-1;
  83.   c3:=-a3*a.x + a.y;
  84.   writeln('Rownanie dwusiecznej to: ');
  85.   writeln(a3:1:10,'*x+',b3:1:10,'*y+',c3:1:10);
  86.   writeln(f,'Rownanie dwusiecznej to: ');
  87.   writeln(f,a3:1:10,'*x+',b3:1:10,'*y+',c3:1:10);
  88.   writeln(f);
  89.   readkey;
  90.   close(f);
  91. end.
  92.  
  93.  
Advertisement
Add Comment
Please, Sign In to add comment