?? pythagoras.pl
字號(hào):
go:-
pythagoras(Ps),
cgJava(pythagoras,Ps).
pythagoras([P|Ps]):-
cgSquare(S),S^fill #=0,
S^x #=400,
S^y #=500,
S^width #=100,
rectToPolygon(S,P),
pythagoras(P,6,Ps,[]).
rectToPolygon(S,P):-
cgPolygon(P), P^n #= 4,
P^color #= lightGray,
P^point(0) #= S^leftTopPoint,
P^point(1) #= S^leftBottomPoint,
P^point(2) #= S^rightBottomPoint,
P^point(3) #= S^rightTopPoint.
pythagoras(P,N,Ps,PsR):-N=:=0,!,Ps=PsR.
pythagoras(P,N,Ps,PsR):-
Ps=[T,P2,P3|Ps1],
constrainTri(P,T),
newPL(P,T,P2),
newPR(P,T,P3),
N1 is N-1,
pythagoras(P2,N1,Ps1,Ps2),
pythagoras(P3,N1,Ps2,PsR).
constrainTri(P,T):-
cgTriangle(T),
T^color #= cyan,
T^x2 #= P^x(0),
T^y2 #= P^y(0),
T^x3 #= P^x(3),
T^y3 #= P^y(3),
T^x1 #= P^x(0) + P^x(3) - (P^x(0) + P^x(2))//2,
T^y1 #= P^y(0) + P^y(3) - (P^y(0) + P^y(2))//2.
newPL(P,T,PL):-
cgPolygon(PL),
PL^n #= 4,
PL^color #=lightGray,
PL^x(1) #= T^x1,
PL^y(1) #= T^y1,
PL^x(2) #= P^x(0),
PL^y(2) #= P^y(0),
PL^x(3) #= 2*P^x(0) - (P^x(2)+ P^x(0))//2,
PL^y(3) #= 2*P^y(0) - (P^y(2)+ P^y(0))//2,
PL^x(0) #= P^x(0) + P^x(3)- P^x(2),
PL^y(0) #= P^y(0) + P^y(3) - P^y(2).
newPR(P,T,PR):-
cgPolygon(PR),
PR^n #= 4,
PR^color #=orange,
PR^x(1) #= T^x1,
PR^y(1) #= T^y1,
PR^x(2) #= P^x(3),
PR^y(2) #= P^y(3),
PR^x(3) #= 2*P^x(3) - (P^x(2)+ P^x(0))//2,
PR^y(3) #= 2*P^y(3) - (P^y(2)+ P^y(0))//2,
PR^x(0) #= 2*P^x(3)- P^x(2),
PR^y(0) #= 2*P^y(3) - P^y(2).
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -