Vzájemná poloha kružnice a přímky I.

Tento notebook umožňuje názorně zobrazit různou vzájemnou polohu kružnice (((x-m))^2) + (((y-n))^2) = (r^2) a přímky y = k.x + q. Parametry kružnice (tj. souřadnice středu [m; n] a poloměr r) a přímky (tj. koeficienty k a q) je nutno zadat před spuštěním notebooku.

© Jaroslav Reichl, 2009

(* Parametry kružnice: (((x - m))^2) + (((y - n))^2) = (r^2) *)
m=2;
n=-1;
r=5;
(* Parametry přímky: y = k.x + q *)
k=1;
q=-4;

x1=-10;x2=-x1;y1=-10;y2=-y1;
barvaprimky=Blue;
barvakce=Black;
barvabodu=Red;
barvastredu=Brown;
tloustka=0.006;
velikostbodu=0.02;
kruznice=(((x-m))^2)+(((y-n))^2)-(r^2);
rcekruznice=kruznice==0;
Print["Kružnice: ",TraditionalForm[rcekruznice]]
grafkruznice[x_,y_]:=kruznice;
primkapom=k x+q;
primkarce=primkapom-y==0;
Print["Přímka: ",TraditionalForm[primkarce]]
primka[x_]:=primkapom;
reseni=Solve[{rcekruznice,primkarce},{x,y}];
prusecik1x=x/.reseni[[1]];prusecik1y=y/.reseni[[1]];
prusecik2x=x/.reseni[[2]];prusecik2y=y/.reseni[[2]];
graf1=ContourPlot[grafkruznice[x,y]==0,{x,x1,x2},{y,y1,y2},ContourStyle->{barvakce,Thickness[tloustka]},Axes->True,Frame->False];
graf2=Plot[primka[x],{x,x1,x2},PlotStyle->{barvaprimky,Thickness[tloustka]}];
grafstred=Graphics[{
{barvastredu,PointSize[velikostbodu],Point[{m,n}]}}];
If[Im[prusecik1x]==0,
{graf3=Graphics[{
{barvabodu,PointSize[velikostbodu],Point[{prusecik1x,prusecik1y}]},
{barvabodu,PointSize[velikostbodu],Point[{prusecik2x,prusecik2y}]}}]},
graf3=Graphics[]];
Show[graf1,grafstred,graf2,graf3,AxesLabel->{"x","y"}]
If[Im[prusecik1x]==0,
If[(prusecik1x==prusecik2x)∧(prusecik1y==prusecik2y),
Print["Průsečík přímky a kružnice je bod o souřadnicích [",prusecik1x,"; ",prusecik1y,"]. Přímka je TEČNOU kružnice."],
Print["Průsečíky přímky a kružnice jsou body o souřadnicích [",prusecik1x,"; ",prusecik1y,"] a [",prusecik2x,"; ",prusecik2y,"]. Přímka je SEČNOU kružnice."]],
Print["Průsečíky přímky a kružnice NEEXISTUJÍ! Přímka je VNĚJŠÍ PŘÍMKOU kružnice."]]