0001
0002
0003
0004
0005 function [Pair,s,coplanar] = zClassifyPair(N1,N2,CL,Exemplar,Force,Verbose)
0006
0007 if nargin < 5,
0008 Force = 0;
0009 end
0010
0011 if nargin < 6,
0012 Verbose = 1;
0013 end
0014
0015 if nargin < 3,
0016 CL = zClassLimits;
0017 end
0018
0019 if nargin < 4,
0020 if exist('PairExemplars.mat','file') > 0,
0021 load('PairExemplars','Exemplar');
0022 else
0023 Exemplar = [];
0024 end
0025 end
0026
0027
0028
0029
0030
0031 paircode = 4*(N2.Code-1) + N1.Code;
0032
0033 if Force == 0,
0034 switch paircode
0035 case {2, 3, 4, 8, 10, 12},
0036 M1 = N2;
0037 M2 = N1;
0038 s = -1;
0039 otherwise
0040 M1 = N1;
0041 M2 = N2;
0042 s = 1;
0043 end
0044 else
0045 M1 = N1;
0046 M2 = N2;
0047 s = 1;
0048 end
0049
0050 sh = (M2.Fit(1,:)-M1.Fit(1,:)) * M1.Rot;
0051
0052
0053
0054 coplanar = 0;
0055
0056 if (abs(sh(3)) < 5) || (Force > 0)
0057
0058 Pair = zAnalyzePair(M1,M2,CL,Exemplar,sh,Verbose);
0059
0060 coplanar = Pair.Coplanar;
0061
0062 if (abs(Pair.Class) >= 30) && (M1.Code == M2.Code) && (Force == 0),
0063 M2 = N1;
0064 M1 = N2;
0065 s = -1;
0066 sh2 = (M2.Fit(1,:)-M1.Fit(1,:)) * M1.Rot;
0067 Pair2 = zAnalyzePair(M1,M2,CL,Exemplar,sh2,Verbose);
0068 if fix(abs(Pair2.Class)) ~= 30,
0069 Pair = Pair2;
0070 else
0071 Pair.Class = Pair2.Class;
0072 s = 1;
0073 end
0074 end
0075
0076 if (fix(abs(Pair.Edge)) == 30) && (Force == 0),
0077 Pair = [];
0078 end
0079
0080 else
0081 Pair = [];
0082 end