为什么对SVG进行轻微调整会使所有圆圈消失?
我有两个非常相似的SVG文件。它们的不同之处只是在我绘制圆弧的位置有少量的垂直偏移。然而,当我把它们画成31.9毫米的偏移量时,它们应该会上升得很好为什么对SVG进行轻微调整会使所有圆圈消失?,svg,Svg,我有两个非常相似的SVG文件。它们的不同之处只是在我绘制圆弧的位置有少量的垂直偏移。然而,当我把它们画成31.9毫米的偏移量时,它们应该会上升得很好 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg xmlns="http://www
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="152.4mm" height="152.4mm" viewBox="0 0 152.4 152.4">
<path d="M 1,1 l 151.4,0.0 l 0.0,151.4 l -151.4,0.0 Z" stroke="black" fill="white" />
<path d="M 30.162498,31.9 a 4.7625,4.7625 0.0 1,0 0.0,1.0e-6 Z" stroke="black" fill="white" />
<path d="M 55.5625,31.9 a 4.7625,4.7625 0.0 1,0 0.0,1.0e-6 Z" stroke="black" fill="white" />
<path d="M 80.962494,31.9 a 4.7625,4.7625 0.0 1,0 0.0,1.0e-6 Z" stroke="black" fill="white" />
<path d="M 106.362495,31.9 a 4.7625,4.7625 0.0 1,0 0.0,1.0e-6 Z" stroke="black" fill="white" />
</svg>
但是当我把偏移量改为1,改为32.9,它们就完全消失了。至少在Chrome中查看时是这样
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="152.4mm" height="152.4mm" viewBox="0 0 152.4 152.4">
<path d="M 1,1 l 151.4,0.0 l 0.0,151.4 l -151.4,0.0 Z" stroke="black" fill="white" />
<path d="M 30.162498,32.9 a 4.7625,4.7625 0.0 1,0 0.0,1.0e-6 Z" stroke="black" fill="white" />
<path d="M 55.5625,32.9 a 4.7625,4.7625 0.0 1,0 0.0,1.0e-6 Z" stroke="black" fill="white" />
<path d="M 80.962494,32.9 a 4.7625,4.7625 0.0 1,0 0.0,1.0e-6 Z" stroke="black" fill="white" />
<path d="M 106.362495,32.9 a 4.7625,4.7625 0.0 1,0 0.0,1.0e-6 Z" stroke="black" fill="white" />
</svg>
我必须说我对这种行为感到很困惑。我做错了什么?您依赖于31.9和31.9+1.0e-6之间的差异来绘制圆弧,因为y和圆弧起始y坐标的值相同 IEEE浮点数缺乏足够的精度来区分32.9+1.0e-6和32.9,因为增量仍然是绝对值
基本上,你不能用一个椭圆弧画一个完整的圆,你应该用两个半圆来画。只需从末端取下e-6即可
我不会画圆圈。我正在画SVG来控制数控机床。CAM软件只支持路径。这将适用于不同的起始值范围,但不能解释为什么整个方法存在缺陷。大值。如果x和x+1之间的差异不能表示为IEEE浮点值,那么它将不起作用。或者开始位置的小值,此时图形将不再看起来像一个圆。我将向我的SVG图形库发送一个pull请求,以执行此操作。非常感谢。