2016-07-11 5 views
-2

Я базирующихся на мой вопрос на следующем примере: http://bl.ocks.org/mbostock/1153292d3js макета Force несколько дуг со стрелками

Если я создаю две ссылки с одного источника и цели, скажем,

{source: "Microsoft", target: "HTC", type: "licensing"}, 
{source: "Microsoft", target: "HTC", type: "suit"}, 

затем две ссылки будут сидеть друг над другом, и только один будет виден. Как я могу переписать код так, что в этом случае две ссылки будут формировать петлю так же, как это происходит в течение двух связей с перевернутыми источниками и целями, например

{source: "Microsoft", target: "Motorola", type: "suit"}, 
{source: "Motorola", target: "Microsoft", type: "suit"}, 
+2

Возможный дубликат [Рисование нескольких ребер между двумя узлами с d3] (http://stackoverflow.com/questions/11368339/drawing-multiple-edges-between-two-nodes-with-d3) – altocumulus

ответ

0

Хорошо, я найти решение этого один сам , В

function linkArc(d) { 
    var dx = d.target.x - d.source.x, 
     dy = d.target.y - d.source.y, 
     dr = Math.sqrt(dx * dx + dy * dy); 
    return "M" + d.source.x + "," + d.source.y + "A" + dr + "," + dr + " 0 0,1 " + d.target.x + "," + d.target.y; 
} 

если " 0 0,1 " часть изменяется на " 0 0,0 " он меняет хиральность дуги, так что, если заявление в необходимости различать случаи, когда Есть две ссылки с одного источника и цели.