The issue here is that you want a linear interpolation from value A to B.

Eg A = 0, B = 100. Every frame advances 10%

Width = 0 (pc.math.lerp(0, 100, 0);

Width = 10 (pc.math.lerp(0, 100, 0.1);

Width = 20 (pc.math.lerp(0, 100, 0.2);

Width = 30 (pc.math.lerp(0, 100, 0.3);

Width = 40 (pc.math.lerp(0, 100, 0.4);

Width = 50 (pc.math.lerp(0, 100, 0.5);

Width = 60 (pc.math.lerp(0, 100, 0.6);

Width = 70 (pc.math.lerp(0, 100, 0.7);

Width = 80 (pc.math.lerp(0, 100, 0.8);

Width = 90 (pc.math.lerp(0, 100, 0.9);

Width = 100 (pc.math.lerp(0, 100, 1);

However, in your original code, the value of A is always changing because it set it to be current width so it looks like this

```
this.lineElement.width = pc.math.lerp(this.lineElement.width, this._maxLineWidth, progress);
```

Width = 0 (pc.math.lerp(0, 100, 0);

Width = 10 (pc.math.lerp(0, 100, 0.1);

Width = 28 (pc.math.lerp(10, 100, 0.2);

Width = 42.4 (pc.math.lerp(28, 100, 0.3);

Width = 53.92 (pc.math.lerp(42.4, 100, 0.4);

Width = 63.136 (pc.math.lerp(53.92, 100, 0.5);

Width = 70.5088 (pc.math.lerp(0, 100, 0.6);

etc

TLDR, your A value wasn’t constant

You can have a variable as A, however, it should be your starting value that you are interpolating from, not one that is changing throughout the lerp if you want a linear interpolation.