如何使用MATLAB在3D空间中找到圆内点的共同点?

时间:2017-09-22 05:12:27

标签: matlab

我使用以下代码在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')

如何在此圈内找到笛卡尔坐标坐标?

1 个答案:

答案 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,jNij <= radius都在你的圈内(考虑到你的所有x和z都是&lt; =当然是半径)