带有SVG弧线路径的圆图
|
简短的问题:使用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%的圆弧来使用圆函数,那将是很愚蠢的。
同样,使用RaphaelJS在jsfiddle上的测试用例位于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分数时,则使用弧线功能。
没有找到相关结果
已邀请:
12 个回复
硕歌沙
艾食魄轻县
换句话说,这是:
可以通过以下方式实现:
诀窍是要有两个圆弧,第二个圆弧是在第一个圆弧停下来的地方拾取的,并使用负直径返回到原始的圆弧起点。 之所以不能将它做成一个完整的圆弧(我只是在推测),是因为您要告诉它从自身(例如150,150)绘制一条到自身(150,150)的弧),它表示为“哦,我已经在那儿了,不需要弧!”。 我提供的解决方案的优点是: 从圆直接转换为路径很容易,并且 两条弧线之间没有重叠(如果使用标记或图案等,可能会导致问题)。这是一条干净的连续线,尽管分为两部分。 如果它们仅允许文本路径接受形状,则这些都无关紧要。但是我认为他们正在避免这种解决方案,因为圆形等形状元素在技术上没有“开始”点。 jsfiddle演示:http://jsfiddle.net/crazytonyi/mNt2g/ 更新: 如果您将路径用作“ 9”参考,并且希望将文本呈现在圆弧的外边缘,则可以使用完全相同的方法,但将扫掠标志从0更改为1,以便将其标记为路径作为表面而不是内部(例如,
代表某人坐在中心并在自己周围画一个圆,而
代表某人绕中心在半径范围内行走并将粉笔在旁边拖曳,如果有的话)救命)。这是上面的代码,但有更改:
邦绊门蔽惩
马口
与多弧路径方法相比,它的简单性是主要优势(例如,在编写脚本时,您仅插入一个值,并且对任意弧长都完成了操作) 圆弧从最右边的点开始,可以使用旋转变换来移动。 注意:Firefox有一个奇怪的错误,即超过90度或更大的旋转会被忽略。因此,要从顶部开始弧,请使用:
妊辽剁茧
:)
蓄荣糖些
岭取
瞧叮
览幕堤分
,高度为
。
只需使用“长弧”标志,即可填充完整标志。然后将弧度设为整个圆的99.9999%。在视觉上是相同的。通过仅从圆的最右边的点(一个圆心直接从中心水平开始)来避免扫掠标记。
泉秘胁
邪罗逢确胃
勺的驴吓识
链接 您需要做的就是更改console.log的输入并在console中获取结果