How to generate uniformly distributed points inside the volume of frustrum with base radius R and tip radius r and with a height of h.

2 ビュー (過去 30 日間)
I want to generate points inside the volume of a frustrum which is at a certain height h1 from (0,0,0) and the axis of frustrum is parallel to z-axis.

採用された回答

Bruno Luong
Bruno Luong 2022 年 11 月 12 日
編集済み: Bruno Luong 2022 年 11 月 12 日
Here we go
r = 1;
R = 2; % must be > r
h = 3;
if R <= r
error('Non valid parameter')
end
Zmin = r*h/(R-r); % Position where the frustrum starts
Zmax = R*h/(R-r); % Position where the frustrum ends
N = 1e4; % Number of point
zr = (Zmin/Zmax).^3;
z = (zr + (1-zr)*rand(1,N)).^(1/3);
rho = R*sqrt(rand(1,N)).*z;
theta = (2*pi)*rand(1,N);
x = rho.*cos(theta);
y = rho.*sin(theta);
z = Zmax*(1-z);
scatter3(x,y,z,'.');
axis equal

その他の回答 (1 件)

Image Analyst
Image Analyst 2022 年 11 月 12 日
OK, but do you have a question? I'm sure you used
n = 10000; % Whatever. It's the number of points
x = 2*R*rand(n, 1)
y = 2*R*rand(n, 1);
z = h1 * rand(n, 1);
to generate uniformly distributed points in the rectangular volume. And then you probably threw out points outside the frustrum (truncated cone) volume by looking at each point's radius and the radius of the frustrum at that z level. But what is your question? Is this homework, or is there a real world use case for this?
  1 件のコメント
anuradha verma
anuradha verma 2022 年 11 月 12 日
sir it is a real world case i am considering aerial user in the region where the users are inside a frustrum.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeImage Processing Toolbox についてさらに検索

タグ

製品


リリース

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by