Analitička geometrija prostora
Presjek pravca i ravnine
- Ravnina je zadana u općem obliku \(Ax+By+Cz+D=0\), a pravac u vektorskom obliku \((x,y,z)=(x_0,y_0,z_0)+t\cdot(\alpha,\beta,\gamma)\).
U ovom slučaju presječna točka mora zadovoljavati sustav linearnih jednadžbi
odnosno u matričnom obliku
Ako se pravac i ravnina sijeku, tada promatrani sustav linearnih jednadžbi ima jedinstveno rješenje \((x,y,z,t)\) pri čemu su \((x,y,z)\) koordinate presječne točke, a \(t\) je vrijednost parametra za koji se presječna točka dobiva na zadanom pravcu.
- Ravnina je zadana u vektorskom obliku \((x,y,z)=(x_1,y_1,z_1)+u\cdot(a_1,a_2,a_3)+v\cdot(b_1,b_2,b_3)\) i pravac je zadan u vektorskom obliku \((x,y,z)=(x_0,y_0,z_0)+t\cdot(\alpha,\beta,\gamma)\).
U ovom slučaju presječna točka mora zadovoljavati sustav linearnih jednadžbi
odnosno u matričnom obliku
Ako se pravac i ravnina sijeku, tada promatrani sustav linearnih jednadžbi ima jedinstveno rješenje \((u,v,t)\) pri čemu \((u,v)\) daje vrijednosti parametara \(u\) i \(v\) za koje se presječna točka dobiva na zadanoj ravnini, a \(t\) je vrijednost parametra za koji se presječna točka dobiva na zadanom pravcu. Koordinate \((x,y,z)\) od presječne točke dobivamo uvrštavanjem dobivenih parametara u vektorsku jednadžbu ravnine ili vektorsku jednadžbu pravca.
Primjer 1
Odredite presjek pravca \(p\dotsc\frac{x+3}{-1}=\frac{y+2}{3}=\frac{z}{6}\) i ravnine \(x-2y+4z+12=0\).
clear pravac ravnina pravac.vektor = [-1 3 6]; pravac.tocka = [-3 -2 0]; ravnina = [1 -2 4 12]; A = [[ravnina(1:3); eye(3)] [0 -pravac.vektor]'] B = [-ravnina(4); pravac.tocka'] rj = A \ B; presjek = struct("tocka", rj(1:3)', "t", rj(4))
rješenje pomoću simboličkog računa
pkg load symbolic syms x y z t rj = solve([x+3 == -t, y+2 == 3*t, z == 6*t, x-2*y+4*z+12 == 0], x,y,z,t) [rj.x rj.y rj.z rj.t] double([rj.x rj.y rj.z rj.t])
Primjer 2
Odredite presjek pravca \(\vec{r}=(2,1,-1)+t\cdot(1,-1,0)\) i ravnine \(\vec{r}=(2,1,3)+u\cdot(1,0,0)+v\cdot(-1,1,2)\).
clear pravac ravnina pravac.vektor = [1 -1 0]; pravac.tocka = [2 1 -1]; ravnina.tocka = [2 1 3]; ravnina.vektorU = [1 0 0]; ravnina.vektorV = [-1 1 2]; A = [ravnina.vektorU' ravnina.vektorV' -pravac.vektor'] B = (pravac.tocka - ravnina.tocka)' rj = A \ B; prtoc = pravac.tocka + pravac.vektor .* repmat(rj(3), 1, 3); presjek = struct("u", rj(1), "v", rj(2), "t", rj(3), "tocka", prtoc)
rješenje pomoću simboličkog računa
syms u v rj = solve([x == 2+t, y == 1-t, z == -1, x == 2+u-v, y == 1+v, z == 3+2*v], x,y,z,u,v,t) tocka = [rj.x rj.y rj.z] double(tocka) parametri = [rj.u rj.v rj.t] double(parametri)
Implementacija funkcije za traženje presjeka pravca i ravnine
Sadržaj datoteke interPL.m
function presjek = interPL(ravnina, pravac) #{ interPL(ravnina, pravac) daje presjek ravnine i pravca. --------------------------------------------------------------------------------- pravac -> struct("tocka", [x1 y1 z1], "vektor", [sx sy sz]) ravnina -> [A B C D] na izlazu se vraca struktura koja sadrzi polja "tocka" -> presjek pravca i ravnine "t" -> parametar za koji se presjek dobiva iz parametarskih jednadžbi pravca --------------------------------------------------------------------------------- pravac -> struct("tocka", [x1 y1 z1], "vektor", [sx sy sz]) ravnina -> struct("tocka", [x2,y2,z2], "vektorU", [u1,u2,u3], "vektorV", [v1,v2,v3]) na izlazu se vraca struktura koja sadrzi polja "tocka" -> presjek pravca i ravnine "u" i "v" -> parametri za koji se presjek dobiva iz parametarskih jednadzbi ravnine "t" -> parametar za koji se presjek dobiva iz parametarskih jednadžbi pravca #} if !any(pravac.vektor) disp("Error: vektor smjera pravca je nulvektor"); return; endif if isstruct(ravnina) if !(any(ravnina.vektorU) & any(ravnina.vektorV)) disp("Error: vektori koji razapinju ravninu ne smiju biti nulvektori"); return; endif A = [ravnina.vektorU' ravnina.vektorV' -pravac.vektor']; B = (pravac.tocka - ravnina.tocka)'; r0 = rank(A(:,1:2)); r1 = rank(A); r2 = rank([A B]); if r0 != 2 disp("Error: vektori koji razapinju ravninu ne smiju biti kolinearni"); return; elseif r1 != r2 disp("pravac i ravnina su paralelni"); return; elseif r1 == 2 disp("pravac se nalazi u ravnini"); return; else rj = A \ B; prtoc = pravac.tocka + pravac.vektor .* repmat(rj(3), 1, 3); presjek = struct("u", rj(1), "v", rj(2), "t", rj(3), "tocka", prtoc); endif else if !any(ravnina(1:3)) disp("Error: normala ravnine je nulvektor"); return; endif A = [[ravnina(1:3); eye(3)] [0 -pravac.vektor]']; B = [-ravnina(4); pravac.tocka']; r1 = rank(A); r2 = rank([A B]); if r1 != r2 disp("pravac i ravnina su paralelni"); return; elseif r1 == 3 disp("pravac se nalazi u ravnini"); return; else rj = A \ B; presjek = struct("tocka", rj(1:3)', "t", rj(4)); endif endif endfunction
korištenje funkcije interPL
clear pravac ravnina pravac.vektor = [-1 3 6]; pravac.tocka = [-3 -2 0]; ravnina = [1 -2 4 12]; rj = interPL(ravnina,pravac) format rat rj clear pravac ravnina pravac.vektor = [1 -1 0]; pravac.tocka = [2 1 -1]; ravnina.tocka = [2 1 3]; ravnina.vektorU = [1 0 0]; ravnina.vektorV = [-1 1 2]; rj = interPL(ravnina,pravac) format short rj
Zadaci
-
Ispitajte jesu li točke \(A(1,2,3)\) i \(B(4,0,-5)\) s iste strane ravnine \(\Sigma\dotsc 2x-y+5z-1=0\). Odredite točku \(S\) u kojoj pravac \(AB\) siječe ravninu \(\Sigma\). Pripada li točka \(S\) dužini \(\overline{AB}\)?
-
Neka je \(\Pi\) ravnina koja prolazi kroz točke \(A(1,0,2)\), \(B(-1,4,3)\) i \(C(2,1,-1)\). Neka je \(p\) pravac koji je zadan kao presjek ravnina \(x-y+3z+8=0\) i \(-3x+4y+z-2=0\). Odredite kut između pravca \(p\) i ravnine \(\Pi\). Kut ispišite u stupnjevima i radijanima na 5 decimala. Također, kut ispišite u stupnjevima minutama i sekundama. Odredite opći oblik jednadžbe ravnine \(\Pi\) i parametarske jednadžbe pravca \(p\).
-
Zadana je ravnina \(\pi\dotsc 2x+y-z-13=0\) i točka \(M(1,2,3)\). Odredite ortogonalnu projekciju \(M'\) točke \(M\) na ravninu \(\pi\) i simetričnu točku \(M''\) od točke \(M\) s obzirom na ravninu \(\pi\). Odredite površinu trokuta \(M'M''G\) ako je \(G(0,-2,5)\).
-
Neka je \(\Pi\) ravnina koja prolazi točkama \(T_1(1,0,-1)\) i \(T_2(0,2,5)\) i okomita je na ravninu \(\Sigma\dotsc\frac{x}{-3}+\frac{y}{-6}+\frac{z}{1.2}=1\). Odredite udaljenost točke \(D(1,2,-3)\) od ravnine \(\Pi\).
-
Odredite udaljenost točke \(A(6,1,-5)\) od pravca \(p\dotsc\frac{x-2}{3}=\frac{y+4}{1}=\frac{z-2}{-1}\).
-
Napišite u Octavi funkciju
kutPL(u,v,mjera)
koja na izlazu vraća kut između ravnine s normalomu
i pravca s vektorom smjerav
u zadanoj mjeri.mjera
može bitideg
,rad
ilidms
. -
Napišite u Octavi funkciju
kutLL(u,v,mjera)
koja na izlazu vraća kut između pravaca s vektorima smjerovau
iv
u zadanoj mjeri.mjera
može bitideg
,rad
ilidms
. -
Napišite u Octavi funkciju
kutPP(u,v,mjera)
koja na izlazu vraća kut između ravnina s normalamau
iv
u zadanoj mjeri.mjera
može bitideg
,rad
ilidms
. -
Napišite u Octavi funkciju
ortosimPlane(rav, M)
koja na izlazu daje ortogonalnu projekciju točkeM
na ravninurav
i njezinu simetričnu točku s obzirom na tu ravninu. Ravnina može biti zadana u općem obliku ili s parametarskim jednadžbama. -
Napišite u Octavi funkciju
distPL(T0, pr)
koja računa udaljenost točkeT0
od pravcapr
. -
Napišite u Octavi funkciju
distPP(T0, rav)
koja računa udaljenost točkeT0
od ravninerav
. Ravnina može biti zadana u općem ili parametarskom obliku.