Простой перевод элемента на холсте очень прост, и здесь не должно быть сложных уравнений. В самом простом смысле это:
ctx.save();
ctx.translate(x, y);
// Draw the things you want offset by x, y
ctx.restore();
Вот элементарный пример квадратного пирога и того же пирога с одним из четырех переведенных кусочков:
http://jsfiddle.net/XqwY2/
Чтобы заставить кусок пирога "выскользнуть", единственное, что вам нужно рассчитать, это то, насколько вы хотите, чтобы он был. В моем простом примере синий блок выдвинут 10, -10
.
Если вам просто интересно, как получить X и Y, которые вы хотите, во-первых, это не совсем вопрос javascript / canvas. Для точек на линии с заданным расстоянием этот вопрос: Поиск точек на линии с заданным расстоянием кажется наиболее понятным
Редактировать , вот вы (из комментариев):
// Center point of pie
var x1 = 100;
var y1 = 100;
// End of pie slice (your black dot)
var x2 = 200;
var y2 = 0;
// The distance you want
var distance = 3;
var vx = x2 - x1; // x vector
var vy = y2 - y1; // y vector
var mag = Math.sqrt(vx*vx + vy*vy); // length
vx = mag/vx;
vy = mag/vy;
// The red X location that you want:
var px = x1 + vx * ( distance);
var py = y1 + vy * ( distance);
Это даст вам px, py (104.24, 95.76)
для моих вымышленных входов.