Wstęp

“z” to ogólny zapis liczby zespolonej. “F1” i “F2” to przykładowe liczby zespolone, które reprezentują punkty płaszczyzny.

z=x+I*y;

F1=3+I*4;

F2= 1+I*2;

1. Symetralna odcinka F1F2

Definicja: Miejsce geometryczne tych wszystkich punktów płaszczyzny, dla których odległości od dwóch końców odcinka (różnych punktów F1 i F2)  jest taka sama.

konceodcinka=ListPlot[{{Re[F1],Im[F1]},{Re[F2],Im[F2]}},AspectRatio->1,AxesLabel->{"x","y"},PlotStyle->{Red,PointSize[Large]},PlotRange->{{-2,6},{0,8}}]

odcinek=ParametricPlot[{Re[F1],Im[F1]}+t*({Re[F2],Im[F2]}-{Re[F1],Im[F1]}),{t,0,1},PlotRange->{{-2,6},{0,8}}]

plot0=ComplexExpand[Abs[z-F1]==Abs[z-F2]]

plot0=FullSimplify[plot0]

symetralna=ContourPlot[Evaluate[plot0],{x,-2,6},{y,0,8},Axes->True,AxesLabel->{"x","y"},AspectRatio->1,ContourStyle->{Orange, Dashed}]

Show[konceodcinka,odcinek,symetralna]

2. Elipsa -> |z-F1| + |z-F2| == 13

Definicja: Miejsce geometryczne tych wszystkich punktów płaszczyzny, dla których suma odległości od dwóch ustalonych punktów (F1 i F2) jest stała. Ta suma odległości musi być większa od odległości między punktami F1 i F2.

plot1=ComplexExpand[Abs[z-F1]+Abs[z-F2]]

elipsa=ContourPlot[Evaluate[plot1]==13,{x,-8,10},{y,-6,12},Axes->True,AxesLabel->{"x","y"},AspectRatio->1]

ogniska=ListPlot[{{Re[F1],Im[F1]},{Re[F2],Im[F2]}},AspectRatio->1,AxesLabel->{"x","y"},PlotStyle->{Red,PointSize[Large]}]

Show[elipsa,ogniska]

3. Hiperbola -> | |x-F1| - |z-F2| |==2

Definicja: Zbiór wszystkich takich punktów płaszczyzny, że wartość bezwzględna różnicy odległości tych punktów od dwóch punktów (F1 i F2) jest stała.

plot2=ComplexExpand[Abs[Abs[z-F1]-Abs[z-F2]]]

hiperbola=ContourPlot[Evaluate[plot2==2],{x,-1,6},{y,-1,6},Axes->True,AxesLabel->{"x","y"},AspectRatio->1]

Show[hiperbola,ogniska]

4. Odległość punktu od prostej.

1. Ogólnie:

Clear[AA,BB,CC,p0,x0,y0,l,k];

p0={x0,y0}; (*ustalony punkt*)
l=AA*x+BB*y+CC; (*prosta*)
k=-BB*x+AA*y+BB*x0-AA*y0; (*prosta przechodząca przez p0, prostopadla do prostej l*)
pkt=Solve[{k==0,l==0},{x,y}]; 
Pp={x,y}/.Flatten[pkt];(*punkt przecięcia prostych l i k*)
d=FullSimplify[Sqrt[(p0-Pp).(p0-Pp)]] (*odległość p0 od Pp, czyli punktu od prostej*)

2. Przykład:

Clear[AA,BB,CC,p0,x0,y0,l,k];

p0={x0,y0};
l=AA*x+BB*y+CC;
k=-BB*x+AA*y+BB*x0-AA*y0;
AA=5;
BB=-6;
CC=-2;
x0=-3;
y0=2;
plot3=ContourPlot[Evaluate[{l,k}],{x,-5,5},{y,-5,5},Axes->True,AxesLabel->{"x","y"},AspectRatio->1];
point=Graphics[Point[p0]];

Show[plot3, point]

pkt=Solve[{k==0,l==0},{x,y}];
Pp={x,y}/.Flatten[pkt];
d=FullSimplify[Sqrt[(p0-Pp).(p0-Pp)]]

5. Parabola

Definicja:  Zbiór punktów równoodległych od prostej (L) i punktu (p).

Clear[AA,BB,CC,p,plot4,parabola]

1. Parametry prostej L=AAx+BBy+CC to (tak jak w przykładzie 2 - odległość punktu od prostej):

AA=5;
BB=-6;
CC=-2;

2. Ognisko to punkt z przykładu 2 (odległość punktu od prostej):

p=-3+I*2;

3. Zbiorem punktów będą:

plot4=ComplexExpand[Abs[z-p]==(Sqrt[((((CC+AA x+BB y))^2)/((AA^2)+(BB^2)))])];

parabola=ContourPlot[Evaluate[plot4],{x,-10,3},{y,-5,10},Axes->True,AxesLabel->{"x","y"},AspectRatio->1];

ognisko=ListPlot[{{x0,y0}},AspectRatio->1,AxesLabel->{"x","y"},PlotStyle->{Red,PointSize[Large]}];

prosta=ContourPlot[Evaluate[l==0],{x,-10,3},{y,-5,10},Axes->True,AxesLabel->{"x","y"},AspectRatio->1];

Show[parabola,ognisko,prosta]

6. Elipsoida obrotowa

Definicja: Miejsce geometryczne tych wszystkich punktów przestrzeni, dla których suma odległości od dwóch ustalonych punktów o wektorach wodzących r1 i r2 jest stała.

(* Przechodzimy do wielkości trójwymiarowych i teraz musimy sobie radzić bez liczb zespolonych *)

ClearAll[x,y,z,r1,r2];

r={x,y,z}; (* dowolny punkt elipsoidy obrotowej *)

r1={0,0,0}

r2={0,0,4}

elipsoida=Sqrt[(r-r1).(r-r1)]+Sqrt[(r-r2).(r-r2)]==6

ContourPlot3D[Evaluate[elipsoida],{x,-3,3},{y,-3,3},{z,-1,6},AxesLabel->{"x","y","z"}]

7. Hiperboloida obrotowa

Definicja: Zbiór wszystkich takich punktów przestrzeni, dla których wartość bezwzględna różnicy odległości tych punktów od dwóch ustalonych punktów o wektorach wodzących r1 i r2 jest stała.

r={x,y,z}; (* dowolny punkt elipsoidy obrotowej *)

r1={0,0,0}

r2={0,0,4}

hiperboloida=Abs[Sqrt[(r-r1).(r-r1)]-Sqrt[(r-r2).(r-r2)]]==2

ContourPlot3D[Evaluate[hiperboloida],{x,-10,10},{y,-10,10},{z,-3,7},AxesLabel->{"x","y","z"}]

8. Odległość punktu od płaszczyzny

Odległość punktu P0 o wektorze wodzącym r0 od płaszczyzny Pi1 zadanej przez wektor a1 do płaszczyzny prostopadły oraz punkt P1 należący do płaszczyzny o wektorze wodzącym r1.

(* ClearAll["Global`*"] *)
ClearAll[x,y,z,r,r1,r0,a1,Pi1];

r={x,y,z};

r0={x0,y0,z0};

r1={x1,y1,z1};

a1={a1x,a1y,a1z};

Pi1=a1.(r-r1)==0

(* l1 to prosta prostopadła do Pi1, do której należy P0 *)

l1=r0 +t*a1

(* P0p(r0p) to rzut prostopadły P0 na Pi1, czyli punkt wspólny Pi1 i l1 *)

eq1=Pi1/.{x-> l1[[1]],y->l1[[2]],z->l1[[3]]}

s1=Simplify[Solve[eq1,t]]

r0p=l1/.s1[[1]]

odl1=FullSimplify[Sqrt[(r0p-r0).(r0p-r0)],Element[{a1x,a1y,a1z,x0,y0,z0,x1,y1,z1},Reals]]

(* Ten wynik można zapisać w bardziej zwartej postaci jako: *)

odl11=Abs[a1.(r1-r0)]/Sqrt[a1.a1]

Simplify[odl11==odl1]

(* W takim razie mogę zdefiniować tę odległość jako funkcję trzech wektorów: a1,r1 i r0 *)

odlPunktPlaszczyzna[r0_,a1_,r1_]:=Abs[a1.(r1-r0)]/Sqrt[a1.a1]

(* Przykład: odległość punktu P0(2,3,6) od płaszczyzny z=0.
W tym przypadku mamy na przykład: 
a1={0,0,1}, r1={0,0,0} i r0={2,3,6} *)

a1={0,0,1}; r1={0,0,0} ;r0={2,3,6} ;

odlPunktPlaszczyzna[r0,a1,r1]

9. Paraboloida obrotowa

Definicja: Miejsce geometryczne tych wszystkich punktów przestrzeni, dla których odległość od ustalonego punktu o wektorze wodzącym r2 i zadanej płaszczyzny jest taka sama.

r2={0,0,4};

r

chk=odlPunktPlaszczyzna[r,a1,r1]

paraboloida=odlPunktPlaszczyzna[r,a1,r1]==Sqrt[(r-r2).(r-r2)]

plotparaboloida=ContourPlot3D[Evaluate[paraboloida],{x,-10,10},{y,-10,10},{z,-1,10},AxesLabel->{"x","y","z"}]

Pi1n=a1.(r-r1)==0;

sz=Solve[Pi1n,z];

ognisko3D=ListPointPlot3D[{r2},PlotStyle->{Red,PointSize[Large]}]

plotPI1n=Plot3D[z/.sz[[1]],{x,-10,10},{y,-10,10},AxesLabel->{"x","y","z"}]

Show[plotparaboloida,plotPI1n,ognisko3D]