如何在 MATLAB 中找到球体与圆柱体相交的点?
How to find points inside, where sphere intersects with cylinder in MATLAB?
我正在尝试识别位于球体和圆柱体联合内部的球体点,我在圆柱体侧面生成了随机点,如下所示
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);
结果如下
我需要找到与圆柱体相交的球体点以及与球体相交的圆柱体点。
是否有任何通用方法来识别不同体积交点内的点??
谁能帮帮我?提前致谢,
马努
显然,您有一个圆心为 (0, 0, 0) 且半径为 10 的球体。要检查圆柱体的点是否在球体中,您可以使用:
cylinder_in_sphere = (x.^2 + y.^2 + z.^2) < 100
您的圆柱体的半径为 3,高度为 50,因此要检查球体的点是否在圆柱体中,您可以使用:
sphere_in_cylinder = ((points_x.^2 + points_y.^2) < 9) & (points_z >= 0) & (points_z < 50)
请注意,在这种特殊情况下 points_z < 50
始终满足,因此您可以在这种特殊情况下将其删除。
我正在尝试识别位于球体和圆柱体联合内部的球体点,我在圆柱体侧面生成了随机点,如下所示
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);
结果如下
我需要找到与圆柱体相交的球体点以及与球体相交的圆柱体点。
是否有任何通用方法来识别不同体积交点内的点??
谁能帮帮我?提前致谢, 马努
显然,您有一个圆心为 (0, 0, 0) 且半径为 10 的球体。要检查圆柱体的点是否在球体中,您可以使用:
cylinder_in_sphere = (x.^2 + y.^2 + z.^2) < 100
您的圆柱体的半径为 3,高度为 50,因此要检查球体的点是否在圆柱体中,您可以使用:
sphere_in_cylinder = ((points_x.^2 + points_y.^2) < 9) & (points_z >= 0) & (points_z < 50)
请注意,在这种特殊情况下 points_z < 50
始终满足,因此您可以在这种特殊情况下将其删除。