gpt4 book ai didi

Matlab,生成并绘制分布在三角形内的点云

转载 作者:太空宇宙 更新时间:2023-11-03 19:31:53 24 4
gpt4 key购买 nike

我正在尝试生成(均匀)分布在三角形内的二维点云。到目前为止,我已经取得了以下成就:

Matlab plot

我使用的代码是这样的:

N = 1000;
X = -10:0.1:10;
for i=1:N
j = ceil(rand() * length(X));
x_i = X(j);
y_i = (10 - abs(x_i)) * rand;

E(:, i) = [x_i y_i];
end

但是,从左角和右角可以清楚地看到,点分布不均匀。我怎样才能改善这个结果?我也一直在尝试寻找不同的形状,但没有成功。

最佳答案

您应该首先问自己,什么会使三角形内的点均匀分布。

长话短说,给定三角形的所有三个顶点,您需要像这样转换两个均匀分布的随机值:

N = 1000;                    % # Number of points
V = [-10, 0; 0, 10; 10, 0]; % # Triangle vertices, pairs of (x, y)
t = sqrt(rand(N, 1));
s = rand(N, 1);
P = (1 - t) * V(1, :) + bsxfun(@times, ((1 - s) * V(2, :) + s * V(3, :)), t);

这将产生一组均匀分布在指定三角形内的点:

scatter(P(:, 1), P(:, 2), '.')

enter image description here

请注意,此解决方案不涉及对随机数的重复条件操作,因此不会陷入死循环。

要进一步阅读,请查看 this article .

关于Matlab,生成并绘制分布在三角形内的点云,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14021381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com