У меня есть проблема с создать такую же кривую в SVG и Canvas. У меня есть график, d3js расположение силы, и силы клеща метода готовится значение кривого SVG:сделать ту же самую кривую в SVG и холстом
link.attr("d", function (d) {
var dx = d.target.x - d.source.x,
dy = d.target.y - d.source.y,
dr = Math.sqrt(dx * dx + dy * dy),
normX = dx/((dr != 0) ? dr : 1),
normY = dy/((dr != 0) ? dr : 1),
sourcePadding = d.left ? 50 : 5,
targetPadding = d.right ? 50 : 5,
sourceX = d.source.x + (sourcePadding * normX),
sourceY = d.source.y + (sourcePadding * normY),
targetX = d.target.x - (targetPadding * normX),
targetY = d.target.y - (targetPadding * normY);
return "M" +
sourceX + "," +
sourceY + "A" +
dr + "," + dr + " 0 0,1 " +
targetX + "," +
targetY;});
Как я могу создать то же кривой в CANVAS? Я пробую это, но это не работает:
edges.forEach(function (d) {
// Draw a line from source to target.
context.beginPath();
context.fillStyle = d.color;
// context.quadraticCurveTo(288, 0, 388, 150);
context.moveTo(d.source.x, d.source.y);
context.quadraticCurveTo(d.source.y, d.source.y - 50, d.target.x, d.target.y);
// context.lineTo(d.target.x, d.target.y);
context.stroke();
});
Спасибо за помощь!
Существует jdFidlle SVG/CANVAS: JsFiddle SVG on the left canvas on right
решаемые, решение здесь:SOLUTION Но у меня есть проблемы со стрелками, на конце кривой. Может ли кто-нибудь помочь мне в этом? Я думаю, что есть проблема с raduis. Благодаря !
Ok спасибо, но как исправить отображение SVG для функции CANVAS дуги. Я пробую это: context.arc (d.source.x, d.source.y, dr, 0, 0,1, 0); нет работы –
Задание startAngle и endAngle оба значения 0 не приведут к чему-либо. Попробуйте arcTo, а не дугу. –
Еще нет работы: context.arcTo (d.source.x, d.source.y, d.target.x, d.target.y, 30); –