简短的问题:使用 SVG 路径,我们可以绘制 99.99% 的圆并显示,但是当它是圆的 99.99999999% 时,则不会显示圆。如何修复?
下面的SVG路径可以画出99.99%的圆:(在http://jsfiddle.net/DFhUF/1381/上试试看是看到4个圆弧还是只看到2个圆弧,但是注意如果是IE的话是用 VML 渲染,而不是 SVG,但有类似的问题)
M 100 100 a 50 50 0 1 0 0.00001 0
但是当它是一个圆的 99.99999999% 时,什么都不会显示?
M 100 100 a 50 50 0 1 0 0.00000001 0
这与 100% 的圆相同(它仍然是一个圆弧,不是吗,只是一个非常完整的圆弧)
M 100 100 a 50 50 0 1 0 0 0
这怎么能解决?原因是我使用一个函数来绘制弧的百分比,如果我需要“特殊情况”一个 99.9999% 或 100% 的弧来使用圆函数,那就有点傻了。
同样,在 jsfiddle 上使用 RaphaelJS 的测试用例位于http://jsfiddle.net/DFhUF/1381/
(如果它是 IE 8 上的 VML,则即使第二个圆圈也不会显示......你必须将其更改为0.01)
更新:
这是因为我正在为我们的系统中的分数绘制弧线,所以 3.3 分得到 1/3 的圆。0.5 得到半个圆,9.9 分得到 99% 的圆。但是,如果我们的系统中有 9.99 的分数怎么办?我是否必须检查它是否接近圆的 99.999%,并相应地使用arc
函数或circle
函数?那么9.9987的分数呢?使用哪一个?需要知道什么样的分数会映射到“太完整的圆”并切换到圆函数,而当它是圆的“某个 99.9%”或 9.9987 分数时,再使用弧函数,这很可笑.