Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var testtt = [[0], [200], [15]];
- var rrr = rotateECEF(this.heading_pitch_roll().x, this.heading_pitch_roll().y, this.heading_pitch_roll().z, testtt);
- function rotateECEF(xangle, yangle, zangle, origCoords) {
- // Yaw correction
- var Bmat = ([[Math.cos(xangle), Math.sin(xangle), 0], [-Math.sin(xangle), Math.cos(xangle), 0], [0, 0, 1]]);
- // Pitch correction
- var Cmat = ([[Math.cos(yangle), 0, -Math.sin(yangle)], [0, 1, 0], [Math.sin(yangle), 0, Math.cos(yangle)]]);
- // Roll correction
- var Dmat = ([[1, 0, 0], [0, Math.cos(zangle), Math.sin(zangle)], [0, -Math.sin(zangle), Math.cos(zangle)]]);
- return multiplyMatrices(multiplyMatrices(multiplyMatrices(Bmat, Cmat), Dmat), origCoords);
- function multiplyMatrices(m1, m2) {
- var result = [];
- for (var i = 0; i < m1.length; i++) {
- result[i] = [];
- for (var j = 0; j < m2[0].length; j++) {
- var sum = 0;
- for (var k = 0; k < m1[0].length; k++) {
- sum += m1[i][k] * m2[k][j];
- }
- result[i][j] = sum;
- }
- }
- return result;
- var aim = aimAngle(rrr, [0,0,0], 141.421);
- function aimAngle(targetPos, targetVelo, bulletSpeed) {
- var rCrossVYaw = targetPos[0] * targetVelo[1] - targetPos[1] * targetVelo[0];
- var magRYaw = Math.sqrt(targetPos[0]*targetPos[0] + targetPos[1]*targetPos[1]);
- var rCrossVPitch = magRYaw * targetVelo[2] - targetPos[2] * Math.sqrt(targetVelo[0]*targetVelo[0] + targetVelo[1]*targetVelo[1]);
- var magRPitch = Math.sqrt(magRYaw*magRYaw + targetPos[2]*targetPos[2]);
- var angleAdjustYaw = Math.asin(rCrossVYaw / (bulletSpeed * magRYaw));
- var angleAdjustPitch = Math.asin(rCrossVPitch / (bulletSpeed * magRPitch));
- return [-(angleAdjustYaw + Math.atan2(targetPos[1], targetPos[0])), -(angleAdjustPitch + Math.atan2(targetPos[2], magRYaw))];
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement