如何遍历任意三角形和任意四边形内的点

如何遍历任意三角形和任意四边形内的点

……

……

想要遍历任意三角形和任意四边形内的点,按照常理来说其实一件比较复杂的事情。

但好在有一个比较不错的办法,可以轻松的遍历任意三角形和任意四边形内的点。

先说三角形。

假如三角形的三个点的坐标为A(x1,y1),B(x2,y2),C(x3,y3)。

其实。

任意三角形内的点,都可以这样表示:

P(x,y)=α*A+β*B+γ*C

其中,α+β+γ=1。

没错。

三角形内的任何一个点P,都可以表示成上面的样子。

然后呢。

我们就可以开始来遍历了。

下面是遍历的伪代码。

for(α=0;α<1;α+=0.01){
    for(β=0;β<1-α;β+=0.01){
        γ=1-α-β;
        P(x,y)=α*A+β*B+γ*C;
    }
}

用这个方法,就可以对三角形遍历了。

而若是想要遍历更多的点,那么可以把0.01这个参数调小,反之调大。

如果想要遍历任意的四边形呢?

有一个简单的思路。

可以很直观的想象到。

任意一个四边形,都可以轻松的拆成两个三角形。

而这个时候,我们已经知道怎么遍历一个任意三角形内的点了,那么遍历两个三角形自然也不成问题。

不过。

我得在这里提一点。

如果将一个四边形拆分成两个三角形的话,那么这两个三角形的面积往往也是不同的,比如说有一个四边形可以拆分成面积为1和面积为3的两个三角形,而如果使用相同的参数0.01去遍历的话,面积为1的三角形会遍历n个点,而面积为3的三角形也会遍历n个点,也就是说,虽然面积大小不同,但是会遍历一样多的点。

或许你并不在意。

但是想象一个极端的情况。

假设。

一个四边形,可以拆分成面积为1的三角形和面积为10000的三角形。

如果你想要遍历这个四边形,并且把四边形拆分成两个三角形来遍历。

试想一下。

如果你把面积为1的点遍历了十万次,而面积为10000的三角形也遍历了十万次。

这是不是莫名有一种荒谬的感觉呢?

而这也是这个遍历方法的一个弊端所在。

所以在遍历任意四边形的时候,在将四边形拆分成两个三角形来遍历后,就需要对这两个三角形的遍历中的0.01的那个参数来进行合理的调整。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值