Two tripods in 3D

For reference see incontrastsRef.html.

function q = twoTripods3D(X1,X2,X3, varargin)
% 3D cube-like object

seti = varargin{end};
R = seti.rCD/2;

p = -4/8; % start position
l = 7/8; % length
w = 1/8; % width

pl = p+l;
pw = p+w;
s = l-w; % shift
% ps = p+s;

First Tripod

q1 = arm(R,X1,X2,X3,[p,pl,p,pw,p,pw]); % front bottom
q2 = arm(R,X1,X2,X3,[p,pw,pw,pl,p,pw]);
q3 = arm(R,X1,X2,X3,[p,pw,p,pw,pw,pl]);

% *Second Tripod*
q4 = arm(R,X1,X2,X3,[p,pl,p+s,pw+s,p+s,pw+s]); % back top (+s in x2 and +s in x3)
q5 = arm(R,X1,X2,X3,[p+s,pw+s,pw,pl,p+s,pw+s]);
q6 = arm(R,X1,X2,X3,[p+s,pw+s,p+s,pw+s,p,pl-w]);

q = q1 + q2 + q3 + q4 + q5 + q6;
q = double(q);
end

function res = arm(R,X1,X2,X3,lim)
% lim : vector of size 1 x 6 with limits for X1, X2 and X3
lim = R*lim;
res = ((lim(1) <= X1) & (X1 < lim(2)) & (lim(3) <= X2) & (X2 < lim(4)) & (lim(5) <= X3) & (X3 < lim(6)));
end