Skip to content

Instantly share code, notes, and snippets.

@adambutler
Created October 11, 2015 18:21
Show Gist options
  • Save adambutler/97d45a9fc5ee432ebbb6 to your computer and use it in GitHub Desktop.
Save adambutler/97d45a9fc5ee432ebbb6 to your computer and use it in GitHub Desktop.
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