如何在具有多个“中心”的网格上执行此操作,因此,具有重合点,我只想计算一次?
最有效的方法是什么?
答案 0 :(得分:4)
要确定某个点P
是否属于半圆,我会考虑进行两部分测试:
P
的半径为R
,C
?P
是否在正确(即占用)的半平面上?第(1)部分很简单:比较(P_x-C_x)^2 + (P_y-C_y)^2
(在2d中,在3d中添加Z方向,当然)与R^2
(不要打扰平方根,需要时间并且不添加任何东西)。
第(2)部分几乎一样容易:定义向量b = B - C
,它将指向被占半平面的半圆一分为二。然后计算向量v = P - C
并将点积与b
一起使用。如果结果为正,则该点位于占用的半平面中,如果为负,则该点位于未占用的半位,如果为0,则该点落在分界线上。像往常一样,2d中的点积为v*b = v_x*b_x + v_y*b_y
。