[matlab] 18.matlab 基础几何学

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 坐标向量定义的二维顶点创建 polyshapex 和 y 的长度必须相同,且至少要有三个元素。

pgon = polyshape([0 0 1 1],[1 0 0 1]);
figure(4)
plot(pgon)
polyshape 二维多边形构建

nsidedpoly 正多边形

pgon = nsidedpoly(n,Name,Value)

pgon1 = nsidedpoly(6);
pgon2 = nsidedpoly(6,'Center',[5 0],'SideLength',3);
figure(4)
plot([pgon1 pgon2])
axis equal
nsidedpoly(正多边形)

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)  %计算面积
polyarea 计算多边形面积

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)
rectint 矩形交叉区域

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 行指定的矩形的交叉区域。

猜你喜欢

转载自www.cnblogs.com/clemente/p/9637571.html