Skip to content

Instantly share code, notes, and snippets.

@Vchekryzhov
Created October 3, 2018 18:48
Show Gist options
  • Save Vchekryzhov/dfcc4bc5a08f9df280d164616adea9ca to your computer and use it in GitHub Desktop.
Save Vchekryzhov/dfcc4bc5a08f9df280d164616adea9ca to your computer and use it in GitHub Desktop.
<script>
var X = [];
for (var i = 0; i < 100; i++)
{
X[i] = {'x':Math.random() * 100), 'y':Math.random() * 100, 'z':Math.random() * 100};
}
F = [];
for(var i = 0; i<100;i++){
var a = Math.random();
var b = Math.random() * 1-a;
var c = Math.random() * 1-(a+b);
F[i] = [a,b,c];
}
///// Считаем центры кластеров
function calcCenters(points, accessories){
var V = []
var numenator={'x':0,'y':0,'z':0};
var denominator ={'x':0,'y':0,'z':0};
for (var i = 0; i< 100; i++){
numerator['x'] += Math.pow(accessories[i][0],2) * points[i]['x'];
numerator['y'] += Math.pow(accessories[i][0],2) * points[i]['y'];
numerator['z'] += Math.pow(accessories[i][0],2) * points[i]['z'];
denominator += Math.pow(accessories[i][0],2);
}
V[0]['x'] = numerator['x'] / denominator;
V[0]['y'] = numerator['x'] / denominator;
V[0]['z'] = numerator['x'] / denominator;
numenator={'x':0,'y':0,'z':0};
denominator ={'x':0,'y':0,'z':0};
for (var i = 0; i< 100; i++){
numerator['x'] += Math.pow(accessories[i][1],2) * points[i]['x'];
numerator['y'] += Math.pow(accessories[i][1],2) * points[i]['y'];
numerator['z'] += Math.pow(accessories[i][1],2) * points[i]['z'];
denominator += Math.pow(accessories[i][1],2);
}
V[1]['x'] = numerator['x'] / denominator;
V[1]['y'] = numerator['x'] / denominator;
V[1]['z'] = numerator['x'] / denominator;
numenator={'x':0,'y':0,'z':0};
denominator ={'x':0,'y':0,'z':0};
for (var i = 0; i< 100; i++){
numerator['x'] += Math.pow(accessories[i][2],2) * points[i]['x'];
numerator['y'] += Math.pow(accessories[i][2],2) * points[i]['y'];
numerator['z'] += Math.pow(accessories[i][2],2) * points[i]['z'];
denominator += Math.pow(accessories[i][2],2);
}
V[2]['x'] = numerator['x'] / denominator;
V[2]['y'] = numerator['x'] / denominator;
V[2]['z'] = numerator['x'] / denominator;
return V;
}
function calcD(points, centers){
var D = [];
for(var i =0; i< 100; i++){
D[i] = {};
D[i] = [];
D[i]['x'] = Math.abs(points[i]['x'] - centers[i]['x']);
D[i]['y'] = Math.abs(points[i]['y'] - centers[i]['y']);
D[i]['z'] = Math.abs(points[i]['z'] - centers[i]['z']);
}
return D;
}
function recalcAccesories(points, ){
var D = calcD();
}
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment