UNPKG

tapspace

Version:

A zoomable user interface lib for web apps

30 lines (25 loc) 713 B
const scalar2 = require('affineplane').scalar2 module.exports = function (plane, camera) { // @Area:projectTo(plane, camera) // // Project the area measure onto a plane. Can be used for // measuring item's apparent area on viewport, for example. // // Parameters: // plane // a BasisComponent, the view plane to which to project. // camera // a Point, the camera position. // // Return // a Point // // Normalize camera if (camera.transitRaw) { camera = camera.transitRaw(this.basis) } const pr = this.basis.getTransitionFrom(plane) const ss = scalar2.projectToPlane(this.area, pr, camera) const Area = this.constructor return new Area(plane, ss) }