Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

177
Visualizações
Ángulos de nodo de diseño de círculo citoscape

¿Cómo puedo obtener el ángulo de cada nodo con el centro de la circunferencia en cytoscape usando un diseño circular? Ejemplo visual: ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Primer paso para obtener el ángulo del nodo, obtener el centro de la circunferencia
Entonces obtengo 3 puntos de los 3 primeros nodos para obtenerlo:

 AX= cy.nodes()[0]._private.position.x AY= cy.nodes()[0]._private.position.y BX= cy.nodes()[1]._private.position.x BY= cy.nodes()[1]._private.position.y CX= cy.nodes()[2]._private.position.x CY= cy.nodes()[2]._private.position.y var yDelta_a = BY - AY var xDelta_a = BX - AX; var yDelta_b = CY - BY; var xDelta_b = CX - BX; var aSlope = yDelta_a / xDelta_a; var bSlope = yDelta_b / xDelta_b; //Get center circumference coordCentroCircunferenciaX = (aSlope*bSlope*(AY - CY) + bSlope*(AX + BX) - aSlope*(BX+CX) )/(2* (bSlope-aSlope) ); coordCentroCircunferenciaY = -1*(coordCentroCircunferenciaX- (AX+BX)/2)/aSlope + (AY+BY)/2;

Luego iterar a través de los nodos obteniendo los ángulos:

 for (i = 1;i< cy.nodes().length; i=i+1) { //starts nodes loop let nodo=cy.nodes()[i]; array.push(nodo._private.data.name); //get the node position(x,y) nodox=nodo._private.position.x nodoy=nodo._private.position.y

Ahora con 3 puntos: circunferencia central, posición del nodo y otro punto en el eje x

 C = { x: coordCentroCircunferenciaX, y: coordCentroCircunferenciaY }; A = { x: nodox, y: 0 }; B = { x: nodox,y:nodoy };

Entonces obtengo el ángulo con esta función:

 function find_angle(A,B,C) { var AB = Math.sqrt(Math.pow(Bx-Ax,2)+ Math.pow(By-Ay,2)); var BC = Math.sqrt(Math.pow(Bx-Cx,2)+ Math.pow(By-Cy,2)); var AC = Math.sqrt(Math.pow(Cx-Ax,2)+ Math.pow(Cy-Ay,2)); return Math.acos((BC*BC+AB*AB-AC*AC)/(2*BC*AB))*(180/Math.PI); }

Finalmente este es el ángulo con el centro de la circunferencia:

 let angulo=Math.round(find_angle(A,B,C))

Entonces, con este ángulo, puedo obtener este efecto para rotar las etiquetas de los nodos:

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda