(参考)
LP:matrix([0,0,1]);
LQ:matrix([1,1,1]);
SP:matrix([0,0,1]);
SQ:matrix([sqrt((LP[1,1]-LQ[1,1])^2+(LP[1,2]-LQ[1,2])^2),0,1]);
A:matrix(
[LP[1,1],-LP[1,2],1,0],
[LP[1,2],LP[1,1],0,1],
[LQ[1,1],-LQ[1,2],1,0],
[LQ[1,2],LQ[1,1],0,1]
);
K:invert(A).transpose(matrix([SP[1,1],SP[1,2],SQ[1,1],SQ[1,2]]));
T:matrix(
[K[1,1],-K[2,1],K[3,1]],
[K[2,1],K[1,1],K[4,1]],
[0,0,1]
);
IN:matrix([1,0,1]);
SP1:T.transpose(IN);
OT:transpose(invert(T).transpose(matrix([SP1[1,1],0,1])));