Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
A JavaScript tool for calculating the depth of field of camera lenses
The general idea is to create a lens object, with specified aperture, focal length, and crop factor values; and then retrieving the object's depth of field object for a given distance to the subject.
yarn add dof
# or
npm install dof
import { Lens } from 'dof'
const lens = new Lens()
That will give us a lens object with default values:
lens.focalLength // 35 (millimeters)
lens.aperture // 'f/2'
lens.cropFactor // 1 (i.e. standard full frame)
Let's change those to fit the particular lens we have in mind:
const lens = new Lens(35, 'f/2.5', 1.62);
You can create function which generates lenses in bulk using your own set of defauls. For example, you might want to calculate the depth of field for many lenses with a common sensor crop factor of 1.62
:
const lensMaker = createLensMaker({ cropFactor: 1.62 })
const lens1 = lensMaker()
const lens2 = lensMaker({ aperture: 'f/3.6' })
The complete list of configurable defaults:
focalLength: 35 // Number, in millimeters; this must be the actual focal length, not the 35mm equivalent value
aperture: 'f/2' // String in the format `"f/2.5"`
cropFactor: 1 // Floating point number; sensor's crop factor compared to full frame
Lenses can be assigned arbitrary IDs to make it easier to keep track of them:
const lens = new Lens(35, 'f/2.5', 1.62, 'my-lens-ID');// Optional; string
console.log(lens.id) // 'my-lens-ID'
To perform a calculation you must specify the distance between the camera and the subject. You can either set a default or pass a particular distance. The value must be a number as measured in meters (default) or feet.
// Specify distance directly
const result1 = lens.dof(5) // 5 mmeters, the default value
const result2 = lens.dof(22.6) // 22 meters and 60 centimeters
// Imperial units
const result2 = lens.dof(15, true) // 15 feet, the default value
The result
object contains several properties:
result.dof // Total length of the depth of field; float (e.g. `20.5`), meters or feet
result.eighthDof // One-eighth of the depth of field; float (e.g. `2.5625`), meters or feet
result.hf // Hyperfocal distance; float, meters or feet
result.near // Distance to the nearest edge of the in-focus field; float, meters or feet
result.far // Distance to the farthest edge of the in-focus field; float, meters or feet
result.coc // Circle of confusion; float, always millimeters
Note that the value of those properties may be Infinity
. This is especially common with small sensor sizes (large crop factors), short focal lengths, and/or small apertures (large f/
values).
You can use the .toString()
method to get the depth of field value as a string. For example, 20' 5.2"
is 20 feet, 5.2 inches.
const str = result.toString()
All properties have an equivalent string representation, accessible through the .toString
property:
result.toString.dof // Same as `result.toString()`
result.toString.eighthDof
result.toString.hf
result.toString.near
result.toString.far
A shorthand way to quickly acquire the depth of field value:
const num = lens.dof().dof // float
const str = lens.dof().toString() // string
Or with a specific distance value:
const num = lens.dof(15).dof // float
const str = lens.dof(15).toString() // string
Lens()
instances use the DepthOfFieldLens
type which can be imported from the module.
Calculate the depth of field for multiple lenses and compare them side-by-side
FAQs
Depth-of-field calculator for comparing camera lenses
We found that dof 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.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.