Azzera filtri
Azzera filtri

How to create randomly placed points within a 3D rectangle?

12 visualizzazioni (ultimi 30 giorni)
I want to create random points (solid spheres which i can change the radius) inside a 3D rectangular box, which i can change the dimensions of the box later. I found this code for a randomly place points inside a function and i could like to know if anyone knows how to change it to a rectangle.
% pick plenty of random points
x = -1 + (1+1)*rand(1,500); %x-coordinate of a point
y = -0.6 + (0.6+0.6)*rand(1,500); %y-coordinate of a point
z = -0.8 + (1.2+0.8)*rand(1,500); %z-coordinate of a point
%function defining a heart
F1=(((x.^2) + (9/4).*(y.^2) + z.^2-1).^3+(-x.^2 .* z.^3 -(9/80).*y.^2.*z.^3));
ind = F1<0; % index for points inside the isosurface
x = x(ind); x = x(1:100); % pick 100 of those points
y = y(ind); y = y(1:100);
z = z(ind); z = z(1:100);
scatter3(x, y, z, 'MarkerFaceColor','b','MarkerEdgeColor','b');
hold off

Risposta accettata

Alan Stevens
Alan Stevens il 28 Ago 2020
Do you mean something like this:
% length, width and height of box
L = 3; W = 2; H = 1;
% pick plenty of random points
x = L*rand(1,100); %x-coordinate of a point
y = W*rand(1,100); %y-coordinate of a point
z = H*rand(1,100); %z-coordinate of a point
scatter3(x, y, z, 'MarkerFaceColor','b','MarkerEdgeColor','b');
box
  3 Commenti
Alan Stevens
Alan Stevens il 28 Ago 2020
Yes, try:
% length, width and height of box
L = 3; W = 2; H = 1;
% pick plenty of random points
x = L*rand(1,100); %x-coordinate of a point
y = W*rand(1,100); %y-coordinate of a point
z = H*rand(1,100); %z-coordinate of a point
blob = 10;
plot3(x, y, z,'o', 'MarkerFaceColor','b','MarkerEdgeColor','b','MarkerSize',blob);
box
This sets the size of all the points to be the same.
If you want some to be set at different values you would need to plot them with seperate plot commands.

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by