一个人翘了两天课做完的
中间做了一些作业
后续在周末完成论文与优化。。。
说白了就是填充。。。
感觉主要难点在于编程计算
充分利用了matlab的polyshape
环形线填充
主要使用polybuffer函数,这个函数原理就是求并集,然后就一层层算
但是运算速度是比较慢的
核心代码
while ~isempty(polyout.Vertices)%交集为空终止循环
polyout=polybuffer(polyshape(polyout.Vertices(1:end,1:2)),-m);
out(i+1).num=polyout.Vertices;
i=i+1;
end
判断当生成的点集为空时终止循环即可
平行线填充
这个用一次环形填充,得到的新的polyshape对象与从上到下等间距的平行线求交集利用bool运算函数
核心代码
for i=1:round((1/m)*round(abs(low(1,2))+upper(1,2)))
line(i).num=[low(1,1),low(1,2)+m*(i-1);upper(1,1),low(1,2)+m*(i-1)];
[inLine(i).num,outLine(i).num] = intersect(polyshape(area),line(i).num);
% plot(inLine1_2(i).num(:,1),inLine1_2(i).num(:,2),'b')%都涂蓝颜色太奇怪了。。
% plot(inLine1_2(i).num(:,1),inLine1_2(i).num(:,2),[mod(i,1),mod(i,2),mod(i,3)])
end
然后进行两次分组,因为得到的数据都是端点的xy坐标,中间的NaN表示断开
最后分别求每一组的连接长度
不同的组之间怎么连,这个我也不太懂,如果有会的还望点拨
总体来说没有涉及到太多的算法,但是运算的速度好慢啊,本人水平有限qwq,去复习考试+学习新东西了
刚刚想到怎么连了,可以分段左右依次连,因为固定了顺序了