Obtendo posições na tela de nós D3 após a transformação

Eu estou tentando obter a posição da tela de um nó depois que o layout foi transformado por d3.behavior.zoom (), mas eu não estou tendo muita sorte. Como posso obter a posição real de um nó na janela depois de traduzir e dimensionar o layout?

mouseOver = function(node) {
  screenX = magic(node.x); // Need a magic function to transform node
  screenY = magic(node.y); // positions into screen coordinates.
};

Qualquer orientação seria apreciada.

EDIT: 'nó' acima é um nó de layout de força, portanto, as propriedades xey são definidas pela simulação e permanecem constantes após a simulação parar, independentemente do tipo de transformação aplicado.

EDIT: A estratégia que estou usando para transformar o SVG vem do comportamento de zoom do d3, que é descrito aqui:Zoom Geométrico SVG.

var svg = d3.select("body").append("svg")
    .attr("width", width)
    .attr("height", height)
  .append("g")
    .call(d3.behavior.zoom().scaleExtent([1, 8]).on("zoom", zoom))
  .append("g");

svg.append("rect")
    .attr("class", "overlay")
    .attr("width", width)
    .attr("height", height);

svg.selectAll("circle")
    .data(data)
  .enter().append("circle")
    .attr("r", 2.5)
    .attr("transform", function(d) { return "translate(" + d + ")"; });

function zoom() {
  svg.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
}

É bem direto. O comportamento de zoom do d3 oferece eventos pan e zoom para um manipulador, que aplica as transformações ao elemento contêiner por meio do atributo transform.

EDIT: Estou trabalhando em torno do problema usando coordenadas do mouse em vez de coordenadas do nó, desde que eu estou interessado na posição do nó quando o nó é passado com o ponteiro do mouse. Não é exatamente o comportamento que procuro, mas funciona na maior parte e é melhor que nada.

EDIT: A solução foi obter a matriz de transformação atual do elemento svg com element.getCTM () e, em seguida, usá-lo para compensar as coordenadas x e y para um estado relativo à tela. Ver abaixo.

questionAnswers(2)

yourAnswerToTheQuestion