आप "सबसे अच्छा तरीका ठीक से तीर की ड्राइंग समायोजित करने के लिए" के लिए कहा। मैं दावा नहीं कर सकता कि निम्नलिखित दृष्टिकोण "सर्वश्रेष्ठ" तरीका है, और मैं अन्य उत्तरों की प्रतीक्षा करता हूं, लेकिन इस मुद्दे से निपटने के लिए यहां एक तरीका है।
http://jsfiddle.net/Y9Qq3/2/
प्रासंगिक अपडेट नीचे नोट कर रहे हैं।
...
var w = 960,
h = 500
markerWidth = 6,
markerHeight = 6,
cRadius = 30, // play with the cRadius value
refX = cRadius + (markerWidth * 2),
refY = -Math.sqrt(cRadius),
drSub = cRadius + refY;
...
svg.append("svg:defs").selectAll("marker")
.data(["suit", "licensing", "resolved"])
.enter().append("svg:marker")
.attr("id", String)
.attr("viewBox", "0 -5 10 10")
.attr("refX", refX)
.attr("refY", refY)
.attr("markerWidth", markerWidth)
.attr("markerHeight", markerHeight)
.attr("orient", "auto")
.append("svg:path")
.attr("d", "M0,-5L10,0L0,5");
...
function tick() {
path.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);
return "M" + d.source.x + "," + d.source.y + "A" + (dr - drSub) + "," + (dr - drSub) + " 0 0,1 " + d.target.x + "," + d.target.y;
});
...
समाधान समान त्रिज्या नोड्स के साथ अच्छी तरह से काम करता है। जेसन से आने वाले गतिशील त्रिज्या के बारे में क्या? मार्कर ऑफसेट की गणना के लिए त्रिज्या कैसे संलग्न करें? – Saad
'(" svg: marker ") है 'डी 3 में कुछ शामिल है? मैं अपने एक स्क्रिप्स पर एक तीर का उपयोग करना चाहता हूं –