问题:给定一个非平行四边形,在内部随机一个点。
此问题只针对【凸多边形】
这个问题很有趣,上面一个问题是给定一个点,判断是否在四边形内, 这个问题正好是返过来
思路1, 随机一个位置, 判断是否在四边形内。不是的话就重新随机
答:这个方法好low
于是就有了思路2
思路2,取四个点的minX, maxX, 然后根据X, 求出这个X值在四条边上的点的位置(有可能相交, 有可能不相交,不相交的话就不考虑进去)
如图

这个时候再随机A和B之间就得到了Y值,和之前取出的X值就构成了一个点。 完成。 上代码
代码是lua写的
local pos1 = cc.p(200, 200)
local pos2 = cc.p(500, 200)
local pos3 = cc.p(450, 500)
local pos4 = cc.p(150, 500)
local minx = math.min(pos1.x, pos2.x, pos3.x, pos4.x)
local maxx = math.max(pos1.x, pos2.x, pos3.x, pos4.x)
local miny = math.min(pos1.y, pos2.y, pos3.y, pos4.y)
local maxy = math.max(pos1.y, pos2.y

本文探讨了如何在给定的凸四边形内部随机生成一个点。首先介绍了简单但效率较低的方法,即不断随机直到点位于四边形内,然后提出了更优的解决方案:确定X坐标后,根据X坐标找到对应边上的Y坐标,从而生成满足条件的点。提供的代码是用Lua实现的。
最低0.47元/天 解锁文章
5040

被折叠的 条评论
为什么被折叠?



