[interpolatable] Code to use angle as well in wrong_start_order vector

Doesn't seem to improve any of my test cases though,
so it's commented out.
This commit is contained in:
Behdad Esfahbod 2023-11-17 18:18:19 -07:00
parent 7d91dda9bd
commit 9725f0eed0

View File

@ -16,7 +16,7 @@ from fontTools.misc.fixedTools import floatToFixedToStr
from collections import defaultdict, deque from collections import defaultdict, deque
from functools import wraps from functools import wraps
from pprint import pformat from pprint import pformat
import math from math import sqrt, copysign
import itertools import itertools
import logging import logging
@ -153,9 +153,9 @@ except ImportError:
def _contour_vector_from_stats(stats): def _contour_vector_from_stats(stats):
size = math.sqrt(abs(stats.area)) size = sqrt(abs(stats.area))
return ( return (
math.copysign((size), stats.area), copysign((size), stats.area),
stats.meanX, stats.meanX,
stats.meanY, stats.meanY,
stats.stddevX * 2, stats.stddevX * 2,
@ -175,12 +175,29 @@ def _points_complex_vector(points):
vector = [] vector = []
points = [complex(*pt) for pt, _ in points] points = [complex(*pt) for pt, _ in points]
n = len(points) n = len(points)
points.extend(points[:1]) points.extend(points[:2])
for i in range(n): for i in range(n):
p0 = points[i] p0 = points[i]
p1 = points[i + 1]
# The point itself
vector.append(p0) vector.append(p0)
vector.append((p1 - p0) * 2)
# The distance to the next point;
# Emphasized by 2 empirically
p1 = points[i + 1]
d0 = p1 - p0
vector.append(d0 * 2)
"""
# The angle to the next point, as a cross product;
# Square root of, to match dimentionality of distance.
p2 = points[i + 2]
d1 = p2 - p1
cross = d0.real * d1.imag - d0.imag * d1.real
cross = copysign(sqrt(abs(cross)), cross)
vector.append(cross)
"""
return vector return vector