Hans123 - do you really need nested if-elseif blocks to change the extreme points? Wouldn't you just do them for x, y, and z seperately? Otherwise you might see this "skipping" depending upon which condition evaluates to true. For example,
if X<-Nx
X=Nx;
elseif X>Nx
X=-Nx;
if Y<-Ny
Y=Ny;
elseif Y>Ny
if the first condition evaluates to true i.e. X < -Nx then the code to check Y and Z will not be evaluated since they are nested within the elseif body. Instead try
if X<-Nx
X=Nx;
elseif X>Nx
X=-Nx;
end
if Y<-Ny
Y=Ny;
elseif Y>Ny
Y=-Ny;
end
if Z<-Nz
Z=Nz;
elseif Z>Nz
Z=-Nz;
end
Note how the above code is duplicated for x, y, and z. This might be okay for just three variables, but if you have more, you may want to use arrays to manage this.
bounds = [Nx Ny Nz];
values = [X Y Z];
for k = 1:length(bounds)
if values(k) < -bounds(k)
values(k) = bounds(k);
elseif values(k) > bounds(k)
values(k) = -bounds(k);
end
end
Best Answer