%  lengthRatioConstraint - Affine transform constraints given a length ratio.
%
%  Function calculates centre and radius of the constraint
%  circle in alpha-beta space generated by having a known
%  lenth ratio between two non-parallel line segemnts in
%  an affine image
%
%  Usage:  [c, r] = lengthRatioConstraint(p11, p12, p21, p22, s) 
%
%  Where:  p11, p12 and p21, p22 are four points defining two line
%                  segments having a known length ratio.
%          s is the known length ratio
%          c is the 2D coordinate of the centre of the constraint circle.
%          r is the radius of the centre of the constraint circle.

%  Peter Kovesi
%  School of Computer Science & Software Engineering
%  The University of Western Australia
%  pk @ csse uwa edu au
%  http://www.csse.uwa.edu.au/~pk
%
%  April 2000
%
%  Equations from Liebowitz and Zisserman 

function [c, r] = lengthRatioConstraint(p11, p12, p21, p22, s) 

dp1 = p12-p11; dx1 = dp1(1); dy1 = dp1(2);
dp2 = p22-p21; dx2 = dp2(1); dy2 = dp2(2);

c = [(dx1*dy1 - s^2*dx2*dy2)/(dy1^2 - s^2*dy2^2), 0];

r = abs( s*(dx2*dy1 - dx1*dy2)/(dy1^2 - s^2*dy2^2) );
