如何在MATLAB中找到球体与圆柱体相交的内部点?

如何在MATLAB中找到球体与圆柱体相交的内部点?,matlab,cartesian-coordinates,cylindrical,Matlab,Cartesian Coordinates,Cylindrical,我试图识别球体的点,它们位于球体和圆柱体的并集内,我在圆柱体的a侧生成了随机点,如下所示 pts = 3000; r= 3*((rand(pts,1)).^(1/3)); theta = 2*pi*rand(pts,1); x= r.*cos(theta); y= r.*sin(theta); z=50*rand(size(x)); 并在球体内生成随机点,如下所示 radius=10; rvals = (2)*rand(pts,1)-(1); elevation = asin(rvals);

我试图识别球体的点,它们位于球体和圆柱体的并集内,我在圆柱体的a侧生成了随机点,如下所示

pts = 3000;
r= 3*((rand(pts,1)).^(1/3));
theta = 2*pi*rand(pts,1);
x= r.*cos(theta);
y= r.*sin(theta);
z=50*rand(size(x));
并在球体内生成随机点,如下所示

radius=10;
rvals = (2)*rand(pts,1)-(1);
elevation = asin(rvals);
azimuth = 2*pi*rand(pts,1);
radii =(rand(pts,1).^(1/3))*radius;
[point_x,point_y,point_z] = sph2cart(azimuth,elevation,radii);
结果如下所示

我需要找到与圆柱体相交的球体点和与球体相交的圆柱体点

是否有任何通用方法来识别不同体积交叉点内的点

有人能帮我吗?提前感谢,,
Manu

显然,你有一个圆心为(0,0,0),半径为10的球体。要检查圆柱体的点是否在球体中,可以使用:

cylinder_in_sphere = (x.^2 + y.^2 + z.^2) < 100
sphere_in_cylinder = ((points_x.^2 + points_y.^2) < 9) & (points_z >= 0) & (points_z < 50)
球体中的圆柱体=(x.^2+y.^2+z.^2)<100 圆柱体的半径为3,高度为50,因此要检查球体的点是否在圆柱体中,可以使用:

cylinder_in_sphere = (x.^2 + y.^2 + z.^2) < 100
sphere_in_cylinder = ((points_x.^2 + points_y.^2) < 9) & (points_z >= 0) & (points_z < 50)
圆柱体中的球体=((点x.^2+点y.^2)<9)和(点z>=0)和(点z<50)
请注意,在这种特殊情况下,
points_z<50
始终令人满意,因此您可以在这种特殊情况下删除它。

非常感谢您的回复。它工作正常