检测svg路径和svg文本之间的冲突
假设我有一个svg路径和一段文本。我想知道它们在哪里相交。我不确定从哪里开始,因为svg路径的getBBox()函数没有帮助检测svg路径和svg文本之间的冲突,svg,path,collision-detection,Svg,Path,Collision Detection,假设我有一个svg路径和一段文本。我想知道它们在哪里相交。我不确定从哪里开始,因为svg路径的getBBox()函数没有帮助 我应该从哪里开始?您可以通过getBBox()获得文本边界框。不幸的是,正如您可能已经发现的,这不是一个紧凑的glyph边界框。它包括字体的完全下降高度和上升高度。然而,它应该会得到一个合理的近似值 下一步是确定路径到达边界框的位置。获得一个完美的数学解是非常困难的,但是有一些迭代方法更容易,并且给出了很好的结果 路径元素有一个可以提供帮助的参数:getTotalLeng
我应该从哪里开始?您可以通过
getBBox()
获得文本边界框。不幸的是,正如您可能已经发现的,这不是一个紧凑的glyph边界框。它包括字体的完全下降高度和上升高度。然而,它应该会得到一个合理的近似值
下一步是确定路径到达边界框的位置。获得一个完美的数学解是非常困难的,但是有一些迭代方法更容易,并且给出了很好的结果
路径元素有一个可以提供帮助的参数:getTotalLength()
和getPointAtLength()
。您可以调用getPointAtLength()
,沿着从0到路径长度的路径单步前进,直到返回的点位于文本框内
如果您想更准确地确定文本中的哪个字符与行接触,有一些应该是有用的。例如,`getExtentOfChar(n)返回文本中第n个字符的边界。当你说“它们相交的地方”时,你是什么意思?你的意思是线条接触的字符,或者线条接触任何字形轮廓的确切位置,或者仅仅是它们是否相互接触?它们在哪里相互接触?或者,简单地说,当文本的边界框接触线条时。