公告:本站正式转型为非交互式静态网站!
转型:本站将通过笔记和博客的形式继续为大家服务,关于 Mathematica 问答服务请移步至QQ群:365716997
联系:如有问题请联系QQ群管理员,或发送邮件至:lixuan.xyz@qq.com。
感谢:最后非常感谢大家多年来的支持与帮助!
参考《互联网跟帖评论服务管理规定》《中华人民共和国网络安全法》《网络信息内容生态治理规定》《互联网用户账号信息管理规定》

—— 2022-11-27

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

语法高亮:在编辑器中点击

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

支持LaTex数学公式
行内公式标识符:\$ 或“$\backslash ($”+“$\backslash )$”,
行间公式标识符:\$\$ 或 “$\backslash [$”+“$\backslash ]$”

社区建议QQ群:365716997

分类

–1 投票
2.3k 浏览

我最终是想在一个矩形区域生成若干满足一定约束条件的任意四边形,前面的帖子第二条过于复杂,我简化一下:

具体要求如下:

在100*100的矩形区域内生成n个满足如下条件的四边形

1.四边形出现的位置(可以按照四边形的形心或任一顶点的坐标作为四边形的位置)在矩形区域均匀随机分布;

2.四边形四个角最大角不超过150度,最小角不小于30度,每个四边形的周长为C,C服从在[5,15]区间的均值为10方差为5的正态分布,每个四边形的每条边的长度最小不小于0.3C,最大不大于0.7C。

(看到差评很多:决定改变思路,通过控制随机半径和相邻半径间夹角范围来实现,c服从正态分布为每个随机多边形的参数,每个随机多边形半径在0.3c-c之间,相邻幅角在30度-60度之间,希望这次可以成功)

3.生成的四边形互不相交互不包含;且所有四边形要在矩形区域内,不能与矩形边界相交;

4.如果可以的话,定义一个参数d,调节任意两个四边形之间的最小距离(就是构成两个四边形上的两组点集之间的最小距离);

附上先前的代码:

(disk = Reap[
     region = BoundaryDiscretizeGraphics[Rectangle[{0, 0}, {20, 10}]];
     Do[p = RandomPoint[region];
      rad = 
       If[(tem = Abs[SignedRegionDistance[region, p]]) < .2, tem, 
        RandomReal[{.2, 
          Min[{tem, Min@(Subtract @@ RegionBounds@region)/40}]}]];
      region = 
       RegionDifference[region, DiscretizeRegion@Sow[Disk[p, rad]]], 
      200]][[-1, -1]];)
diskP = Polygon[(random = RandomPoint[#, 4])[[
      Last@FindShortestTour[random]]]] & /@ Circle @@@ disk;
Graphics[Transpose[{RandomColor[
    Hue[1/3, NormalDistribution[.6, .2], NormalDistribution[.6, .07]],
     diskP // Length], diskP}]]

最终应该达到这种效果,大家的批评意见很多,可是这个问题不同于圆的问题,确实不好拆分为小问题

分类:绘图 | 用户: mma-2-2-2 (1.3k 分)
修改于 用户:mma-2-2-2
提点建议。虽然我没扣分,但是我觉得原因大概是要求太多太复杂了,而且是在完全没有框架的基础上,想完整的解决很耗时间,其他来看论坛的人也难以从这种有特别具体需求的问题中受益。要是把那些要求单个拿出来(比如,如何生成一个满足什么样条件的四边形)多问几个问题应该会好一些,要是有自己的尝试应该会更好。
赞!!!!!!!!!!!!
先前的程序代码应该附上啊。。我认为你这里写得很清晰了,都读下来也不费力,不像上次的。但还是字数太多,因为你要求做的太多了,没有做到精简。
直接求程序设计有点过分了吧。。。也不给初始思路和初步代码什么的
条件2中的边长限制有问题,改一下吧。最小边不小于0.3C,那么周长最小为1.2C>C,矛盾。

登录 或者 注册 后回答这个问题。

...