Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查圆边界内的碰撞_Javascript_Graphics_2d_Collision - Fatal编程技术网

Javascript 检查圆边界内的碰撞

Javascript 检查圆边界内的碰撞,javascript,graphics,2d,collision,Javascript,Graphics,2d,Collision,我试图用一些线条相似的精灵来填充这个圆圈。 我在+-半径范围内生成随机位置x和y,但我不想在精灵不与圆边界相交时绘制精灵,如: 绿色的线我想画,红色的线我不想画。 我想知道一些想法,可以帮助检测不需要的精灵快。有什么我可以用的吗? 我使用的是pixi.js,sprite的高度和宽度总是一样的。一个简单的想法可能是: 对于段(直线?),由两点P1=(x0,y0)和P2=(x1,y1)定义。 圆由中心R=(xc,yc)和半径R定义 现在检查 距离P1-C

我试图用一些线条相似的精灵来填充这个圆圈。 我在+-半径范围内生成随机位置x和y,但我不想在精灵不与圆边界相交时绘制精灵,如:

绿色的线我想画,红色的线我不想画。 我想知道一些想法,可以帮助检测不需要的精灵快。有什么我可以用的吗?
我使用的是pixi.js,sprite的高度和宽度总是一样的。

一个简单的想法可能是:

对于段(直线?),由两点P1=(x0,y0)和P2=(x1,y1)定义。 圆由中心R=(xc,yc)和半径R定义

现在检查

  • 距离P1-C
  • 距离P2-C
如果两者都是真的,绿线!根据您使用的库,您可能会找到一种方法,例如
pointIsInCircle
,它可以完成一半的工作

下面是一个简单的例子

功能检查点(a、b、x、y、r){
var dist_points=(a-x)*(a-x)+(b-y)*(b-y);
r*=r;
if(距离点
function check_a_point(a, b, x, y, r) {
    var dist_points = (a - x) * (a - x) + (b - y) * (b - y);
    r *= r;
    if (dist_points < r) {
        return true;
    }
    return false;
}