Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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 SVG:在曲线上查找点_Javascript_Svg_Svg.js - Fatal编程技术网

Javascript SVG:在曲线上查找点

Javascript SVG:在曲线上查找点,javascript,svg,svg.js,Javascript,Svg,Svg.js,编辑:答案(getPointAtLength归功于@musicaly_ut,但似乎我必须自己做真正的工作。注意:“draw.circle”-语法来自svg.js) 使用.attr({Id:“mypath”})将您自己的Id添加到路径中 找到它:var a=document.getElementById(“IdOfSvgCurve”) 在曲线上画几个圆。坐标必须相对于起点 var pt_start=a.getPointAtLength(0) 对于(变量i=0;i

编辑:答案(getPointAtLength归功于@musicaly_ut,但似乎我必须自己做真正的工作。注意:“draw.circle”-语法来自svg.js)

  • 使用
    .attr({Id:“mypath”})将您自己的Id添加到路径中
  • 找到它:
    var a=document.getElementById(“IdOfSvgCurve”)

  • 在曲线上画几个圆。坐标必须相对于起点

    var pt_start=a.getPointAtLength(0)
    对于(变量i=0;i
  • 原始问题:

    假设我有一条SVG曲线,可以是贝塞尔曲线或椭圆曲线

    <path id="SvgjsPath1044" d="M 125,75 a100,50 0 0,0 100,50"/>
    
    
    

    我怎样才能把点放在曲线上?像这样:

    它可以使用路径长度之类的东西,使用“坐标系”,也可以通过实际计算曲线上的点并使用它们的坐标添加它们

    这主要是为了说明,所以我不一定需要一个通用的解决方案

    我正在使用svg.js库,但可以“本机”完成这一部分


    谢谢

    svgpatheElement
    有一个函数


    您可以使用此函数查找路径上的点,然后在这些位置放置
    元素。

    在这种情况下,路径表示一个数学函数,因此您可以通过代数方式计算函数上的点。Snap.svg还有一个
    交点
    方法,可以查找两条路径的交点。您可以创建临时垂直线路径,计算交点,在这些交点处添加点,然后删除垂直线。好吧,只需看看,看看是如何完成的!诚然,它的源代码是可怕的。@Bergi,红点似乎是手动放置的,或者计算是在服务器端完成的(或者我被古怪的svg语法弄糊涂了),Cuberto,我将查看Snap.svg;然而,这是我项目中的另一个库…我认为他更希望有某种
    getPointAtXCoordinate
    函数…请提供可运行的示例。