2017-11-15 10 views
0

내가 구와 실린더 모두의 조합 안에있는 영역의 점을 확인하는 것을 시도하고, 나는 다음과 같이 구 내부에 임의의 점을 실린더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); 

결과는

아래 I는 실린더와 실린더 포인트 교차로에 구형 포인트를 찾을 필요로 할 것이다 구와의 교차점.

다른 볼륨의 교집합 내에서 점을 식별하는 일반적인 방법이 있습니까 ??

아무도 도와 줄 수 있습니까? 미리 감사드립니다, 마누 분명히

답변

1

, 당신은 센터와 구가 (0, 0, 0) 구에있는 실린더의 포인트, 당신이 사용할 수 있는지 여부를 반경 (10)은 확인하려면 :

cylinder_in_sphere = (x.^2 + y.^2 + z.^2) < 100 

귀하의 실린더 그렇게 구의 지점은 실린더에 있는지 확인하기 위해 반경 3 (50)의 높이를 가지고, 당신은 사용할 수 있습니다 :이 특정 경우에 points_z < 50 그래서 항상 만족입니다

sphere_in_cylinder = ((points_x.^2 + points_y.^2) < 9) & (points_z >= 0) & (points_z < 50) 

주 이 특정 ca에서 제거 할 수 있습니다. se.

+0

답장을 보내 주셔서 대단히 감사합니다. 제대로 작동하고있다. – manoos