{#if controls}
            
            {#each $points as point, index}
                 points.set([
                        ...$points.slice(0, index),
                        Matrix.columnVector([evt.detail.x, evt.detail.y, 1]),
                        ...$points.slice(index + 1)
                    ])}
                />
            {/each}
            {#each $ifs as current, index}
                 {
                        const point = Matrix.columnVector([evt.detail.x, evt.detail.y, 1]);
                        const vec1 = Matrix.sub($points[index], $center);
                        const vec2 = Matrix.sub(point, $center);
                        const nextRatio = 1 - vec1.dot(vec2) / vec1.dot(vec1);
                        if (evt.detail.shift)
                        {
                            ratios.set(
                                Array.from({length: $ratios.length}).fill(nextRatio)
                            );
                        }
                        else
                        {
                            ratios.set([
                                ...$ratios.slice(0, index),
                                nextRatio,
                                ...$ratios.slice(index + 1)
                            ]);
                        }
                    }}
                />
            {/each}
        {/if}