Perspective Lab

Move the station point, viewing distance, cone of vision, 90° legs and vanishing points. The construction and the box update together. Drag the sheet to pan, scroll to zoom.

Presets
construction (SP, horizon, cone, legs) vanishing points, converging edges visual rays, plan method the box
Two-point perspective

    How the pieces fit together

    The sheet is a window, SP is your eye

    Your line of sight hits the window at the centre of vision, CV. The distance from your eye to the window is D. For the paper method, fold the eye down onto the sheet and draw SP D below CV on the vertical through CV. Draw the plan on the same sheet, with the horizon as the window seen edge-on. A visual ray from SP to a plan corner crosses the horizon where that corner belongs in the drawing.

    The horizon is your eye level

    Every horizontal direction vanishes somewhere on this line. Raise your eye and the box moves down against the horizon. Lower your eye and the box moves up. SP, the cone and the VPs stay put.

    The cone of vision is a check, not a construction

    The eye sees comfortably within about 30° of the line of sight. On the sheet that is a circle around CV with radius D · tan(30°) ≈ 0.58 · D. Changing the cone changes nothing in the projection; it only changes how far from CV you allow yourself to draw before things look stretched to someone viewing the sheet from a normal distance. On paper it is how you find D: circle your composition, then D = r / tan(30°). The button under Advanced does exactly that.

    The box corner sets the 90°

    From SP draw two legs parallel to the box's two horizontal edge directions. Where they hit the horizon are VP1 and VP2. The legs are 90° apart because the box is rectangular. Turn the box and both legs swing together. One VP comes in, the other runs out. Use a different angle and you are drawing a prism with that corner angle.

    One-point is two-point with the box turned square

    At 0° one leg runs along the horizon and never meets it. That VP is at infinity, so those edges stay parallel to the horizon. The other leg points straight at CV, which is where the receding edges meet. Nothing else changes.

    Three-point is a tilted line of sight

    Sliding the horizon up or down the page only changes eye height. Tilt the line of sight instead and the window tilts with it: verticals converge to VP3 at D / tan(tilt) above or below CV, and the horizon moves to D · tan(tilt) on the other side of CV. The two horizontal VPs spread apart by 1 / cos(tilt), which is why the SP folded about the horizon now sits D / cos(tilt) below it.

    Wide-angle and telephoto are just D

    Small D puts SP close to the sheet. The VPs crowd in, the cone circle shrinks and convergence gets fast. That is the wide-angle look. Large D flattens convergence, grows the circle and sends the VPs off the sheet. That is the telephoto look. The front edge of the box stays the same size because it sits on the window.

    A camera lens is D plus a frame

    The focal length is D, scaled to the sheet; the sensor is the frame; the lens's diagonal angle of view is the cone, and the frame sits inscribed in it. A 60° cone is about a 37 mm lens on full frame. 50 mm gives 47°, 24 mm gives 84°, which is why a wide lens warps boxes near the frame edge: with 84° the VPs of a 45° box fall inside the circle.

    Quick reference

    Formulas for D, the cone, SP, the VPs and lenses
    Cone of vision radius on the sheet
    r = D · tan(cone ÷ 2), so a 60° cone gives r ≈ 0.58 · D
    Viewing distance from a chosen composition circle
    D = r ÷ tan(30°) ≈ 1.73 · r
    Station point
    On the vertical through CV, D below the horizon (D ÷ cos(tilt) when the line of sight is tilted)
    Vanishing points of a box rotated θ
    VP1 = D · cot(θ) and VP2 = −D · tan(θ) from CV along the horizon; at 45° both sit at ±D
    Three-point, line of sight tilted by φ
    Horizon moves to −D · tan(φ), verticals meet at VP3 = D · cot(φ), horizontal VPs spread by 1 ÷ cos(φ)
    Camera lens
    D = focal length × frame width ÷ sensor width; cone = diagonal angle of view 2 · atan(sensor diagonal ÷ 2f); 60° ≈ 37 mm on full frame