资源简介
Matlab 下设置泰森多边形(voronoi)边界,并计算多边形面积
代码片段和文件信息
function [xc yc] = BoundaryIntersect_UnitSquare(P1 P2 Mode)
global LeftEdge RightEdge BtmEdge TopEdge
x1 = P1(:1);
y1 = P1(:2);
x2 = P2(:1);
y2 = P2(:2);
dx = x1 - x2;
dy = y1 - y2;
bNonsingular = (dx~=0);
bSingular = ~bNonsingular;
switch Mode
case 1
% One point outside of square while the other inside
% Non-singular case
if (bNonsingular) % Regular equation of line
m = dy./dx;
% Calculate square intersect
yc1 = m.*(LeftEdge-x1) + y1;
yc2 = m.*(RightEdge-x1) + y1;
xc1 = 1./m.*(BtmEdge-y1) + x1;
xc2 = 1./m.*(TopEdge-y1) + x1;
ptIntersect = [];
% Check for valid intersects
if (yc1 >= BtmEdge && yc1 <= TopEdge) ptIntersect = [ptIntersect; [LeftEdge yc1]]; end
if (yc2 >= BtmEdge && yc2 <= TopEdge) ptIntersect = [ptIntersect; [RightEdge yc2]]; end
if (xc1 >= LeftEdge && xc1 <= RightEdge) ptIntersect = [ptIntersect; [xc1 BtmEdge]]; end
if (xc2 >= LeftEdge && xc2 <= RightEdge) ptIntersect = [ptIntersect; [xc2 TopEdge]]; end
intersect1 = ptIntersect(1:);
intersect2 = ptIntersect(2:);
end
% Singular case
if (bSingular) % vertical line
% Calculate square intersect
intersect1 = [x1 TopEdge];
intersect2 = [x1 BtmEdge];
end
% The dot product of (p1-intersect).(p2-intersect) is negative if the intersection point
% lie between two points as the two vectors take on different direction
% Due to the point configuration only one “intersect“ test is
% needed (the other one is logial compliment)
v1 = sum((P1-intersect1).*(P2-intersect1)2);
% v2 = sum((P1-intersect2).*(P2-intersect2)2);
v1neg = v1<0;
v2neg = ~v1neg;
xc(v1neg) = intersect1(v1neg1);
xc(v2neg) = intersect2(v2neg1);
yc(v1neg) = intersect1(v1neg2);
yc(v2neg) = intersect2(v2neg2);
case 2
% Both points are outside of unit circle
if (bNonsingular) % Regular equation of line
m = dy./dx;
% Calculate square intersect
yc1 = m.*(LeftEdge-x1) + y1;
yc2 = m.*(RightEdge-x1) + y1;
xc1 = 1./m.*(BtmEdge-y1) + x1;
xc2 = 1./m.*(TopEdge-y1) + x1;
ptIntersect = [];
% Check for valid intersects
if (yc1 >= BtmEdge && yc1 <= TopEdge) ptIntersect = [ptIntersect; [LeftEdge yc1]]; end
if (yc2 >= BtmEdge && yc2 <= TopEdge) ptIntersect = [ptIntersect; [RightEdge yc2]]; end
if (xc1 >= LeftEd
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4355 2016-01-09 19:44 BoundaryIntersect_UnitSquare.m
文件 7571 2016-01-09 22:31 BoundVoronoin_UnitSquare.m
文件 6945 2016-01-09 22:31 SquareBV.m
文件 2632 2016-01-09 19:45 CalcArea_UnitSquare.m
----------- --------- ---------- ----- ----
21503 4
相关资源
- QPSKMATLAB仿真程序
- Matlab实现读取二进制数据绘制波形,
- matlab2014b
- gabormatlab
- gamma校正matlab
- 回馈整流MATLAB仿真
- matlab提取音频特征
- 数据预处理 剔除奇异点 matlab程序
- MATLAB+遗传算法+多车有容量约束VRP
- MATLAB遗传算法VRP
- 基于Matlab直线检测
- 灰色神经网络Matlab代码
- MATLAB课程设计——数字带通FIR滤波器
- Turbo码的编解码的Matlab及VC 源代码
- 通信原理中16QAM信号 MATLAB程序
- matlab实现JPEG
- 基于MATLAB的机器人避障程序
- 将图像放大或缩小的matlab代码
- 复杂网络中GN,FN网络的matlab实现
- IMM交互多模程序MATLAB
- MATLAB实现图像的Arnold置乱
- matlab实现的维特比译码
- 基于Gabor滤波指纹识别算法matlab完整程
- PTS matlab 代碼源
- matlab源程序 条状图的绘制
- 基于彩虹编码的伪彩色增强matlab代码
- MATLAB用遗传算法GA)车间调度
- 基于matlab的指纹识别系统(源码)
- 使用matlab对采样数据文本进行fft变换
- OFDM MATLAB源码
评论
共有 条评论