javascript – 在给定x坐标的情况下,沿SVG路径获取点的y坐标

前端之家收集整理的这篇文章主要介绍了javascript – 在给定x坐标的情况下,沿SVG路径获取点的y坐标前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用raphael.js绘制一个简单的SVG线图,如下所示:

用户悬停图形时,id喜欢显示指向光标X位置的行的弹出窗口,以及位于该X位置的Y位置,如下所示:

我需要获取路径并找到给定X坐标的Y坐标.

解决方法

基于@ Duopixel的D3解决方案,我使用DOM API在纯 JavaScript中编写了以下函数供我自己使用:
function findY(path,x) {
  var pathLength = path.getTotalLength()
  var start = 0
  var end = pathLength
  var target = (start + end) / 2

  // Ensure that x is within the range of the path
  x = Math.max(x,path.getPointAtLength(0).x)
  x = Math.min(x,path.getPointAtLength(pathLength).x)

  // Walk along the path using binary search 
  // to locate the point with the supplied x value
  while (target >= start && target <= pathLength) {
    var pos = path.getPointAtLength(target)

    // use a threshold instead of strict equality 
    // to handle javascript floating point precision
    if (Math.abs(pos.x - x) < 0.001) {
      return pos.y
    } else if (pos.x > x) {
      end = target
    } else {
      start = target
    }
    target = (start + end) / 2
  }
}

猜你在找的JavaScript相关文章