Updated ModernGraphStyle algorithm.

This commit is contained in:
Unick Soft 2017-06-01 23:38:23 +03:00
parent 063bfc91ec
commit 7a4d803717

View File

@ -49,6 +49,9 @@ ModernGraphStyle.prototype.vertexVisualization = function()
var degree = getVertexToVertexArray(this.graph, false); var degree = getVertexToVertexArray(this.graph, false);
var graph = this.graph; var graph = this.graph;
var maxDegree = 0; var maxDegree = 0;
var sumDegree = 0;
var sumOfDiameters = graph.vertices.length * (new VertexModel()).diameter;
// Search max vertex degree. // Search max vertex degree.
for (var i = 0; i < graph.vertices.length; i++) for (var i = 0; i < graph.vertices.length; i++)
@ -59,6 +62,7 @@ ModernGraphStyle.prototype.vertexVisualization = function()
{ {
var currentDegree = degree[vertex.id].length; var currentDegree = degree[vertex.id].length;
maxDegree = Math.max(maxDegree, currentDegree); maxDegree = Math.max(maxDegree, currentDegree);
sumDegree = sumDegree + currentDegree;
} }
} }
@ -70,7 +74,9 @@ ModernGraphStyle.prototype.vertexVisualization = function()
if (degree.hasOwnProperty(vertex.id)) if (degree.hasOwnProperty(vertex.id))
{ {
var currentDegree = degree[vertex.id].length; var currentDegree = degree[vertex.id].length;
vertex.model.diameter = (currentDegree / maxDegree) * (this.maxVertexSize - this.minVertexSize) + this.minVertexSize; //vertex.model.diameter = (currentDegree / maxDegree) * (this.maxVertexSize - this.minVertexSize) + this.minVertexSize;
vertex.model.diameter = Math.max(Math.min((currentDegree / sumDegree) * sumOfDiameters, this.maxVertexSize), this.minVertexSize);
//sumOfDiameters
} }
else else
{ {
@ -83,6 +89,8 @@ ModernGraphStyle.prototype.edgeVisualization = function()
{ {
var graph = this.graph; var graph = this.graph;
var maxEdgeWeight = 0; var maxEdgeWeight = 0;
var sumWeight = 0;
var sumOfDiameters = graph.edges.length * (new EdgeModel()).width;
// Search max edge weight. // Search max edge weight.
for (var i = 0; i < graph.edges.length; i++) for (var i = 0; i < graph.edges.length; i++)
@ -91,6 +99,7 @@ ModernGraphStyle.prototype.edgeVisualization = function()
if (edge.useWeight) if (edge.useWeight)
{ {
maxEdgeWeight = Math.max(maxEdgeWeight, edge.weight); maxEdgeWeight = Math.max(maxEdgeWeight, edge.weight);
sumWeight = sumWeight + edge.weight;
} }
} }
@ -102,7 +111,8 @@ ModernGraphStyle.prototype.edgeVisualization = function()
var edge = graph.edges[i]; var edge = graph.edges[i];
if (edge.useWeight) if (edge.useWeight)
{ {
edge.model.width = (edge.weight / maxEdgeWeight) * (this.maxEdgeSize - this.minEdgeSize) + this.minEdgeSize; //edge.model.width = (edge.weight / maxEdgeWeight) * (this.maxEdgeSize - this.minEdgeSize) + this.minEdgeSize;
edge.model.width = Math.max(Math.min((edge.weight / sumWeight) * sumOfDiameters, this.maxEdgeSize), this.minEdgeSize);
} }
else else
{ {