class CenarioAtomicoBasicoPontos extends CenarioAtomicoBasico {

	duranteCriar() {
	   super.duranteCriar();
	   this.tamPonto = 1;
	   this.materialS = [this.criarMaterialPontos("#880000",0.9)];
	   this.materialP = [this.criarMaterialPontos("#008800",0.9),this.criarMaterialPontos("#008800",0.1)];
	   this.materialD = [this.criarMaterialPontos("#000088",0.9),this.criarMaterialPontos("#000088",0.1)];
	   this.materialF = [this.criarMaterialPontos("#880088",0.9),this.criarMaterialPontos("#880088",0.1)];
	   this.materialEletronS = this.criarMaterialPhong("#FF0000", 1);
	   this.materialEletronP = this.criarMaterialPhong("#00FF00", 1);
	   this.materialEletronD = this.criarMaterialPhong("#0000FF", 1);
	   this.materialEletronF = this.criarMaterialPhong("#880088", 1);
	   this.materialUltimoEletron = this.criarMaterialPhong("#ff6600", 0.3);
	   this.geometriaEletron = new THREE.SphereGeometry/*BufferGeometry*/(this.raioEletron,50,50,0,doisPi,0,doisPi);
	   this.geometriaNucleo = new THREE.SphereGeometry/*BufferGeometry*/(this.raioNucleo,50,50,0,doisPi,0,doisPi);
	   this.materialProton = new THREE.MeshPhongMaterial({color: "purple", transparent: true, opacity: 1, side: THREE.DoubleSide, depthWrite: false});
	   this.materialNeutron = new THREE.MeshPhongMaterial({color: "yellow", transparent: true, opacity: 1, side: THREE.DoubleSide, depthWrite: false});
	   this.materialEsferaRaio = this.criarMaterialPontos("#ffffff", 0.1);
	}

	criarCamera () {
	   this.camera = new THREE.PerspectiveCamera(45,window.innerWidth / window.innerHeight,1,50000);
	   this.camera.updateMatrix();
	   this.camera.lookAt(this.cena.position);
	   this.camera.position.set(this.cpx,this.cpy,this.cpz);
	}
	
	criarMaterialPontos(cor,opacidade) {
	   return new THREE.PointsMaterial({size: this.tamPonto, color: cor, opacity: opacidade, sizeAttenuation: true, vertexColors: THREE.VertexColors});
	}

	criarGeometriaCone(raioAcima,raioAbaixo,altura,segLarg,segAlt,Fechar,IniTheta,FimTheta,solicitante) {
	   var geometria = CenarioAtomicoBasico.prototype.criarGeometriaCone(raioAcima,raioAbaixo,altura,segLarg,segAlt,Fechar,IniTheta,FimTheta,solicitante);
	   return this.criarGeometriaPontos(geometria,solicitante.material[0].color);
	}

	criarGeometriaEsfera(raio,segLarg,segAlt,IniPhi,FimPhi,IniTheta,FimTheta,solicitante) {
	   var geometria = CenarioAtomicoBasico.prototype.criarGeometriaEsfera(raio,segLarg,segAlt,IniPhi,FimPhi,IniTheta,FimTheta,solicitante);
	   return this.criarGeometriaPontos(geometria,solicitante.material[0].color);
	}

	criarGeometriaTorus(raio,tubo,segRad,segTub,arco,solicitante) {
	   var geometria = CenarioAtomicoBasico.prototype.criarGeometriaTorus(raio,tubo,segRad,segTub,arco,solicitante);
	   return this.criarGeometriaPontos(geometria,solicitante.material[0].color);
	}
	
	criarEsferaRaio(raio) {
	   var geometria = new THREE.SphereGeometry/*BufferGeometry*/(raio,50,50,0,doisPi,0,Math.PI/*doisPi*/);
	   return this.criarGeometriaPontos(geometria,this.materialEsferaRaio.color);
	}

	criarMalha(geometria,material) {
	   return new THREE.Points(geometria,material);
	}
}