Я искал по всему миру, но, похоже, не мог понять эту довольно элементарную вещь. Я видел другие примеры в stackoverflow и других местах за год или два назад, но они не работают с последней версией Three.js.
Вот версия того, над чем я работаю: http://medschoolgunners.com/sandbox/3d/.
Я стараюсь, чтобы серый конус точно совпадал с немаркированным красным вектором. То есть. Я хочу, чтобы кончик конуса был точно выровнен с вектором и указывал из начала координат в этом направлении.
Вот код, который у меня есть прямо сейчас:
//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);