0
A
回答
0
免责声明:我假定从链接答案作品的JS代码。
以下是我尝试将JavaScript代码从here转换为PHP。
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)); }
使用它,像这样:
$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);
JS输出与PHP输出比较:
TEST 1
为
x = {x:2, y:2}
v = {x:9, y:2}
w = {x:2, y:9}
JS OUTPUT:
4.949747468305833
PHP OUTPUT:
4.9497474683058
TEST 2
对于
x = {x:1, y:9}
v = {x:4, y:4}
w = {x:4, y:9}
JS OUTPUT:
PHP OUTPUT:
TEST 3
对于
x = {x:5, y:6}
v = {x:2, y:9}
w = {x:8, y:2}
JS OUTPUT:
0。32539568672798375
PHP OUTPUT:
0.32539568672798
相关问题
- 1. Objective-C中一条直线和一个点之间的距离?
- 2. Python 3.5.2:从一个点到一条线的距离
- 3. 从一个点到一条分割线的最短距离
- 4. 距离某一点的线段距离上的点
- 5. 检查一个点是否在一条线内2D
- 6. 沿着距离两个给定点的距离找到一条中间点
- 7. OpenGL找到一个点的距离
- 8. 两条移动线段(或一条移动线段和一个点)的交集
- 9. 如何在一个点和一个方向形成的假想线上得到一个点x的距离
- 10. 按距离到第一个点的线上点
- 11. 在一定距离之后获取一个catmull rom样条曲线的点吗?
- 12. 如何找到距离线段指定距离的标题上的第一个点?
- 13. 从一点到两点所代表的一条直线的垂直距离
- 14. 如果我有一条线的方程,我该如何找到该线上距离另一条线的特定距离的点?
- 15. 动画从一个点绘制一条线到一个点
- 16. 找到一个点,使距离一个有限区域内的一组点的总距离最大
- 17. 在最接近latlng的多段线中找到一个点
- 18. 在等分线上找到一个点
- 19. 对角线扫描和一个点与对角线的正交距离
- 20. 根据三个平面的法线和距离它们的距离得到一个点
- 21. 找到一个节点和树的根之间的距离
- 22. 找到一条线上的点
- 23. 找到一条线的交点
- 24. 找到两条线,并与一个
- 25. 你如何找到距离某条线的给定垂直距离上的点?
- 26. corosync节点不在线(一个脱机,一个在线)
- 27. Neo4j空间 - 找到一个多边形和一条线的交点
- 28. 如何绘制一个离线的点
- 29. 线条没有在一个段落
- 30. 不能用c#绘制一条线和一个点Tao.OpengGL