fromP3 method
Builds a lookup table at runtime. Fast.
Implementation
void fromP3(Point q) {
// Goal: v.points[i] = (2*i+1)*Q, i.e., Q, 3Q, 5Q, ..., 15Q
// This allows lookup of -15Q, ..., -3Q, -Q, 0, Q, 3Q, ..., 15Q
points[0].fromP3(q);
final Point q2 = Point.zero()..add(q, q);
final Point tmpP3 = Point.zero();
final projP1xP1 tmpP1xP1 = projP1xP1.zero();
for (int i = 0; i < 7; i++) {
points[i + 1].fromP3(tmpP3..fromP1xP1(tmpP1xP1..add(q2, points[i])));
}
}