Javascript 计算safari和chrome中svg路径的getBBox()中包含的控制点

Javascript 计算safari和chrome中svg路径的getBBox()中包含的控制点,javascript,svg,geometry,Javascript,Svg,Geometry,这与此bug有关: 给定一个圆弧(中心、半径、星形、端角),我能够计算路径上的点,然后计算它们的边界框,但是,在safari和chrome中,有一个错误,它在边界框中包含圆弧的控制点。由于渐变填充应用于形状的边界框,因此根据浏览器是否存在此缺陷,覆盖形状的渐变会略有不同 我的问题是:如果不使用实际的API(getBBox()),我如何在给定这些参数(中心、半径、startAngle、endAngle)的情况下,计算路径中圆弧的额外控制点来调整safari/chrome错误 这不需要处理贝塞尔曲

这与此bug有关:

给定一个圆弧(中心、半径、星形、端角),我能够计算路径上的点,然后计算它们的边界框,但是,在safari和chrome中,有一个错误,它在边界框中包含圆弧的控制点。由于渐变填充应用于形状的边界框,因此根据浏览器是否存在此缺陷,覆盖形状的渐变会略有不同

我的问题是:如果不使用实际的API(getBBox()),我如何在给定这些参数(中心、半径、startAngle、endAngle)的情况下,计算路径中圆弧的额外控制点来调整safari/chrome错误

这不需要处理贝塞尔曲线甚至椭圆,只需要一个简单的圆弧


谢谢大家!

有关如何为
getBBox()
实现垫片的提示,请查看Snap.svg在这里的作用:

事实上,对于
DOM元素,可以通过调用以下命令获得正确的BBox:

Snap.path.getBBox(pathElement.getAttribute('d'))

有关如何为
getBBox()
实现垫片的提示,请查看Snap.svg在这里的作用:

事实上,对于
DOM元素,可以通过调用以下命令获得正确的BBox:

Snap.path.getBBox(pathElement.getAttribute('d'))

有关如何为
getBBox()
实现垫片的提示,请查看Snap.svg在这里的作用:

事实上,对于
DOM元素,可以通过调用以下命令获得正确的BBox:

Snap.path.getBBox(pathElement.getAttribute('d'))

有关如何为
getBBox()
实现垫片的提示,请查看Snap.svg在这里的作用:

事实上,对于
DOM元素,可以通过调用以下命令获得正确的BBox:

Snap.path.getBBox(pathElement.getAttribute('d'))

我为webkit浏览器编写了一个getBBox垫片

//webkit(safari,chrome)路径元素getBBox bug
if(navigator.userAgent.indexOf('AppleWebKit')>0){
svgpatheElement.prototype.getBBox=函数(精度){
var path=这个;
var total=path.getTotalLength();

if(total我为webkit浏览器编写了一个getBBox垫片

//webkit(safari,chrome)路径元素getBBox bug
if(navigator.userAgent.indexOf('AppleWebKit')>0){
svgpatheElement.prototype.getBBox=函数(精度){
var path=这个;
var total=path.getTotalLength();

if(total我为webkit浏览器编写了一个getBBox垫片

//webkit(safari,chrome)路径元素getBBox bug
if(navigator.userAgent.indexOf('AppleWebKit')>0){
svgpatheElement.prototype.getBBox=函数(精度){
var path=这个;
var total=path.getTotalLength();

if(total我为webkit浏览器编写了一个getBBox垫片

//webkit(safari,chrome)路径元素getBBox bug
if(navigator.userAgent.indexOf('AppleWebKit')>0){
svgpatheElement.prototype.getBBox=函数(精度){
var path=这个;
var total=path.getTotalLength();

if(完全可能重复Yes.Thank you.。虽然这在数学层面上回答了这个问题,但我对一个简单的JavaScript函数感兴趣,该函数将获取这些参数并给出答案,但也许我需要对此做一些工作。我的SVG库(AndroidSVG)中有一些(Java)代码确实如此。但它不一定计算与Chrome和Safari相同的bezier控制点。可能是重复的。谢谢。虽然这在数学层面上回答了这个问题,但我对一个简单的JavaScript函数感兴趣,该函数将获取这些参数并给出答案,但也许我需要做一些工作我的SVG库(AndroidSVG)中有一些(Java)代码确实如此。但它不一定计算与Chrome和Safari相同的bezier控制点。可能是重复的。谢谢。虽然这在数学层面上回答了这个问题,但我对一个简单的JavaScript函数感兴趣,该函数将获取这些参数并给出答案,但也许我需要做一些工作我的SVG库(AndroidSVG)中有一些(Java)代码确实如此。但它不一定计算与Chrome和Safari相同的bezier控制点。可能是重复的。谢谢。虽然这在数学层面上回答了这个问题,但我对一个简单的JavaScript函数感兴趣,该函数将获取这些参数并给出答案,但也许我需要做一些工作我的SVG库(AndroidSVG)中有一些(Java)代码确实如此。但它不一定计算与Chrome和Safari相同的bezier控制点。此解决方案效率非常低理论上更高效的是什么?Chrome或Safari可能会在未来解决此问题。此解决方案效率非常低理论上更高效的是什么?Chrome或Safari可能会在未来解决此问题e、 此解决方案非常低效理论上更高效的是什么?Chrome或safari将来可能会解决此问题。此解决方案非常低效理论上更高效的是什么?Chrome或safari将来可能会解决此问题。