Created
October 11, 2015 18:21
-
-
Save adambutler/97d45a9fc5ee432ebbb6 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var divider, mappedCoords, an, bn, cn, dn, en, fn; | |
var ref0 = [0, 0]; // upper left corner | |
var ref1 = [0, 1024]; // lower left corner | |
var ref2 = [1280, 0]; // upper right corner | |
var ref3 = [1280, 1024]; // lower right corner | |
// Tomap -> which are mapped to [ref0, ref1, ref2, ref3, ref4] | |
var tomap0 = [0, 0]; // upper left corner | |
var tomap1 = [0, 768]; // lower left corner | |
var tomap2 = [1024, 0]; // upper right corner | |
var tomap3 = [1024, 768]; // lower right corner | |
// testpoint | |
var testpoint = testpoint = [1280, 1024]; | |
function calculateDivider() { | |
var result = ((tomap0[0] - tomap2[0]) * (tomap1[1] - tomap2[1])) - ((tomap1[0] - tomap2[0]) * (tomap0[1] - tomap2[1])); | |
if (result == 0.0) { | |
console.log("Divider is ZERO - check your coords"); | |
} else { | |
divider = result; | |
console.log("Divider is:" + divider); | |
calculateAn(); | |
calculateBn(); | |
calculateCn(); | |
calculateDn(); | |
calculateEn(); | |
calculateFn(); | |
} | |
return result; | |
} | |
function calculateAn() { | |
var result = ((ref0[0] - ref2[0]) * (tomap1[1] - tomap2[1])) - ((ref1[0] - ref2[0]) * (tomap0[1] - tomap2[1])); | |
an = result; | |
console.log("An derived " + an); | |
return result; | |
} | |
function calculateBn() { | |
var result = ((tomap0[0] - tomap2[0]) * (ref1[0] - ref2[0])) - ((ref0[0] - ref2[0]) * (tomap1[0] - tomap2[0])); | |
bn = result; | |
console.log("Bn derived " + bn); | |
return result; | |
} | |
function calculateCn() { | |
var result = (tomap2[0] * ref1[0] - tomap1[0] * ref2[0]) * tomap0[1] + (tomap0[0] * ref2[0] - tomap2[0] * ref0[0]) * tomap1[1] + (tomap1[0] * ref0[0] - tomap0[0] * ref1[0]) * tomap2[1]; | |
cn = result; | |
console.log("Cn derived " + cn); | |
return result; | |
} | |
function calculateDn() { | |
var result = ((ref0[1] - ref2[1]) * (tomap1[1] - tomap2[1])) - ((ref1[1] - ref2[1]) * (tomap0[1] - tomap2[1])); | |
dn = result; | |
console.log("Dn derived " + dn); | |
return result; | |
} | |
function calculateEn() { | |
var result = ((tomap0[0] - tomap2[0]) * (ref1[1] - ref2[1])) - ((ref0[1] - ref2[1]) * (tomap1[0] - tomap2[0])); | |
en = result; | |
console.log("En derived " + en); | |
return result; | |
} | |
function calculateFn() { | |
var result = (tomap2[0] * ref1[1] - tomap1[0] * ref2[1]) * tomap0[1] + (tomap0[0] * ref2[1] - tomap2[0] * ref0[1]) * tomap1[1] + (tomap1[0] * ref0[1] - tomap0[0] * ref1[1]) * tomap2[1]; | |
fn = result; | |
console.log("Fn derived " + fn); | |
return result; | |
} | |
// Use this method in test case | |
function deriveMappingCoords(point) { | |
console.log(divider) | |
if (divider != 0) { | |
var x = ((an * point[0]) + (bn * point[1]) + cn) / divider; | |
var y = ((dn * point[0]) + (en * point[1]) + fn) / divider; | |
console.log("Test: " + " " + "X mapped to: " + x + " / " + "Y mapped to: " + y + "\n"); | |
} | |
} | |
calculateDivider(); | |
deriveMappingCoords(testpoint); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment