polyshape
函数可创建由二维顶点定义的多边形,并返回具有描述其顶点、实心区域和孔的各种属性的 polyshape
对象。例如,pgon = polyshape([0 0 1 1],[1 0 0 1])
将创建由四个点 (0,1)、(0,0)、(1,0) 和 (1,1) 定义的实心正方形。
pgon = polyshape(
从由 x 坐标向量和对应的 y 坐标向量定义的二维顶点创建 x
,y
)polyshape
。x
和 y
的长度必须相同,且至少要有三个元素。
pgon = polyshape([0 0 1 1],[1 0 0 1]); figure(4) plot(pgon)
nsidedpoly 正多边形
pgon = nsidedpoly(n,Name,Value)
pgon1 = nsidedpoly(6); pgon2 = nsidedpoly(6,'Center',[5 0],'SideLength',3); figure(4) plot([pgon1 pgon2]) axis equal
polyarea 计算多边形的面积
L = linspace(0,2.*pi,100); xv = 1.2*cos(L)'; yv = 1.2*sin(L)'; xx=1.1*cos(L)'; yy=1.1*sin(L)'; AA=polyshape(xv,yv); AAA=polyshape(xx,yy); plot(AA); hold on; plot(AAA); title(['Area = ' num2str(A)]) axis image A = polyarea(xv,yv) %计算面积
inpolygon 位于多边形区域边缘内部或边缘上的点
in = inpolygon(xq,yq,xv,yv) 返回 in
,以指明 xq
和 yq
所指定的查询点是在 xv
和 yv
定义的多边形区域的边缘内部还是在边缘上
[
还返回 in
,on
] = inpolygon(xq
,yq
,xv
,yv
)on
以指明查询点是否位于多边形区域的边缘。
clc,clear all; L = linspace(0,2.*pi,100); xv1 = 1.2*cos(L)'; yv1 = 1.2*sin(L)'; xv2=0.4*cos(L)'; yv2=0.4*sin(L)'; Round1=polyshape(xv1,yv1); Round2=polyshape(xv2,yv2); Round1Area = polyarea(xv1,yv1) Round2Area = polyarea(xv2,yv2) rng default %恢复matlab启动时默认的全局随机流 xq = randn(250,1); %随机生成250个正态分布点 yq = randn(250,1); %随机生成250个正态分布点 in = inpolygon(xq,yq,xv1,yv1); % numel(xq(in))查看在几何体内部的数量 figure(4) plot(Round1); %画第一个圆 hold on; plot(Round2); %画第二个圆 plot(xq(in),yq(in),'r+') % 标记在内部的点 plot(xq(~in),yq(~in),'bo') % 标记在外部的点 hold off title(['Area1,Area2 = ' num2str(Round1Area),num2str(Round2Area)]) axis equal axis image
扫描二维码关注公众号,回复:
3155863 查看本文章
axes('xlim',[0 10],'ylim',[0 10]) a=[1 1 2 2]; b=[3 4 5 6]; c=[1 1 3 3]; figure rectangle('position',a,'EdgeColor', 'r'); rectangle('position',b,'EdgeColor', 'b'); rectangle('position',c,'EdgeColor', 'k'); area_ab = rectint(a,b) area_ac = rectint(a,c)
area = rectint(A,B)
返回位置向量 A
和 B
指定的矩形的交叉区域。
如果 A
和 B
分别指定一个矩形,则输出 area
为标量。
A
和 B
还可以是矩阵,其中每行是一个位置向量。area
是一个矩阵,为 B
指定的所有矩形提供 A
指定的所有矩阵的交叉区域。即,如果 A
是 n
×4
并且 B
是 m
×4
,则 area
是 n
×m
矩阵,其中 area(i,j)
是 A
的第 i
行和 B
的第 j
行指定的矩形的交叉区域。