我使用以下代码在MATLAB中创建了一个圆圈。 我需要在3D空间中找到圆圈内的点
radius = 5;
theta=linspace(0,2*pi);
rho=ones(1,100).*radius;
[x,z]=pol2cart(theta,rho);
y=center(2)*ones(1,length(x))
fill3(x,y,z,'yellow')
如何在此圈内找到笛卡尔坐标坐标?
答案 0 :(得分:1)
不确定我是否理解你的问题。显然圆圈内有无限点,所以我想你要检查一个点(或一组点)是否在里面。如果您遍历一个点列表,那些符合以下条件的人就在内部(或在圆圈的周边):
norm([xi,zi]) <= radius
yi = 0 (same plane)
这是你要问的吗?
编辑:你可以在没有循环的matlab中快速完成。让我们想象你有x = [1 2 3]和z = [4 5 6]。要检查所有组合,您可以将repmat
用于x和z&#39; (横向)获得:xr = [1 2 3; 1 2 3; 1 2 3]和zr = [4 4 4; 5 5 5; 6 6 6]。因此,您有2个矩阵,其中包含所有可能点的坐标。现在,您可以将范数计算为:N = sqrt(xr.^2+zr.^2)
。所有i,j
与Nij <= radius
都在你的圈内(考虑到你的所有x和z都是&lt; =当然是半径)