📄 findreplace.m
字号:
function P=findreplace(Y,P1,P2,MaxL)
% 寻找替代点
P=P2;
YL=length(Y);
HYL=fix(YL/2);
k=1;
% 优先选择距离较小的,与被替代的点处于以基点为原点的坐标下相同象限中
for i=1:YL
if (sum(abs(Y(P1,:)-Y(i,:))) < MaxL ...
&& sign(Y(P2,1)-Y(P1,1))==sign(Y(i,1)-Y(P1,1))...
&& sign(Y(P2,2)-Y(P1,2))==sign(Y(i,2)-Y(P1,2))...
&& sign(Y(P2,3)-Y(P1,3))==sign(Y(i,3)-Y(P1,3)))
temp(k)=i;
k=k+1;
end
end
% 如没有满足上述条件的点不进行替代,否则取尽可能保持方向不变的点
% 此处采用取外积模最小的点
if k>1
P=temp(1);
PCross=norm(cross(Y(P1,:),Y(P,:)));
for i=2:k-1
PCross1=norm(cross(Y(P1,:),Y(temp(i),:)));
if PCross1 < PCross
P=temp(i);
PCross=PCross1;
end
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -