Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

perspective-transform

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

perspective-transform

Access perspective transform functions and matrices given two sets of four points

  • 1.1.3
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
813
increased by196.72%
Maintainers
1
Weekly downloads
 
Created
Source

perspective-transform

A small JavaScript library for creating and applying perspective transforms. A perspective transform can easily be used to map one 2D quadrilateral to another, given the corner coordinates for the source and destination quadrilaterals. Here is a useful resource for learning more about perspective transforms and the math behind them. And here is a blog post I wrote about the motivation for creating this library and details of some of its applications.

Features

  • Create functions to map points from one arbitrary quadrilateral to another and vice versa with the inverse
  • Access the homographic matrix and its inverse (useful for transforming elements with CSS3)
  • No external dependencies

Install

With npm:

$ npm install perspective-transform --save

With bower:

$ bower install perspective-transform --save

Basic Usage

Node

var PerspT = require('perspective-transform');

var srcCorners = [158, 64, 494, 69, 495, 404, 158, 404];
var dstCorners = [100, 500, 152, 564, 148, 604, 100, 560];
var perspT = PerspT(srcCorners, dstCorners);
var srcPt = [250, 120];
var dstPt = perspT.transform(srcPt[0], srcPt[1]);
// [117.27521125839255, 530.9202410878403]

Browser

<script type="text/javascript" src="async.js"></script>
<script type="text/javascript">
  
  var srcCorners = [158, 64, 494, 69, 495, 404, 158, 404];
  var dstCorners = [100, 500, 152, 564, 148, 604, 100, 560];
  var perspT = PerspT(srcCorners, dstCorners);
  var srcPt = [250, 120];
  var dstPt = perspT.transform(srcPt[0], srcPt[1]);
  // [117.27521125839255, 530.9202410878403]

</script>

API Documentation

Note: Commented variable values in the following examples assume srcPts and dstPts as used in the Basic Usage example above.

### transform

Map a point from the source quadrilateral to the destination quadrilateral.

var perspT = PerspT(srcPts, dstPts);
var dstPt = perspT.transform(250, 120);
// [117.27521125839255, 530.9202410878403]
### transformInverse

Map a point from the destination quadrilateral to the source quadrilateral.

var perspT = PerspT(srcPts, dstPts);
var srcPt = perspT.transformInverse(130, 570);
// [338.99465637447327, 278.6450957956236]
### srcPts

Get the coordinates of the corners of the transform's source quadrilateral, expressed as an array.

var perspT = PerspT(srcPts, dstPts);
var srcPts = perspT.srtPts;
// [158, 64, 494, 69, 495, 404, 158, 404]
### dstPts

Get the coordinates of the corners of the transform's destination quadrilateral, expressed as an array.

var perspT = PerspT(srcPts, dstPts);
var dstPts = perspT.dstPts;
// [100, 500, 152, 564, 148, 604, 100, 560]
### coeffs

Get the homographic transform matrix, expressed as an array of coefficients.

var perspT = PerspT(srcPts, dstPts);
var mat = perspT.coeffs;
// [0.3869749384, 0.0426817448, 59.2427947969, 0.9589610618, 0.4562821238, 434.8644299345, 0.0012901794, 0.0004268174, 1]
### coeffsInv

Get the inverse homographic transform matrix, expressed as an array of coefficients.

var perspT = PerspT(srcPts, dstPts);
var mat = perspT.coeffsInv;
// [1.9955408809, -0.1282507787, -62.4497171511, -2.9335671323, 2.2894572644, -821.8108124927, -0.0013225082, -0.0008117138, 1]

FAQs

Package last updated on 09 Oct 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc