mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-07 02:43:21 +02:00
48 lines
1.4 KiB
JavaScript
48 lines
1.4 KiB
JavaScript
//
|
|
// Created by Anthony J. Thibault on 2016/06/21
|
|
// Copyright 2016 High Fidelity, Inc.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
// ctor
|
|
Xform = function(rot, pos) {
|
|
this.rot = rot;
|
|
this.pos = pos;
|
|
}
|
|
|
|
Xform.ident = function() {
|
|
return new Xform({x: 0, y: 0, z: 0, w: 1}, {x: 0, y: 0, z: 0});
|
|
};
|
|
|
|
Xform.mul = function(lhs, rhs) {
|
|
var rot = Quat.multiply(lhs.rot, rhs.rot);
|
|
var pos = Vec3.sum(lhs.pos, Vec3.multiplyQbyV(lhs.rot, rhs.pos));
|
|
return new Xform(rot, pos);
|
|
};
|
|
|
|
Xform.prototype.inv = function() {
|
|
var invRot = Quat.inverse(this.rot);
|
|
var invPos = Vec3.multiply(-1, this.pos);
|
|
return new Xform(invRot, Vec3.multiplyQbyV(invRot, invPos));
|
|
};
|
|
|
|
Xform.prototype.mirrorX = function() {
|
|
return new Xform({x: this.rot.x, y: -this.rot.y, z: -this.rot.z, w: this.rot.w},
|
|
{x: -this.pos.x, y: this.pos.y, z: this.pos.z});
|
|
};
|
|
|
|
Xform.prototype.xformVector = function (vector) {
|
|
return Vec3.multiplyQbyV(this.rot, vector);
|
|
}
|
|
|
|
Xform.prototype.xformPoint = function (point) {
|
|
return Vec3.sum(Vec3.multiplyQbyV(this.rot, point), this.pos);
|
|
}
|
|
|
|
Xform.prototype.toString = function() {
|
|
var rot = this.rot;
|
|
var pos = this.pos;
|
|
return "Xform rot = (" + rot.x + ", " + rot.y + ", " + rot.z + ", " + rot.w + "), pos = (" + pos.x + ", " + pos.y + ", " + pos.z + ")";
|
|
};
|