function [multi_outer_points, multi_inner_points] = multi_polygonFit(multi_points, w)
num_lines = length(multi_points);
multi_outer_points = cell(1, num_lines);
multi_inner_points = cell(1, num_lines);
for j = 1:num_lines
points = multi_points{j};
n = size(points, 1);
outer_points = zeros(n, 2);
inner_points = zeros(n, 2);
for i = 1:n
curr_point = points(i, :);
if i == 1
prev_point = points(n, :);
else
prev_point = points(i-1, :);
end
if i == n
next_point = points(1, :);
else
next_point = points(i+1, :);
end
% 对于第一个和最后一个点,只考虑一个方向向量
if i == 1
dir_vec = next_point - curr_point;
elseif i == n
dir_vec = curr_point - prev_point;
else
% 对于其他点,计算前一个方向向量和后一个方向向量
dir_vec_prev = curr_point - prev_point;
dir_vec_next = next_point - curr_point;
% 使用平均法向量
dir_vec = (dir_vec_prev + dir_vec_next) / 2;
end
% 计算法向量
normal_vec = [-dir_vec(2), dir_vec(1)];
% 单位化法向量
normal_vec = normal_vec / norm(normal_vec);
% 计算外部和内部点
outer_points(i, :) = curr_point + w/2 * normal_vec;
inner_points(i, :) = curr_point - w/2 * normal_vec;
end
multi_outer_points{j} = outer_points;
multi_inner_points{j} = inner_points;
end
end
matlab实现计亩,多边形面积计算,相交面积计算
需积分: 5 13 浏览量
2023-09-20
16:29:41
上传
评论 1
收藏 5KB RAR 举报
陆Vision
- 粉丝: 55
- 资源: 4
最新资源
- U8Cloud常见开发的示例
- AT32与Sxx32/Gx32替换对照表
- STM32VET6单片机+XC3S250E(FPGA)+AD9708 DDS信号发生器MCU+FPGA源码+PDF硬件设计原理图
- SCIPOptSuite-9.0.0-win64-VS15.exe
- GIS10.4补丁文件
- fdgsfdgfdsgsf
- 基于CodeMirror5实现的mybatis+sql提示扩展功能,主要是用于在线设计开发场景中的动态sql部分.zip
- 计算机毕业设计-aSP.NET某中学学生成绩管理系统的设计(源代码+)-毕设源码实例.zip
- springboot集成mybatis动态sql.zip
- mybatis中的动态sql, 涉及 where trim set if foreach等
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈