Crosswind Clock
An interactive windsock and clock-code trainer — set the wind strength and direction, watch the windsock respond, and compare the clock-code crosswind estimate against the exact sine value.
Working out the crosswind component in your head is a core airmanship skill, and most pilots use the clock code: treat the angle between the wind and the runway as minutes on a clock, and read the filled fraction of the hour as the fraction of the wind that is crosswind. This tool lets you stand beside a windsock, set any wind, and see the estimate next to the exact answer so you can judge how good the rule of thumb really is.
Drag on the dial to set the direction the wind is blowing from, and use the slider to set its strength. The windsock swings to point downwind and droops according to the strength — flying straight out at 30 kt, hanging limp when calm. The clock face fills to show the angle off the runway as minutes, and the readout compares the clock estimate with the true sin value.
The clock code
Line the wind angle up against a clock face, counting the angle in degrees as minutes:
| Angle off runway | Clock reads | Clock estimate | Actual (sin) |
|---|---|---|---|
| 15° | quarter past | 25% | 26% |
| 30° | half past | 50% | 50% |
| 45° | quarter to | 75% | 71% |
| 60° | on the hour | 100% | 87% |
Multiply that fraction by the wind strength to get the crosswind. A 20 kt wind 30° off the runway gives an estimated 10 kt of crosswind (half of 20) — and the exact answer is also 10 kt, because sin 30° = 0.5 exactly. The estimate is generous at the larger angles (it reads 100% at 60° where the truth is 87%), which is the safe way to be wrong: you plan for slightly more crosswind than you actually get.
Above 60° the clock is simply full — the crosswind is essentially the whole wind, so there is nothing more to estimate.
Why it works
The exact crosswind component is wind speed × sin(θ), where θ is the angle between the wind and the runway centreline. The clock code approximates sin(θ) with the straight line θ / 60 for angles up to 60°. Over that range the two never differ by more than about four percentage points, and they agree exactly at 30°. It is a fast, safe mental substitute for a trig function you can’t do in the flare.
The readout also shows the headwind (or tailwind) component, wind speed × cos(θ), for context — but the crosswind is what decides whether you are inside your aircraft’s demonstrated limit.
For instructors
- Anchor the mnemonic — set 15°, 30°, 45°, and 60° in turn and let the student read the clock before revealing the
sinvalue. - Make it a limit check — “20 kt, 40° off — what’s the crosswind, and is it inside your 15 kt demonstrated limit?” (Clock says two-thirds ≈ 13 kt; near the limit.)
- Show the safe bias — at 60° the estimate over-reads by 13 points, so the clock always errs toward planning for more crosswind, never less.
Attributes
| Attribute | Default | Purpose |
|---|---|---|
runway | 27 | Runway designator — sets the painted numbers and the runway heading |
runway-length | 1000 | Runway length in metres |
runway-width | 30 | Runway width in metres |
wind-from | runway heading | Initial wind direction in degrees (blowing from); the dial takes over after load |
wind-speed | 10 | Initial wind strength in knots; the slider takes over after load |
windsock-color | white | Windsock colour (#rrggbb, #rrggbbaa, or rgba(...)) |
show-controls | true | Show the wind controls (direction dial + strength slider) |
show-clock | true | Show the clock face and comparison readout |
show-terrain | true | Generate the procedural landscape (false = plain flat plane) |
terrain-seed | open-aviation | Seed string for the landscape; the same seed always produces the same terrain |
sky-color | #9ec9e8 | Scene background (sky) colour |
height | 480px | CSS height of the component |
wind-from and wind-speed are also live JS properties, so a briefing can drive the scene programmatically.