Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测svg路径和svg文本之间的冲突_Svg_Path_Collision Detection - Fatal编程技术网

检测svg路径和svg文本之间的冲突

检测svg路径和svg文本之间的冲突,svg,path,collision-detection,Svg,Path,Collision Detection,假设我有一个svg路径和一段文本。我想知道它们在哪里相交。我不确定从哪里开始,因为svg路径的getBBox()函数没有帮助 我应该从哪里开始?您可以通过getBBox()获得文本边界框。不幸的是,正如您可能已经发现的,这不是一个紧凑的glyph边界框。它包括字体的完全下降高度和上升高度。然而,它应该会得到一个合理的近似值 下一步是确定路径到达边界框的位置。获得一个完美的数学解是非常困难的,但是有一些迭代方法更容易,并且给出了很好的结果 路径元素有一个可以提供帮助的参数:getTotalLeng

假设我有一个svg路径和一段文本。我想知道它们在哪里相交。我不确定从哪里开始,因为svg路径的getBBox()函数没有帮助


我应该从哪里开始?

您可以通过
getBBox()
获得文本边界框。不幸的是,正如您可能已经发现的,这不是一个紧凑的glyph边界框。它包括字体的完全下降高度和上升高度。然而,它应该会得到一个合理的近似值

下一步是确定路径到达边界框的位置。获得一个完美的数学解是非常困难的,但是有一些迭代方法更容易,并且给出了很好的结果

路径元素有一个可以提供帮助的参数:
getTotalLength()
getPointAtLength()
。您可以调用
getPointAtLength()
,沿着从0到路径长度的路径单步前进,直到返回的点位于文本框内


如果您想更准确地确定文本中的哪个字符与行接触,有一些应该是有用的。例如,`getExtentOfChar(n)返回文本中第n个字符的边界。

当你说“它们相交的地方”时,你是什么意思?你的意思是线条接触的字符,或者线条接触任何字形轮廓的确切位置,或者仅仅是它们是否相互接触?它们在哪里相互接触?或者,简单地说,当文本的边界框接触线条时。