Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Estimate scale, rotation, and translation between two sets of 2D points e.g. for multi-touch gestures or calibration
0.3.1
A Python lib to estimate scale, rotation, and translation between two sets of 2D points. Applicable for example in cases where one wants to move objects by multiple fingers or where a large number of points from an eye tracker device are wanted to be corrected based on a few calibration points. In general, you can apply nudged in any situation where you want to move a number of points based on a few sample points.
.. image:: https://raw.githubusercontent.com/axelpale/nudged-py/master/doc/nudged-logo.png :alt: Example transformation :height: 353px :width: 300px
Mathematically speaking, nudged is an optimal least squares estimator for affine transformation matrices <https://en.wikipedia.org/wiki/Affine_transformation>
_ with uniform scaling, rotation, and translation and without reflection or shearing. The estimation has time complexity of O(n) that consists of 6n+22 multiplications and 11n+19 additions, where n is the cardinality (size) of the point sets. In other words, nudged solves an affine 2D to 2D point set registration problem in linear time.
Available also in JavaScript <https://www.npmjs.com/package/nudged>
_.
$ pip install nudged
You have lists of points for the domain and range of the tranformation function to be estimated::
dom = [[0,0], [2,0], [ 1,2]]
ran = [[1,1], [1,3], [-1,2]]
Compute optimal tranformation based on the points::
trans = nudged.estimate(dom, ran);
Apply the transformation to other points::
trans.transform([2,2])
# [-1,3]
To explore the estimated transformation, you can::
trans.get_matrix()
# [[0,-1, 1],
# [1, 0, 1],
# [0, 0, 1]]
trans.get_rotation()
# 1.5707... = π / 2 (radians)
trans.get_scale()
# 1.0
trans.get_translation()
# [1, 1]
Parameters
The domain and range should have equal length. Different lengths are allowed but additional points in the longer list are ignored.
Return a new nudged.Transform(...) instance.
Compute mean squared distance between the point pairs of the domain after the given transformation and the range. If the transform was estimated with the given domain and range, then the result is the mean squared error (MSE) of the estimation.
Parameters
Return a float, the mean squared distance between the range and transformed domain point pairs.
Usage example::
dom = [[0, 0], [1, 1], [2, 2]]
ran = [[0,-1], [1, 2], [2,-1]]
t = nudged.estimate(dom, ran)
mse = nudged.estimate_error(t, dom, ran)
# mse == 2.0
Contains the module version string equal to the version in setup.py.
An instance returned by the nudged.estimate(...).
In addition to the methods below, it has attributes s, r, tx, ty that define the augmented transformation matrix <https://en.wikipedia.org/wiki/Affine_transformation#Augmented_matrix>
_::
|s -r tx|
|r s ty|
|0 0 1|
nudged.Transform#transform(points) ..................................
Return an list of transformed points or single point if only a point was given. For example::
trans.transform([1,1]) # [2,2]
trans.transform([[1,1]]) # [[2,2]]
trans.transform([[1,1], [2,3]]) # [[2,2], [3,4]]
nudged.Transform#get_matrix() .............................
Return an 3x3 augmented transformation matrix in the following list format::
[[s,-r, tx],
[r, s, ty],
[0, 0, 1]]
nudged.Transform#get_rotation() ...............................
Return rotation in radians.
nudged.Transform#get_scale() ............................
Return scaling multiplier, e.g. 0.333
for a threefold shrink.
nudged.Transform#get_translation() ..................................
Return [tx, ty]
where tx
and ty
denotes movement along x-axis and y-axis accordingly.
Follow instructions to install pyenv
http://sqa.stackexchange.com/a/15257/14918`_ and then either run quick tests::
$ python2.7 setup.py test
or comprehensive tests for multiple Python versions in tox.ini
::
$ eval "$(pyenv init -)"
$ pyenv rehash
$ tox
Semantic Versioning 2.0.0 <http://semver.org/>
_
MIT License <http://github.com/axelpale/nudged-py/blob/master/LICENSE>
_
FAQs
Estimate scale, rotation, and translation between two sets of 2D points e.g. for multi-touch gestures or calibration
We found that nudged demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.