Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

175
Vistas
Á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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda