Comment trouver l'angle de rotation pour faire un arc SVG "stand up" avec css3d
Je arcs noeuds de connexion dans un graphe orienté force de d3, l'ensemble SVG est transformée avec CSS. Maintenant, les arcs ne sont pas agréables, c'est comme si je me trouvais dans le sol, alors je veux les faire "se lever", ou tourner X, Y, Z pour obtenir l'effet. J'ai défini l'origine de la transformation au centre de la ligne reliant les nœuds, mais maintenant je suis coincé avec trouver les angles auxquels je dois faire tourner les arcs pour les faire se lever. Toute idée/formule pour trouver les angles est très appréciée.
Le code que j'ai en ce moment dans la fonction tick
ressemble:
force.on("tick", function() {
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) -200;
return "M" + d.source.x + "," + d.source.y + "A" + dr + "," + dr + " 0 0,1 " + d.target.x + "," + d.target.y;
})
.attr('style', function(d){
var rotateX = 0, rotateY = 0, rotateZ = 0;
return "transform-origin:" + (d.source.x + d.target.x)/2 + "px " + (d.source.y + d.target.y)/2 + "px" +
";transform:rotateX("+rotateX+"deg) rotateY("+rotateY+"deg) rotateZ("+rotateZ+"deg)";
});
angles rotateX, rotateY et rotateZ sont ce que je cherche!
Celui-ci est génial. Pendant ce temps, j'ai abandonné cette idée et porté mon graphique à three.js et j'ai obtenu [this] (https://jsfiddle.net/urzd0fkd/5/show/) dès maintenant. Je n'ai toujours pas compris la fonction Calcul, y a-t-il des maths derrière cela dont vous avez une référence? Merci beaucoup pour le temps et les efforts. – sabithpocker
J'ai ajouté plus d'explications ... Votre démo dans three.js est incroyable :-) – vals