Geometrija v Mathematici

Dokazali bomo, da se nosilke višin v trikotniku sekajo v eni točki.

Točko v ravnini predstavimo izrazom tocka[x,y], premico izrazimo z izrazom premica[a,b,c], ki predstavlja premico, podano z enačbo a x + b y == c. Daljico s krajiščema ((Subscript[x, 1]),(Subscript[y, 1]))  in ((Subscript[x, 2]),(Subscript[y, 2])) predstavimo s simbolnim izrazom daljica[{(Subscript[x, 1]),(Subscript[y, 1])}, {(Subscript[x, 2]),(Subscript[y, 2])}].

Rišemo geometrijske konstrukcije

presecisce[premica[1,1,1],premica[2,3,5]]

Funkcija, ki nariše sliko geometrijske konstrukcije:

Solve[{a*x+b*y==c},{y}]

ClearAll[narisi]
narisi[tocka[x_,y_]]:={Red,Point[{x,y}]}
narisi[premica[a_,b_,c_]]:=Line[{{-100,((c+100*a)/b)},{100,((c-100*a)/b)}}]
narisi[daljica[p_,q_]]:={Green,Line[{p,q}]}
narisi[trikotnik[p_,q_,r_]]:={Blue,Line[{p,q,r,p}]}
narisi[s_List]:=Map[narisi,s]

ClearAll[slika]
slika[s_List]:=Graphics[narisi[s],Axes->True,PlotRange->{{-10,10},{-10,10}}]

slika[{premica[1,2,3],premica[1,1,-1],tocka[2,5],daljica[{-1,-2},{1,3}],trikotnik[{0,0},{2,1},{-3,5}]}]

Konstrukcije premic in točk

tocka[x,y]/.First@Solve[{a*x+b*y==c,d*x+e*y==f},{x,y}]

ClearAll[tocka]
tocka[premica[a_,b_,c_], premica[d_,e_,f_]]:= tocka[-((c e-b f)/(b d-a e)),-((-c d+a f)/(b d-a e))]

premica[a,b,c]/.First@Solve[{a*x1+b*y1==c,a*x2+b*y2==c,c==x2*y1-x1*y2},{a,b,c}]

ClearAll[premica]
premica[tocka[x1_,y1_],tocka[x2_,y2_]]:=premica[y1-y2,-x1+x2,x2 y1-x1 y2]

premica[tocka[1,2],tocka[2,4]]

Manipulate[slika[{tocka[u,v],tocka[1,3],premica[tocka[u,v],tocka[1,3]]}],{u,-5,5},{v,-5,5}]

ClearAll[pravokotnica]
pravokotnica[premica[a_,b_,c_],tocka[x_,y_]]:=premica[-b,a,-b*x+a*y]

pravokotnica[premica[1,2,3],tocka[-2,5]]

Višine se sekajo v eni točki

Oglišča trikotnika:

p=tocka[x1,y1]
q=tocka[x2,y2]
r=tocka[x3,y3]

Enačba nosilke prve višine:

pq =premica[p,q]

qr=premica[q,r]

rp=premica[r,p]

v1=pravokotnica[pq,r]

v2=pravokotnica[qr,p]

v3=pravokotnica[rp,q]

Višinska točka:

h=tocka[v1,v2]

ClearAll[pripadaQ]
pripadaQ[tocka[x_,y_],premica[a_,b_,c_]]:=(a*x+b*y==c)

pripadaQ[h,v3]//Simplify