Camera field of view, frame size at a distance and pixel size on the ground

Shooting parameters

Result

Preparing the calculation…

Angles of view

Horizontal 73.7 °
Vertical 53.1 °
Diagonal 84.1 °

Frame at distance

Width 150.0 m
Height 100.0 m
Area 15000

Detail

Ground sample distance 25.00 mm/px
Pixels per meter 40.0 px/m
Instantaneous field of view 0.250 mrad

Equivalents

Crop factor 1.00 ×
35 mm equivalent 24 mm
Pixel pitch 6.00 µm

Diagram

Top view: field of view and distance. Drag the distance handle.
The frame at this distance. The figure is a person 1.7 m tall.

Where these formulas come from

Pinhole camera model: a sensor of width w sits at distance f behind the optical center, the subject is at distance D. The triangles are similar, so w/f = W/D.
Angle: HFOV = 2 · arctan(w / 2f)
Coverage: W = D · w / f
Pixel size: GSD = (w / Nx) · D / f

The angle depends neither on sensor size nor on focal length alone, only on their ratio. That is why a full frame with 50 mm frames the same scene as a sensor half the size with a 25 mm lens.

Manufacturers quote the diagonal angle — it is the largest of the three and looks better on a spec sheet. To work out the area covered you need the horizontal and vertical ones.

Crop factor is how many times smaller the sensor diagonal is than the 35 mm film frame diagonal (43.27 mm). Multiply the focal length by it to get the equivalent focal length: the lens does not change, only the field of view does.

In photogrammetry the number that matters is GSD, the size of one pixel on the ground. Megapixels alone say nothing about detail without distance and focal length.

Where the model breaks down: wide lenses show noticeable distortion, a fisheye uses a completely different projection, and shooting close up (distance comparable to focal length) needs a magnification correction. The fisheye formula is in the code, commented out.

Python code of the calculation — editable

Everything above the marker is set by the form fields. Everything below is plain Python: edit the formulas and press Run — the result and the diagram will recalculate.