BVB Source Codes

jsfeat Show jsfeat_transform.js Source code

Return Download jsfeat: download jsfeat_transform.js Source code - Download jsfeat Source code - Type:.js
  1. /**
  2.  * @author Eugene Zatepyakin / http://inspirit.ru/
  3.  */
  4.  
  5. (function(global) {
  6.     "use strict";
  7.     //
  8.  
  9.     var transform = (function() {
  10.         //
  11.         return {
  12.             affine_3point_transform: function(mat, src_x0, src_y0, dst_x0, dst_y0,
  13.                                                     src_x1, src_y1, dst_x1, dst_y1,
  14.                                                     src_x2, src_y2, dst_x2, dst_y2) {
  15.                 // we need linear algebra module first
  16.             },
  17.  
  18.             perspective_4point_transform: function(mat, src_x0, src_y0, dst_x0, dst_y0,
  19.                                                         src_x1, src_y1, dst_x1, dst_y1,
  20.                                                         src_x2, src_y2, dst_x2, dst_y2,
  21.                                                         src_x3, src_y3, dst_x3, dst_y3) {
  22.                 var t1 = src_x0;
  23.                 var t2 = src_x2;
  24.                 var t4 = src_y1;
  25.                 var t5 = t1 * t2 * t4;
  26.                 var t6 = src_y3;
  27.                 var t7 = t1 * t6;
  28.                 var t8 = t2 * t7;
  29.                 var t9 = src_y2;
  30.                 var t10 = t1 * t9;
  31.                 var t11 = src_x1;
  32.                 var t14 = src_y0;
  33.                 var t15 = src_x3;
  34.                 var t16 = t14 * t15;
  35.                 var t18 = t16 * t11;
  36.                 var t20 = t15 * t11 * t9;
  37.                 var t21 = t15 * t4;
  38.                 var t24 = t15 * t9;
  39.                 var t25 = t2 * t4;
  40.                 var t26 = t6 * t2;
  41.                 var t27 = t6 * t11;
  42.                 var t28 = t9 * t11;
  43.                 var t30 = 1.0 / (t21-t24 - t25 + t26 - t27 + t28);
  44.                 var t32 = t1 * t15;
  45.                 var t35 = t14 * t11;
  46.                 var t41 = t4 * t1;
  47.                 var t42 = t6 * t41;
  48.                 var t43 = t14 * t2;
  49.                 var t46 = t16 * t9;
  50.                 var t48 = t14 * t9 * t11;
  51.                 var t51 = t4 * t6 * t2;
  52.                 var t55 = t6 * t14;
  53.                 var Hr0 = -(t8-t5 + t10 * t11 - t11 * t7 - t16 * t2 + t18 - t20 + t21 * t2) * t30;
  54.                 var Hr1 = (t5 - t8 - t32 * t4 + t32 * t9 + t18 - t2 * t35 + t27 * t2 - t20) * t30;
  55.                 var Hr2 = t1;
  56.                 var Hr3 = (-t9 * t7 + t42 + t43 * t4 - t16 * t4 + t46 - t48 + t27 * t9 - t51) * t30;
  57.                 var Hr4 = (-t42 + t41 * t9 - t55 * t2 + t46 - t48 + t55 * t11 + t51 - t21 * t9) * t30;
  58.                 var Hr5 = t14;
  59.                 var Hr6 = (-t10 + t41 + t43 - t35 + t24 - t21 - t26 + t27) * t30;
  60.                 var Hr7 = (-t7 + t10 + t16 - t43 + t27 - t28 - t21 + t25) * t30;
  61.                
  62.                 t1 = dst_x0;
  63.                 t2 = dst_x2;
  64.                 t4 = dst_y1;
  65.                 t5 = t1 * t2 * t4;
  66.                 t6 = dst_y3;
  67.                 t7 = t1 * t6;
  68.                 t8 = t2 * t7;
  69.                 t9 = dst_y2;
  70.                 t10 = t1 * t9;
  71.                 t11 = dst_x1;
  72.                 t14 = dst_y0;
  73.                 t15 = dst_x3;
  74.                 t16 = t14 * t15;
  75.                 t18 = t16 * t11;
  76.                 t20 = t15 * t11 * t9;
  77.                 t21 = t15 * t4;
  78.                 t24 = t15 * t9;
  79.                 t25 = t2 * t4;
  80.                 t26 = t6 * t2;
  81.                 t27 = t6 * t11;
  82.                 t28 = t9 * t11;
  83.                 t30 = 1.0 / (t21-t24 - t25 + t26 - t27 + t28);
  84.                 t32 = t1 * t15;
  85.                 t35 = t14 * t11;
  86.                 t41 = t4 * t1;
  87.                 t42 = t6 * t41;
  88.                 t43 = t14 * t2;
  89.                 t46 = t16 * t9;
  90.                 t48 = t14 * t9 * t11;
  91.                 t51 = t4 * t6 * t2;
  92.                 t55 = t6 * t14;
  93.                 var Hl0 = -(t8-t5 + t10 * t11 - t11 * t7 - t16 * t2 + t18 - t20 + t21 * t2) * t30;
  94.                 var Hl1 = (t5 - t8 - t32 * t4 + t32 * t9 + t18 - t2 * t35 + t27 * t2 - t20) * t30;
  95.                 var Hl2 = t1;
  96.                 var Hl3 = (-t9 * t7 + t42 + t43 * t4 - t16 * t4 + t46 - t48 + t27 * t9 - t51) * t30;
  97.                 var Hl4 = (-t42 + t41 * t9 - t55 * t2 + t46 - t48 + t55 * t11 + t51 - t21 * t9) * t30;
  98.                 var Hl5 = t14;
  99.                 var Hl6 = (-t10 + t41 + t43 - t35 + t24 - t21 - t26 + t27) * t30;
  100.                 var Hl7 = (-t7 + t10 + t16 - t43 + t27 - t28 - t21 + t25) * t30;
  101.  
  102.                 // the following code computes R = Hl * inverse Hr
  103.                 t2 = Hr4-Hr7*Hr5;
  104.                 t4 = Hr0*Hr4;
  105.                 t5 = Hr0*Hr5;
  106.                 t7 = Hr3*Hr1;
  107.                 t8 = Hr2*Hr3;
  108.                 t10 = Hr1*Hr6;
  109.                 var t12 = Hr2*Hr6;
  110.                 t15 = 1.0 / (t4-t5*Hr7-t7+t8*Hr7+t10*Hr5-t12*Hr4);
  111.                 t18 = -Hr3+Hr5*Hr6;
  112.                 var t23 = -Hr3*Hr7+Hr4*Hr6;
  113.                 t28 = -Hr1+Hr2*Hr7;
  114.                 var t31 = Hr0-t12;
  115.                 t35 = Hr0*Hr7-t10;
  116.                 t41 = -Hr1*Hr5+Hr2*Hr4;
  117.                 var t44 = t5-t8;
  118.                 var t47 = t4-t7;
  119.                 t48 = t2*t15;
  120.                 var t49 = t28*t15;
  121.                 var t50 = t41*t15;
  122.                 mat[0] = Hl0*t48+Hl1*(t18*t15)-Hl2*(t23*t15);
  123.                 mat[1] = Hl0*t49+Hl1*(t31*t15)-Hl2*(t35*t15);
  124.                 mat[2] = -Hl0*t50-Hl1*(t44*t15)+Hl2*(t47*t15);
  125.                 mat[3] = Hl3*t48+Hl4*(t18*t15)-Hl5*(t23*t15);
  126.                 mat[4] = Hl3*t49+Hl4*(t31*t15)-Hl5*(t35*t15);
  127.                 mat[5] = -Hl3*t50-Hl4*(t44*t15)+Hl5*(t47*t15);
  128.                 mat[6] = Hl6*t48+Hl7*(t18*t15)-t23*t15;
  129.                 mat[7] = Hl6*t49+Hl7*(t31*t15)-t35*t15;
  130.                 mat[8] = -Hl6*t50-Hl7*(t44*t15)+t47*t15;
  131.             },
  132.  
  133.             invert_affine_transform: function(src, dst) {
  134.                 var m11 = src[0], m12 = src[1], m13 = src[2];
  135.                 var m21 = src[3], m22 = src[4], m23 = src[5];
  136.  
  137.                 var det = 1.0 / (m11 * m22 - m12 * m21);
  138.  
  139.                 dst[0] = det * m22;
  140.                 dst[1] = det * -m12;
  141.                 dst[2] = det * (m12*m23 - m13*m22);
  142.  
  143.                 dst[3] = det * -m21;
  144.                 dst[4] = det * m11;
  145.                 dst[5] = det * (m13*m21 - m11*m23);
  146.             },
  147.  
  148.             invert_perspective_transform: function(src, dst) {
  149.                 var m11 = src[0], m12 = src[1], m13 = src[2];
  150.                 var m21 = src[3], m22 = src[4], m23 = src[5];
  151.                 var m31 = src[6], m32 = src[7], m33 = src[8];
  152.  
  153.                 var det = 1.0 / (m11 * (m22*m33 - m23*m32) - m12 * (m21*m33 - m23*m31) + m13 * (m21*m32 - m22*m31));
  154.  
  155.                 dst[0] = det * (m22*m33 - m23*m32);
  156.                 dst[1] = det * (m13*m32 - m12*m33);
  157.                 dst[2] = det * (m12*m23 - m13*m22);
  158.  
  159.                 dst[3] = det * (m23*m31 - m21*m33);
  160.                 dst[4] = det * (m11*m33 - m13*m31);
  161.                 dst[5] = det * (m13*m21 - m11*m23);
  162.  
  163.                 dst[6] = det * (m21*m32 - m22*m31);
  164.                 dst[7] = det * (m12*m31 - m11*m32);
  165.                 dst[8] = det * (m11*m22 - m12*m21);
  166.             }
  167.         };
  168.     })();
  169.  
  170.     global.transform = transform;
  171.  
  172. })(jsfeat);
downloadjsfeat_transform.js Source code - Download jsfeat Source code
Related Source Codes/Software:
flakes - Flakes is an Admin Template Framework. A combinati... 2017-04-15
capstone - Capstone disassembly/disassembler framework: Core ... 2017-04-15
nginx-resources - A collection of resources covering Nginx, Nginx + ... 2017-04-15
utron - A lightweight MVC framework for Go(Golang) 2017-04-15
cfssl - CFSSL: Cloudflare's PKI and TLS toolkit ... 2017-04-15
MLeaksFinder - Find memory leaks in your iOS app at develop time. 2017-04-16
qt - Qt binding for Go (Golang) which supports Windows ... 2017-04-16
rainloop-webmail - Simple, modern & fast web-based email client ... 2017-04-16
pencil - Multiplatform GUI Prototyping/Wireframing 2017-04-16
x64dbg - An open-source x64/x32 debugger for windows. ... 2017-04-16
Toucan - Fabulous Image Processing in Swift 2017-04-23
CoffeeScriptRedux - 2017-04-23
breakpoint - Really simple media queries in Sa 2017-04-23
libsvm - 2017-04-22
grr - GRR Rapid Response: remote live forensics for inci... 2017-04-22
grit - **Grit is no longer maintained. Check out libgit2/... 2017-04-22
guard-livereload - Guard::LiveReload automatically reload your browse... 2017-04-22
Begin-Latex-in-minutes - Brief Intro to LaTeX for beginners that helps you ... 2017-04-22
wicked - Use wicked to turn your controller into a wizard ... 2017-04-22
flexboxfroggy - A game for learning CSS flexbox ... 2017-04-22

 Back to top