Polarization filters light by the orientation of its electric field, and an analyzer at angle θ transmits I = I0·cos²θ of it — Malus's law. Use the sliders and the source toggle below to drive the beam, and watch it brighten and dim exactly as the formula demands.
The controls map straight onto a real optics bench. Drag the intensity slider to set the incoming brightness I0, drag the analyzer angle slider to rotate the second filter against the first, and use the source toggle to switch between unpolarized and already-polarized light. Every change updates the transmitted-intensity readout instantly, together with the percentage passed and the raw value of cos²θ.
What the readouts prove is the point of the exercise: the beam brightens to its maximum when the axes align, fades to nothing at 90°, and at every angle in between the number shown is exactly I0·cos²θ. The simulator is solving Malus's law live rather than replaying a recording — the same arithmetic you can run yourself, step by step, in the Malus's law calculator.
It also corrects the instinct most people bring to it. Expecting 45° to sit "half way to blocked" is right, but only in intensity terms: cos²45° = 0.5, so 45° still passes a full 50%, and real darkness arrives only at 90°. And the one-half rule gets its own demonstration — flip the source to unpolarized and every reading halves at the first filter, whatever the angle, before Malus's law takes over at the analyzer.
None of this would work if light were a longitudinal wave: filtering by orientation is only possible because the electric field oscillates across the direction of travel, the distinction unpacked in our transverse vs longitudinal waves guide. The same physics drives polarized sunglasses, Brewster-angle glare off water and every LCD pixel — all of it carried by waves moving at the speed of light.
It rotates the second polarizer relative to the first, and the transmitted intensity follows Malus's law, I = I0·cos²(angle) — peaking when the axes align at 0° and vanishing when they cross at 90°. The readouts show the intensity in W/m², the percentage passed and the value of cos² itself, so every position of the slider is a checkable calculation.
Because cos²45° = 0.5, so 45° transmits exactly half the polarized intensity, not zero. Only a full 90° between the axes gives complete darkness. The cos-squared curve is gentle near 0°, falls fastest around 45° and flattens again into the block at 90° — sweep the slider slowly and the readout traces that whole shape.
The first filter passes exactly half the intensity — the one-half rule — whatever its orientation, because unpolarized light averages cos² over every direction to 1/2. After that the light is polarized, and Malus's law governs the analyzer as usual. Flip the source toggle and every reading in the sim halves instantly, at any angle.
Malus's law: I = I0·cos²(angle), where I0 is the polarized intensity reaching the analyzer and the angle sits between the two transmission axes. With an unpolarized source it first applies the one-half rule, I_mid = 0.5·I0, then Malus's law. The readout is exactly that arithmetic — set 500 W/m² at 30° and you get 500 × 0.75 = 375 W/m².
Not on their own — at 90° the analyzer receives no field component along its axis and blocks everything. But slip a third polarizer between crossed ones at 45° and light returns: each stage transmits cos²45° = 1/2, reviving up to I0/8. The middle filter re-tilts the polarization so the final filter is no longer fully crossed with what arrives.