JSFiddle - React, Tailwind, and code Playground

by Michael Prosser

JavaScript

var material1 = {
    	name: 'grass'
    };
var material2 = {
    	name: 'rock'
    };
var material3 = {
    	name: 'snow'
    };


var constellations = Array(
	{
  	points: Array(
    	{ x: 0, y: 0, z: 0 },
      { x: 1, y: 1, z: 1 },
      { x: 2, y: 0, z: 1 }
    ),
    material: material1
  },
  {
  	points: Array(
    	{ x: 11, y: 11, z: 10 },
      { x: 21, y: 12, z: 11 },
      { x: 13, y: 10, z: 12 }
    ),
    material: material2
  },
  {
  	points: Array(
    	{ x: 4, y: 4, z: 2 },
      { x: 3, y: 2, z: 3 },
      { x: 4, y: 4, z: 4 }
    ),
    material: material3
  }
)


var items = constellations;

console.log(items);
		
		// get the unique materials of items and store them in an array;
		
colliderSpherical = function(player1,player2){
	
	// x,y,z,radius properties required on both subjects
	
	var distance = Math.sqrt(Math.pow(player2.x-player1.x,2) + Math.pow(player2.y-player1.y,2) + Math.pow(player2.z-player1.z,2));
		
	if((distance - (player1.radius + player2.radius)) < 0){
		
		return true;

	} else {

		return false;

	}

}



var materials = Array();
		
for(var i=0;i<items.length;i++){
			
			if(materials.indexOf(items[i].material.name) === -1){
				
				materials.push(items[i].material.name);
				
			}
	
}

console.log("materials",materials);

var mergedGroups = Array();

var deletables = Array();

for(var j=0;j<materials.length;j++){

	mergedGroups[j] = Array();
		
			for(var i=0;i<items.length;i++){
      
      	var inDeletionGroup = false;
      
      	if(items[i].material.name === materials[j]){
        
        	var points = Array();

          
          console.log(p);

          for(var ii=0;ii<items[i].points.length;ii++){

            var p = items[i].points[ii];

            p.radius = 1;

            points.push(p);

            if(colliderSpherical({ x: 0,y: 0,z: 0, radius: 3} ,p)){

              inDeletionGroup = true;

              console.log("COLLISION!");

            }
        
        }
        
       ...