svgpathtools icon indicating copy to clipboard operation
svgpathtools copied to clipboard

QuadraticBezier segment length() function gives 'inf' as result

Open xmarduel opened this issue 3 years ago • 1 comments

for the points: st = (335.43211 + 69.71516199999999j) end = (335.27971 + 69.86756199999999j) ctrl = (335.33051+ 69.816762j) segment= svgpathtools.QuadraticBezier(st, ctrl, end) len = segment.length() # len is 'inf' !!!

Note that for the points: st = (335.43211 + 69.715162j) end = (335.27971 + 69.867562j) ctrl = (335.33051 + 69.816762j) the length of the segment is ok : 0.21552614690565985

[python-3.10]

Sincerely, XM

xmarduel avatar Sep 16 '22 18:09 xmarduel

I have another test case:

  • svgpathtools = 1.5.1
  • Python 3.11.1
import svgpathtools

from svg.path import path as svgpath


def bad():
    path = svgpathtools.QuadraticBezier(
        start=(46 + 125j), control=(45.8 + 124.6j), end=(45.7 + 124.4j)
    )
    return path.length()


def good():
    path = svgpath.QuadraticBezier(
        start=(46 + 125j), control=(45.8 + 124.6j), end=(45.7 + 124.4j)
    )
    return path.length()


assert bad() == good()

This is parsed from the path "M 46.0 125.0 Q 45.8 124.6, 45.7 124.4"

MaybeJustJames avatar Dec 21 '22 14:12 MaybeJustJames