Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-07, 23:17   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
默认 平行四边形内的随机点

我有一个由2D中的4个点定义的4边凸多边形,我希望能够在其中生成随机点。

如果确实简化了问题,我可以将多边形限制为平行四边形,但是更通用的答案是首选。

生成随机点直到多边形中的某个点不起作用,因为这确实花费了很多时间。

回答:
答:如果您可以将输入限制为平行四边形,这确实很简单:
  1. 取0到1之间的两个随机数。我们分别称u和v 。
  2. 如果您的平行四边形由ABCD点定义,使得AB,BC,CD和DA为边,那么将您的点视为:

    p = A + (u * AB) + (v * AD)
其中AB是从A到B的向量,而AD是从A到D的向量。

B.现在,如果不能,则仍然可以使用重心坐标。对于四边形,重心坐标对应于4个坐标(a,b,c,d) ,从而a+b+c+d=1 。然后,可以用四边形描述四边形内的任何点P ,使得:

P = a A + b B + c C + d D 在您的情况下,您可以绘制4个随机数并对其进行归一化,以使它们的总和为1。这将为您提供一个分数。请注意,在这种情况下,点的分布将不均匀。

C.您还可以按照其他地方的建议,将四边形分解为两个三角形,并使用半平行四边形方法(即,作为平行四边形,但要加上条件u+v=1 )或三角形的重心坐标。但是,如果要均匀分布,则在一个三角形中具有一个点的概率必须等于三角形的面积除以四边形的面积。
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 19:49


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.