J'ai deux points d'une ligne comme p1 (a, b) et p2 (c, d) mon point est X (x, y)php trouver la distance d'un point et un segment de ligne pas une ligne en 2D
J'ai cherché et trouvé comme here
mais ce ne sont pas php quelqu'un peut me aider
J'ai deux points d'une ligne comme p1 (a, b) et p2 (c, d) mon point est X (x, y)php trouver la distance d'un point et un segment de ligne pas une ligne en 2D
J'ai cherché et trouvé comme here
mais ce ne sont pas php quelqu'un peut me aider
DISCLAIMER: Je supposais le code JS des œuvres de réponse liées. Voici ma tentative de convertir le code javascript de here en PHP ci-dessous.
function sqr($x) { return $x * $x; }
function dist2($v, $w) { return sqr($v->x - $w->x) + sqr($v->y - $w->y); }
function distToSegmentSquared($p, $v, $w) {
$l2 = dist2($v, $w);
if ($l2 == 0) return dist2($p, $v);
$t = (($p->x - $v->x) * ($w->x - $v->x) + ($p->y - $v->y) * ($w->y - $v->y))/$l2;
$t = max(0, min(1, $t));
return dist2($p, (object) array('x' => $v->x + $t * ($w->x - $v->x),
'y' => $v->y + $t * ($w->y - $v->y)));
}
function distToSegment($p, $v, $w) { return sqrt(distToSegmentSquared($p, $v, $w)); }
Utilisez-le comme suit:
$p = (object) array('x' => 2, 'y' => 2);
$v = (object) array('x' => 9, 'y' => 2);
$w = (object) array('x' => 2, 'y' => 9);
echo distToSegment($p, $v, $w);
En comparant la sortie JS avec sortie PHP:
ESSAI 1
Pour
x = {x:2, y:2}
v = {x:9, y:2}
w = {x:2, y:9}
JS SORTIE:
4,949747468305833
PHP SORTIE:
4,9497474683058
ESSAI 2
Pour
x = {x:1, y:9}
v = {x:4, y:4}
w = {x:4, y:9}
JS SORTIE:
PHP SORTIE:
ESSAI 3
Pour
x = {x:5, y:6}
v = {x:2, y:9}
w = {x:8, y:2}
JS SORTIE:
0.32539568672798375
PHP SORTIE:
0,32539568672798