userStack Asked: 2020-02-25 16:06:34 +0800 CST 2020-02-25 16:06:34 +0800 CST 2020-02-25 16:06:34 +0800 CST 检查一个点是否在四边形内 772 我想知道一个点是在正方形内部还是外部 一个点有 2 个属性,在“X”和“Y”的位置。 正方形有 4 个属性:位置 X、Y、底边、高度。 你怎么知道这个点是在里面还是外面? javascript 2 Answers Voted Best Answer userStack 2020-02-25T16:07:37+08:002020-02-25T16:07:37+08:00 要知道一个点是否在一个正方形内,必须检查以下内容: xPoint 大于 xsquare 并且 xPoint 小于 xSquare+base yPoint 大于 ySquare 并且 yPoint 小于 ySquare+height 在下面的示例中,我用 2 个点检查两种情况(点在正方形内和相反的情况)。 var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); var point = { 'x': 2, 'y': 20 }; var point2 = { 'x': 20, 'y': 20 }; var cuadrado = { 'x': 10, 'y': 10, 'base': 50, 'altura': 100 }; function putPixel(ctx, x, y, color) { ctx.fillStyle = color; ctx.fillRect(x, y, 2, 2); } function draw(x, y, base, altura) { ctx.strokeRect(x, y, base, altura); } draw(cuadrado.x, cuadrado.y, cuadrado.base, cuadrado.altura); putPixel(ctx, point.x, point.y, 'blue'); putPixel(ctx, point2.x, point2.y, 'red'); console.log(comprobar(point, cuadrado)); console.log(comprobar(point2, cuadrado)); function comprobar(punto, cuadrado) { if (punto.x > cuadrado.x && punto.x < cuadrado.x + cuadrado.base && punto.y > cuadrado.y && punto.y < cuadrado.y + cuadrado.altura) { return true; } return false; } <canvas id="canvas"> </canvas> Óscar Ferrer Joyera 2020-02-25T16:11:58+08:002020-02-25T16:11:58+08:00 你认为如果它触及边界,是在里面还是外面?这在知道它是 < 还是 <= 您想要在内部还是外部捕获的那一刻很重要。 首先,在一个正方形中,它包含: base == altura 所以我假设你在谈论任何四边形,一个矩形。 AX 加上基数,得到 X+b。AY,你加上高度,你得到 Y+a。 你要解释清楚,知道 1.你的坐标系,X和Y的值在哪里增加?向右和向上?右下?因为操作的符号与此有关。 一般情况下,点 (x1, y1) 将在正方形内:(考虑到边界上的点包含在正方形内) (x1 <= X+b) AND (x1 >= X) AND (y1 <= Y+a) AND (y1 >= Y) 并考虑到边界上的点不包括在正方形中: (x1 < X+b) AND (x1 > X) AND (y1 < Y+a) AND (y1 > Y) 但是你必须考虑你的坐标系。 一切顺利
要知道一个点是否在一个正方形内,必须检查以下内容:
在下面的示例中,我用 2 个点检查两种情况(点在正方形内和相反的情况)。
你认为如果它触及边界,是在里面还是外面?这在知道它是 < 还是 <= 您想要在内部还是外部捕获的那一刻很重要。
首先,在一个正方形中,它包含:
所以我假设你在谈论任何四边形,一个矩形。
AX 加上基数,得到 X+b。AY,你加上高度,你得到 Y+a。
你要解释清楚,知道 1.你的坐标系,X和Y的值在哪里增加?向右和向上?右下?因为操作的符号与此有关。
一般情况下,点 (x1, y1) 将在正方形内:(考虑到边界上的点包含在正方形内)
并考虑到边界上的点不包括在正方形中:
但是你必须考虑你的坐标系。
一切顺利