Расположение силы D3: вращающийся текст - PullRequest
1 голос
/ 11 октября 2019

Я использую пример, который использовался для поворота метки в раскладке силы d3. Я пытаюсь отобразить текст метки ' <</strong>' так, чтобы A всегда отображался http://jsfiddle.net/xr3917ac/4/

Однако, поскольку узел A перетаскивается по кругудвижение, текст метки ' <</strong>' внезапно переворачивается на 180 градусов, показывая B

const dsty = d.source.y - d.target.y;
let angle = Math.atan(dsty / (d.source.x - d.target.x)) * 180 / Math.PI;
      return 'translate(' + [((d.source.x + d.target.x) / 2), ((d.source.y + d.target.y) / 2)] + ')rotate(' + angle + ')';

1 Ответ

0 голосов
/ 11 октября 2019

Используйте Math.atan2 вместо Math.atan

labelLine.attr("transform", function(d) {
    if (d) {
      const dsty = d.source.y - d.target.y;
      let angle = Math.atan2(dsty, (d.source.x - d.target.x)) * 180 / Math.PI;
      return 'translate(' + [((d.source.x + d.target.x) / 2), ((d.source.y + d.target.y) / 2)] + ')rotate(' + angle + ')';
    }
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...