Od tačke do stranice
% Napisati funkciju koja za tacku T(X,Y) unutar trougla % A(X1,Y1), B(X2,Y2), C(X3,Y3), racuna rastojanje tacke % T do nablize stranice zadatog trougla ABC.
% Predikat koji kvadrira argument. pow(X,Y) :- Y is X*X. % Predikat koji odredjuje rastojanje izmedju dve tacke. rastojanje(X1,Y1,X2,Y2,R) :- P is X2-X1, Q is Y2-Y1, pow(P,A), pow(Q,B), C is A+B, R is sqrt(C). % Predikat koji odredjuje minimum tri broja. min(X,Y,Z,M) :- Y>=X, Z>=X, M is X, !. min(X,Y,Z,M) :- X>=Y, Z>=Y, M is Y, !. min(X,Y,Z,M) :- Y>=Z, X>=Z, M is Z. % Predikat koji odredjuje povrsinu trougla pomocu Heronovog obrasca. povrsina(X1,Y1,X2,Y2,X3,Y3,P) :- rastojanje(X1,Y1,X2,Y2,A), rastojanje(X1,Y1,X3,Y3,B), rastojanje(X3,Y3,X2,Y2,C), Q is A+B+C, S is Q/2, P is sqrt(S*(S-A)*(S-B)*(S-C)). % Glavni predikat koji odredjuje minimalno % rastojanje tacke od stranica trougla. min_rast(X1,Y1,X2,Y2,X3,Y3,X,Y,R) :- povrsina(X1,Y1,X2,Y2,X,Y,P1), povrsina(X1,Y1,X,Y,X3,Y3,P2), povrsina(X,Y,X2,Y2,X3,Y3,P3), rastojanje(X1,Y1,X2,Y2,A1), rastojanje(X1,Y1,X3,Y3,A2), rastojanje(X3,Y3,X2,Y2,A3), R1 is 2*P1/A1, R2 is 2*P2/A2, R3 is 2*P3/A3, min(R1,R2,R3,R).
Test primeri: (Prokomentariši rešenja!)
?- min_rast(0,0,8,0,0,8,3,3,R). R = 1.4142135623730985 ?- min_rast(0,0,8,0,0,8,4,4,R). R = 0.0 ?- min_rast(0,0,8,0,0,8,5,5,R). R = 1.4142135623730985 ?- min_rast(0,0,8,0,0,-8,3,-3,R). R = 1.4142135623730985 ?- min_rast(2,2,10,2,2,10,5,5,R). R = 1.4142135623730985
Rešenje predložila: Isidora Slavković. Škola: Matematička gimnazija Kraljevo. Odeljenje: IV-7 (2018). Koordinator Ukop(č)avanja: Jovan Pavlović. Ilustracija: Kishio Suga [Japan] (b 1944) ~ 'Untitled', 1978. Wood, ink (30 x 50 x 2.5 cm).














