Javascript 如何确定一个点是否位于另一个点的楔中
我有一张画布,画了两个点。 我必须从每个点画两条直线。然后我们必须检查点u是否看到点v,反之亦然 要知道,有必要查看点v是否位于点u的楔块中,反之亦然: - - 如果两个点位于每个点的楔块中,则在这两个点之间绘制一段 如何在画布javascript中实现这种楔形?两个向量的叉积。 使用直线(x1,y1,x2,y2)ax的叉积,向量(x2-x1,y2-y1)和从直线起点到点x,y(x-x1,y-y1)的向量将给出一个数字,如果该点在直线的左侧,则该数字为负数;如果该点沿直线,则该数字为零;如果该点在直线的右侧,则该数字为正数 因此,对于V视图中的点,它必须位于V左臂的右侧和V右臂的左侧 A V描述如下Javascript 如何确定一个点是否位于另一个点的楔中,javascript,canvas,Javascript,Canvas,我有一张画布,画了两个点。 我必须从每个点画两条直线。然后我们必须检查点u是否看到点v,反之亦然 要知道,有必要查看点v是否位于点u的楔块中,反之亦然: - - 如果两个点位于每个点的楔块中,则在这两个点之间绘制一段 如何在画布javascript中实现这种楔形?两个向量的叉积。 使用直线(x1,y1,x2,y2)ax的叉积,向量(x2-x1,y2-y1)和从直线起点到点x,y(x-x1,y-y1)的向量将给出一个数字,如果该点在直线的左侧,则该数字为负数;如果该点沿直线,则该数字为零;如果该点
const v = {
lx : ?, // point on left V
ly : ?,
x : ?, // point of V
y : ?,
rx : ?,
ry : ?,
}
如果V1
可以看到V2
其中V1
和V2
是如上所述的对象,则以下函数将返回true
function canSee(v1,v2){
const lx = v1.lx - v1.x; // get vector from center to left line end
const ly = v1.ly - v1.y;
const cx = v2.x - v1.x; // get vector from center to v2's center
const cy = v2.y - v1.y;
const rx = v1.rx - v1.x; // get vector from center to right line end
const ry = v1.ry - v1.y;
// get the cross product of left and right arms to the other V's center
const lc = lx * cy - ly * cx;
const rc = rx * cy - ry * cx;
return (lc > 0 && rc < 0); // return true if V2 center is right of
// left arm and left of arm.
// else return false;
}
各点位于正确的侧面是很重要的。当站在测线起点并朝测线终点看时,定义左侧和右侧这是无限距离吗?@LiamMacDonald点或测线的无限距离?如果是,是的,它在工作!Thx@Blindman67你能看到这个吗
if(canSee(v1, v2) && canSee(v2, v1)){ } // both can see each other
else { } //one or none can see the other