Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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 使用2个点和圆弧半径计算路径圆弧上的中点_Javascript_Math_Svg_Geometry_Computational Geometry - Fatal编程技术网

Javascript 使用2个点和圆弧半径计算路径圆弧上的中点

Javascript 使用2个点和圆弧半径计算路径圆弧上的中点,javascript,math,svg,geometry,computational-geometry,Javascript,Math,Svg,Geometry,Computational Geometry,查找从A到B的路径弧的中点M: 图表: 我有: A点(x,y) B点(x,y) 弧半径 我尝试了以下代码,但getPointAtLength不推荐使用 var myarc=document.getElementById(“myarc”); //获取路径的长度 var pathLen=myarc.getTotalLength(); console.log(pathLen); //我们要在这条路上走多远? var pathDistance=pathLen*0.5; console.log(路径距离

查找从A到B的路径弧的中点M:

图表:

我有:

  • A点(x,y)
  • B点(x,y)
  • 弧半径
  • 我尝试了以下代码,但getPointAtLength不推荐使用

    var myarc=document.getElementById(“myarc”);
    //获取路径的长度
    var pathLen=myarc.getTotalLength();
    console.log(pathLen);
    //我们要在这条路上走多远?
    var pathDistance=pathLen*0.5;
    console.log(路径距离);
    //得到X,Y的位置
    var midpoint=myarc.getPointAtLength(路径距离)
    log(myarc.getAttribute(“d”);
    控制台日志(中点);
    
    几何计算:

    С演算载体

    AB = B - A   (AB.x = B.x - A.x, similar for Y)
    
    它很长

    lAB = sqrt(AB.x*AB.x + AB.y*AB.y)
    
    归一化向量

    uAB = AB / lAB
    
    弦中点

    mAB = (A + B)/2
    
    箭头值

    F = R - sqrt(R*R - lAB*lAB/4) 
    
    现在是弧中:

    M.x = mAB.x - uAB.Y * F
    M.y = mAB.y + uAB.X * F
    

    请注意,有两点(您需要知道圆心方向与AB的关系),第二点更改第二项的符号

    它只是移动到基类。我已编辑文档以删除弃用警告。是,帖子现在已更改。非常感谢你的回答。getPointAtLength未被弃用,因此我可以使用以前的代码。什么是
    M.x
    M.y
    ?@doox911更正公式。