One vector, V, is specified in a particular scene. The vector is defined using World Coordinates (VWx,VWy,VWz), and it is important to note that this is a direction vector, not a position vector.
In the same scene, there is an Object3D with a random orientation (and position).
The goal is to determine the local coordinates (VLx,VLy,VLz) of the direction vector V relative to the Object3D.
An attempt has been made using the following code (derived from WestLangley's response in this thread), but the results are incorrect:
var VW = new THREE.Vector3(10,20,30);
var VL = new THREE.Vector3(0,0,0);
givenObject.updateMatrixWorld();
var ob_WorldQuaternion = new THREE.Quaternion();
ob_WorldQuaternion = givenObject.getWorldQuaternion();
var ob_InvWorldQuaternion = new THREE.Quaternion();
ob_InvWorldQuaternion = ob_WorldQuaternion.inverse();
VL = VW.applyQuaternion( ob_InvWorldQuaternion);
EDIT(1): It should be noted that the .worldToLocal(vector) method provided by THREE.js for Object3D is not suitable as it is designed for converting position vectors, rather than direction vectors.
EIDT(2): An example application can be seen in this jsfiddle. In this demonstration, the green cone is a child of the green box, and the objective is to keep the green cone pointing in the same world direction as the white world cone.