Three.js Object3d cylindre de rotation pour l'aligner sur un vecteur

J'ai cherché un peu partout, mais n'arrive pas à comprendre cette jolie chose fondamentale. J'ai vu d'autres exemples sur stackoverflow et ailleurs, dans un an ou deux, mais ils ne parviennent pas à travailler avec la dernière version de Three.js.

Voici une version de ce que je suis en train de travailler sur: http://medschoolgunners.com/sandbox/3d/.

Je vais essayer d'obtenir le cône gris exactement aligner avec les sans étiquette rouge vecteur. C'est à dire. Je veux la pointe du cône d'être exactement aligné avec le vecteur et le point depuis l'origine dans cette direction.

Voici le code que j'ai droit:

    //FUNCTION TO CREATE A CYLINDER
function create_cylinder(radiusTop,radiusBottom, height, segmentsRadius, segmentsHeight, openEnded, color)
{
var material = new THREE.MeshLambertMaterial({
    color: color, //0x0000ff
    opacity: 0.2
});
var cylinder = new THREE.Mesh(new THREE.CylinderGeometry(radiusTop,radiusBottom, height, segmentsRadius, segmentsHeight, openEnded), material);

cylinder.overdraw = true;

return cylinder;
}

//ALIGN THE CYLINDER TO A GIVEN VECTOR
var alignVector=new THREE.Vector3(-50,50,50); //the vector to be aligned with

var newcylinder = create_cylinder(0.1, 10, 40, 50, 50, false, "0x0ff0f0");  //the object to be aligned with the vector above

var cylinderQuaternion = new THREE.Quaternion();
cylinderQuaternion.setFromEuler(alignVector);
newcylinder.useQuaternion = true;
newcylinder.quaternion=cylinderQuaternion;

scatterPlot.add(newcylinder);

OriginalL'auteur coder99 | 2012-01-27