{#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}