
Security News
MCP Community Begins Work on Official MCP Metaregistry
The MCP community is launching an official registry to standardize AI tool discovery and let agents dynamically find and install MCP servers.
camera-2d-simple
Advanced tools
Simple camera built on top of gl-matrix for 2D scenes. Heavily inspired by Mikola's Orbit Camera.
Also see:
npm install camera-2d-simple gl-matrix
Note, gl-matrix
is a required dependency but it's not prebundled!
import createCamera from 'camera-2d-simple';
# createCamera(target = [0,0], distance = 1, rotation = 0, viewCenter = [0,0], scaleBounds = [[0, Infinity], [0, Infinity]], translationBounds = [[-Infinity, Infinity], [-Infinity, Infinity]])
Creates a 2d camera looking at target
from a certain distance
.
target
is the 2d vector the camera is looking at.distance
is the distance between the target and the camera.rotation
is angle in radiance around the z axis with respect to the viewport center.viewCenter
is the center point of the canvas w.r.t the view coordinates. When operating in normalized-device coordinates this must be [0,0]
but the center can differ when operating in pixel coordinates.scaleBounds
are the min and max allowed scalings in the x and y direction.translationBounds
are the min and max allowed translation in the x and y direction.Returns A new 2d camera object
# camera.view
The current view matrix (mat4
) of the camera.
# camera.viewCenter
The current view center.
# camera.translation
The camera translation needed to look at the target
.
# camera.target
The camera center in normalized device coordinates. This is a shorthand for inverseOf(camera.view
) * [0,0,0,1]
.
# camera.scaling
The camera scaling. Larger scaling means the camera is closer to the target. This is the inverse of distance
, i.e., 1 / distance
.
# camera.scaleBounds
The scale limits.
# camera.distance
Distance of the camera to the target. This is the inverse of scaling
, i.e., 1 / scaling
.
# camera.rotation
Rotation in radians around the z axis.
# camera.lookAt(target = [0,0], distance = 1, rotation = 0)
Move the camera center to target
given the distance
and rotation
.
# camera.translate([x,y])
Moves the center of the camera by x
and y
pixel.
# camera.pan([x,y])
Same as camera.translate()
# camera.scale(delta, scaleCenter)
Zooms in or out by delta
with respect to scaleCenter
in [x,y]
. The new distance will be distance * delta
.
For x and y specific scaling, you can specify a tuple as detla ([xDelta, yDelta]
).
# camera.zoom(delta, scaleCenter)
Same as camera.scale()
# camera.rotate(angle)
Rotate the camera by angle
(in radians) around the z axis with respect to the viewport center.
# camera.setScaleBounds(bounds)
Set the scaling limits. Expects a tuple of the min and max allowed scale factors.
For x and y specific scale bound, you can specify a tuple of tuple ([[xScaleMin, xScaleMax], [yScaleMin, yScaleMax]]
). Make sure to take special care when using scale()
in this scenario as the scale can get out of sync.
# camera.setView(view)
Set the camera to the view
matrix (mat4
).
# camera.setViewCenter(viewCenter)
Set viewCenter
w.r.t. the canvas.
# camera.reset()
Reset the camera to the initial target
, distance
, and rotation
.
v3.0.0
camera.setTranslationBounds([xTranslationBounds, yTranslationBounds])
camera.minScaling
, camera.maxScaling
, camera.minDistance
, and camera.maxDistance
for conveniencescaleBounds
to support x and y scale bounds: camera.setScaleBounds([xScaleBounds, yScaleBounds])
Breaking Change:
camera.scaling
is now a tuple: [xScaling, yScaling]
camera.distance
is now a tuple: [xDistance, yDistance]
FAQs
2D camera for WebGL
The npm package camera-2d-simple receives a total of 322 weekly downloads. As such, camera-2d-simple popularity was classified as not popular.
We found that camera-2d-simple demonstrated a not healthy version release cadence and project activity because the last version was released 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.
Security News
The MCP community is launching an official registry to standardize AI tool discovery and let agents dynamically find and install MCP servers.
Research
Security News
Socket uncovers an npm Trojan stealing crypto wallets and BullX credentials via obfuscated code and Telegram exfiltration.
Research
Security News
Malicious npm packages posing as developer tools target macOS Cursor IDE users, stealing credentials and modifying files to gain persistent backdoor access.