问题描述
我正在尝试解决分配多边形Q作为输入和输出多边形P的任务,以使Q的2D坐标点成为多边形P的中点。
也就是说,给定在平面q1 ... qk上有k个点的序列,找到一个序列p1 ... pk使得
-
q1是p1和p2的中点
-
q2是p2和p3的中点
-
...
-
qk是p1和pk的中点。
我在Matlab中编写了该函数,该函数处理奇数个k点的情况。 但是,对于偶数的k点,它不起作用。
function [P,FOUND] = InvertMidpoints(Q)
C=zeros(length(Q));
P=zeros(2,length(Q));
FOUND=false;
k=1;
x=[Q(1,:)]';
y=[Q(2,:)]';
if mod(length(Q),2)==0
disp('Did not solve for even number of points')
else
for i=1:(length(Q)-1)
C(i,k)=1/2;
C(i,k+1)=1/2;
k=k+1;
i=i+1;
end
C(length(Q),1)=1/2;
C(length(Q),length(Q))=1/2;
a=linsolve(C,x);
b=linsolve(C,y);
P(1,:)=a;
P(2,:)=b;
FOUND=true;
end
end
基本上,它用系数C矩阵求解线性方程。
我的教授为我提供了以下提示,但我确实没有得到它:
如果k为奇数且为,则矩阵C的秩始终为k 如果k为偶数,则将k − 1排名。因此,如果k为奇数,则可以构造上述矩阵并求解 问题。如果k为偶数,那么即使有解决方案,Matlab也将不允许您这样做。而是 您必须(a)丢掉一个方程式; (b)求解k中剩余的k − 1个方程组 未知数(c)检查找到的解是否满足最后一个方程式
请,您能告诉我这个提示的真正含义吗?谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)