Объекты не вращаются последовательно в трехJavascript

Форум по Javascript
Ответить
Anonymous
 Объекты не вращаются последовательно в трех

Сообщение Anonymous »

Я делаю опыт работы с трубкой, используя три. У меня есть проблема, в которой 10% поездов не следуют вращению, как и ожидалось. Я попытался использовать Lookat () , однако это не сработало, поэтому создал эту пользовательскую функцию, см. Сплык ниже. Функция принимает три параметра, где из и до являются мировыми позициями от FromStation и tostation . Параметр TOL является толерантностью к точности, чтобы закрепить его в определенном направлении.
фрагмент кода:
const getDirection = (from, to) => {
const x = from.x - to.x
const y = from.y - to.y
const z = from.z - to.z
const total = (x + y + z) / 3
const dir = total < 0 ? -1 : 1
return dir
}

const getNormVal = (value, inv, tol) => {
const inversion = inv ? -1 : 1
if (value < tol && value > -tol) return 0
if (value < 0) return -1 * inversion
if (value > 0) return 1 * inversion
}

const getRotation = (from, to, tol) => {
const dir = new THREE.Vector3()
dir.x = getNormVal(from.x - to.x, false, tol)
dir.y = getNormVal(from.y - to.y, false, tol)
dir.z = getNormVal(from.z - to.z, false, tol)

let rotation = 0
if (dir.x === 1) rotation += 3.14
if (dir.z === -1 && dir.x === 0) rotation += 1.57
if (dir.z === 1 && dir.x === 0) rotation += -1.57
if (dir.x === 1 && dir.z !== 0) rotation += -0.785 * dir.z
if (dir.x === -1 && dir.z !== 0) rotation += 0.785 * dir.z

return rotation
}
< /code>
Изображение:
Изображение ошибки вращения трубки < /p>

Подробнее здесь: https://stackoverflow.com/questions/796 ... in-threejs
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»