Demo — Planform Alignment#
Edges cannot be deleted, but you can choose which direction each one throws its spike. This demo draws a closed, mirror-symmetric planform — a polygon whose vertices you can drag — and builds a synthetic RCS-vs-azimuth compass from every edge of that outline, including the flat transom that appears across the tail whenever the two halves do not meet at a point. Three presets walk the same rules from a 4th-gen fighter to a flying wing, and the scoreboard reads the trade: as the edges collapse onto a shared few orientations, two dozen spike directions become four, the loud fraction of the compass falls, and the surviving lobes grow taller.
The model#
Each edge of physical length \(L\) throws a specular lobe whose peak grows as \(L^2\), fired along the edge’s outward normal:
The lobe is a Gaussian in dB space against the signed angular distance \(d\) from the normal, and its width is physical, not a constant: a straight edge flashes with a 3 dB full width of \(0.886\,\lambda/L\) radians, which is what the coefficient \(10.36\) reproduces. So the lobe gets narrower as the edge gets longer and as the frequency goes up — at 3 GHz the flying wing’s 10.5 m leading edge is \(0.48^\circ\) wide at its 3 dB points while the fighter’s 1.9 m tail trailing edge is \(2.7^\circ\) wide. Set the frequency with the Radar frequency slider in the compass card (0.3–10 GHz, default 3 GHz; the track is logarithmic, so 0.3, 1, 3 and 10 GHz sit at roughly even spacing). It moves only the widths: not one lobe peak, not one spike direction, and not the diffuse floor.
Every edge also fires a second, weaker lobe \(180^\circ\) away, at the same width but 6 dB below the lit one. A closed body’s face is lit only from the side its outward normal points at, so the far side gets nothing specular — but the edge does: a straight edge seen perpendicular at grazing diffracts a return of about \(L^2/\pi\) from either side, against \(1.25\,L^2\) for the lit face, and \(1.25/4 = 0.3125\) matches \(1/\pi\) to a tenth of a dB. Hence the 6 dB. The small arrow on each edge of the planform drawing is that far-side lobe, and it is drawn small because it is smaller.
That also fixes the polarization: the compass is the vertical-polarization (VV) picture. An edge seen perpendicular at grazing returns in VV from either side, which is what the far-side lobe is; in horizontal polarization those grazing edge lobes largely vanish and only vertical faces — fuselage sides, a flat transom — flash.
Underneath the lobes there is no flat floor but a diffuse return: the coherent sum of 32 fixed notional scatterers standing in for skin curvature, seams, gaps and fasteners — L26’s Manage contributors — which draws a Rayleigh-like speckle all the way around the compass. Its mean level is yours to set, with the Diffuse scatter · skin, seams, gaps slider in the compass card (default \(-25\) dBsm, range \(-30\) to \(-5\)); the speckle peaks about 7 dB above that mean, its nulls are clamped 15 dB below it, and it is symmetric about the nose axis. It does not depend on frequency — it stands in for many small fixed scatterers, not for one edge. The 32 scatterers are fixed rather than drawn at random, so the fuzz is deterministic — the same slider setting always draws the same speckle, and every number quoted below is reproducible. The compass radial axis runs \(-45\) to \(+30\) dBsm, so the diffuse return reads as a fuzzy ring that the specular petals grow out of.
One consequence of physical widths is worth knowing before you read the scoreboard: the lobes are now far narrower than the \(0.25^\circ\) grid the compass is drawn on. So the tool does not read its numbers off that grid. The exact lit and mirror normal azimuths of every edge are merged into the drawn curve as extra points, which is where Nose-sector max is read, and Loud compass is the angular measure of the set where the total exceeds \(-5\) dBsm — computed on a \(0.01^\circ\) grid, so it is a property of the pattern rather than of the sampling.
Lengths are not a fixed list: the tool walks the right half of the planform from the nose aft — one edge per orientation row — and the geometry supplies the rest. If the walk ends on the centreline the tail is a point; if it ends short of it, a flat transom runs from the terminus across to its mirror, twice the offset long, and that transom is an edge like any other — it fires straight aft and, by the mirror, straight into the nose.
Four presets load four right-half tables, and the left half mirrors them. The 4th-gen fighter — forebody \(80^\circ\)/6.0 m, wing LE \(40^\circ\)/5.0 m, wing TE \(175^\circ\)/4.0 m, fuselage side \(90^\circ\)/2.4 m, tail LE \(45^\circ\)/2.3 m, tail TE \(165^\circ\)/1.9 m — ends its walk 0.68 m off the centreline, so a 1.36 m transom closes it: 13 edges in a dozen orientations. The flying wing (B-2/B-21 style) — wing LE \(40^\circ\)/10.5 m, outer TE \(140^\circ\)/4.5 m, inner TE \(-140^\circ\)/6.0 m — has a W-shaped trailing edge: from the tip the outer TE runs aft-inboard parallel to the far leading edge to a sawtooth point, then the inner TE runs forward-inboard parallel to the near leading edge to a centre notch, so all 6 edges sit on two orientations. The idealized Hopeless Diamond — wing LE \(68^\circ\)/8.0 m, wing TE \(112^\circ\)/8.0 m — makes each trailing edge parallel to the opposite leading edge: 4 edges. The 5th-gen fighter is the realistic middle case, an F-22-like outline — nose chine \(78^\circ\)/6.5 m, intake lip \(42^\circ\)/1.6 m, fuselage side \(90^\circ\)/1.0 m, wing LE \(42^\circ\)/5.73 m, wing tip \(90^\circ\)/1.0 m, wing TE \(147^\circ\)/5.48 m, aft fuselage side \(90^\circ\)/0.6 m, stabilator LE \(42^\circ\)/2.42 m, stab tip \(90^\circ\)/0.7 m, stabilator TE \(147^\circ\)/2.62 m, nozzle sawtooth \(-138^\circ\)/2.43 m — ending its walk 2 mm off the centreline, so the tail closes to a point: 22 edges, 6.80 m of half-span and 20.6 m of length. It is not a flying wing and is not trying to be; it still has a fuselage, intakes and tails. The discipline is applied where it pays, and there are four decisions in that table worth naming. A long slender nose: the 6.5 m chines are the longest single edges on the aircraft, and their flash at \(\pm78^\circ\) is level with the tallest spike on the compass — but \(78^\circ\) off the mission axis, which is the point. Every leading edge on \(42^\circ\), so intake lip, wing and stabilator fire into one pair of spikes. Both trailing edges on \(147^\circ\), chosen so their far-side lobes land at \(\pm33^\circ\), three degrees outside the \(\pm30^\circ\) nose sector — at \(145^\circ\) they would have sat at \(\pm35^\circ\), and a few degrees the other way would have put them inside. And a sawtooth nozzle notch at \(-138^\circ\), which is \(222^\circ = 42^\circ + 180^\circ\): parallel to the leading edges, so it adds no new spike direction at all. That is real F-22 practice, and it is the cheapest alignment decision on the aircraft. The lobe physics and the diffuse floor are identical in all four — the preset buttons set the edges only, and whatever fuzz level and frequency you have dialled in persist across them; only the orientations, and what the geometry then makes of them, change.
Interactive demo#
Walkthrough#
Start on the 4th-gen fighter. Thirteen edges point a dozen different ways, so their lit lobes and their far-side lobes sprinkle bright spikes all around the compass — several of them inside the nose sector (\(\pm30^\circ\) about the nose), where the far-side lobes of the near-straight wing trailing edges land at \(\pm5^\circ\). That is the whole problem in one picture: nothing here is a mistake, the edges simply have no agreement between them.
Read the airframe, not just the pattern. The left panel is the planform itself. Each edge carries a solid arrow at its outward normal — the lit lobe — and a second, smaller arrow at normal \(+180^\circ\) pointing back through the airframe, which is the edge-diffraction lobe 6 dB below it. The transom’s pair sits on the centreline, one arrow straight aft and one straight up the nose. Every vertex except the nose is a drag handle, and the left half mirrors whatever you do to the right.
Read the three tiles. Loud compass is the fraction of the compass above the \(-5\) dBsm threshold, Nose-sector max the loudest return within \(\pm30^\circ\) of the nose, and Spike directions the number of distinct lobe centres the outline fires in. The first two include the diffuse ring, so the fuzz slider moves them too. At the default \(-25\) dBsm and 3 GHz the fighter reads 23.1 %, \(+7.0\) dBsm and 24 — all three red, and the verdict box says a specular lobe still lands in the nose sector. (The loud tile’s colour is graded against a 3 GHz reference, because the loud fraction is proportional to \(\lambda\) and would otherwise flatter every planform at X-band; a compass that is 40 % loud or more is graded bad at any frequency. The number it prints is the true percentage.)
Switch to the Hopeless Diamond. Four edges on two orientations: each trailing edge runs parallel to the opposite leading edge, so front and back returns stack into the same four spikes at \(\pm68^\circ\) and \(\pm112^\circ\). Loud compass 2.0 %, spike directions 4, and the nose-sector max is \(-20.3\) dBsm — no specular lobe reaches the sector at all, so what the tile is reporting is the diffuse fuzz and nothing else.
Switch to the flying wing and compare. The W-shaped trailing edge puts all six of its edges on the same two orientations, so the same discipline holds: 4 spike directions, at \(\pm40^\circ\) and \(\pm140^\circ\), 2.9 % loud, and a nose-sector max of \(-20.3\) dBsm. That is exactly the diamond’s reading, to the tenth of a dB, and it should be: with physical lobe widths no petal from either planform reaches within \(10^\circ\) of the sector, so both tiles are reporting the same speckle peak. The lobes are taller than the diamond’s, though: 21.9 dBsm against 20.0, because the edges are longer and three of them stack on each spike rather than two.
Switch to the 5th-gen fighter — the one you could actually build. Twenty-two edges, a fuselage, intakes and tails, and it still cannot reach four spikes: it reads 14 spike directions, 19.2 % loud, tallest lobe 17.3 dBsm at \(42^\circ\). And yet the nose-sector max is \(-20.3\) dBsm — the same speckle-only reading as the flying wing and the diamond. Read the edge list while you say why. Every leading edge — intake lip, wing, stabilator — is on \(42^\circ\). Both trailing edges are on \(147^\circ\), which puts their far-side lobes at \(\pm33^\circ\): three degrees outside the sector, and that margin is the design, because \(145^\circ\) would have put them at \(\pm35^\circ\) and a few degrees the other way would have put them inside. The nozzle sawtooth is at \(-138^\circ\), which is \(222^\circ = 42^\circ + 180^\circ\) — parallel to the leading edges, so the notch costs no new spike direction at all, which is real F-22 practice. The two tallest spikes are the stacked leading edges at \(\pm42^\circ\) and the 6.5 m nose chines at \(\pm78^\circ\), level to within 0.05 dB and both far off the mission axis. Look at the compass shape: a quiet wedge at the nose and bright petals everywhere behind — the classic “Pac-Man”. That is the honest lesson about alignment. You do not have to spend the whole airframe on it; you spend it on the sector the mission flies down, accept the rear quadrants, and take the loud fraction that comes with having tails.
Drag, and let the geometry answer. Pull the diamond’s tail point 1.5 m off the centreline: a 3 m transom appears, spike directions go from 4 to 10, the loud fraction goes from 2.0 % to 5.7 %, and the nose-sector max jumps from \(-20.3\) to \(+4.5\) dBsm — the transom’s far-side lobe firing straight up the nose, nearly 25 dB above the fuzz it used to leave there. Drop the point back within 0.35 m of the centreline and the outline snaps closed and every number returns. Then nudge the flying wing’s centre notch with Snap to shared angles (±3°) ticked and it re-aligns to four spikes; untick it, miss by a couple of degrees, and those four split into eight.
Raise the fuzz. Back on the diamond, drag Diffuse scatter · skin, seams, gaps from \(-25\) to \(-15\) dBsm. Not one edge has moved, but the nose-sector max climbs to \(-10.3\) dBsm, the tile goes amber, and the verdict changes to “No specular lobe reaches the nose sector — the diffuse scatter does. Shaping has done its job; the next dB is a Manage/Treat problem (L27).” Read that out loud: shaping decides where the petals go, seams and gaps decide how high the ring sits, and those are different design problems. Switch to the fighter at the same setting and it is still 23.7 % loud with \(+7.0\) dBsm in the nose — its trouble was never the fuzz. Put the slider back to \(-25\) dBsm before moving on.
Sweep the frequency. Take Radar frequency across its whole range on each preset. Not one spike moves and not one peak changes height — but every lobe narrows in proportion to \(\lambda\), and the loud fraction falls with it. At 0.3, 1, 3 and 10 GHz the 4th-gen fighter reads 100.0 %, 55.0 %, 23.1 %, 6.9 %; the 5th-gen 89.3 %, 45.5 %, 19.2 %, 5.8 %; the flying wing 29.3 %, 8.8 %, 2.9 %, 0.9 %; the diamond 20.4 %, 6.1 %, 2.0 %, 0.6 %. A flash is a narrower event the higher the band, which is why a fire-control radar sees an aligned airframe for a fraction of a second and a metric-wave surveillance radar smears the same flash over degrees of azimuth. Now go to the bottom of the slider and watch what that does to shaping: at 300 MHz the 4th-gen fighter saturates — 100 % of the compass above threshold, the lobes so wide they have merged into each other — and even the flying wing’s nose-sector max climbs from \(-20.3\) to \(-0.2\) dBsm, because at a 1 m wavelength its 6 m inner trailing edge throws a lobe wide enough to reach from \(40^\circ\) into the \(\pm30^\circ\) sector. Nothing about the airframe changed. That is L28’s wrong-band argument drawn rather than asserted: planform alignment is a high-band virtue, and a low-band radar is exactly where it buys you least.
Read the trade. Aligning did not delete energy; it concentrated it. The 4th-gen fighter’s 24 spike directions became 14 on the 5th-gen and 4 on the flying wing, and the nose sector went from \(+7.0\) dBsm down into the fuzz at \(-20.3\) — but every dB of that went into the surviving lobes, which is why the quietest planform here also has the tallest spike on the compass. A few known-direction lobes off the mission axis are survivable in a way a bright nose-on flash never is.
Solve it#
Everything above is a cartoon — a Gaussian lobe per edge, placed by hand at the normal and at the far side. Solve (physical optics) replaces it with the real calculation. At exactly in-plane incidence the top and bottom of an extruded outline contribute nothing, and every vertical side face is a flat rectangle of length \(l\) and height \(h\) whose monostatic physical-optics amplitude is closed-form:
with \(\theta_i\) the angle between the look direction \(\mathbf{d}\) and the face’s outward normal, \(\mathbf{r}_i\) the face midpoint, \(\operatorname{sinc}(x) = \sin x / x\), and each face lit only where \(\cos\theta_i > 0\). Self-shadowing is exact: in plane it is a one-dimensional depth problem, so the piece of a face another face hides is found in closed form rather than by casting rays. The slab height is \(h = \lambda\sqrt{1.25/4\pi}\), which makes a lit face of length \(L\) peak at exactly \(1.25L^2\) — the toy model’s own peak — so the two curves are pinned together at broadside and every other difference between them is physics.
This is not a second cartoon. The same calculation was checked against nTop’s traced solver on all four presets at 3 GHz and agrees to 0.06 dB at every flash direction, exactly at broadside; the browser reproduces that reference sweep to within \(10^{-6}\) dB. It runs in a worker in a few milliseconds, which is why a button can do in the lecture what a solver run does overnight. What it leaves out is as important: there is no diffuse floor (the fuzz slider does not touch the green curve) and no edge diffraction, so the far-side lobes the toy draws 6 dB down are simply absent — physical optics sees a face only from the side its normal points at.
Read the differences deliberately. The real lobes are sinc, not Gaussian: they carry a sidelobe skirt, first sidelobe about 13 dB down and falling slowly, where the toy model has clean floor between its petals. Where two parallel faces fire at the same azimuth the real calculation adds their fields with phase, so it can cancel as easily as it can add, while the toy model adds powers and can do neither. And between the flashes the green curve is a deep interference structure rather than a floor — that structure is what the invented diffuse ring stands in for.
Solve on the Hopeless Diamond. Press the button. Four green lobes land exactly on the toy’s four spikes — the directions were never the cartoon’s problem — but each is a sinc with a visible skirt, and the tops differ: the toy reads 20.0 dBsm where the lit face alone gives 19.0, because the toy added a far-side lobe to a lit one at the same azimuth.
Compare the widths, then change the band. The green lobe and the blue one have the same 3 dB width, by construction. Move Radar frequency and both narrow together — then press Solve again and watch the sidelobe skirt move with them.
Drag, and re-solve. Pull the diamond’s tail off the centreline. The green curve clears the moment the outline changes: it is a snapshot, not a live trace. Press Solve again and the new transom appears as a real lit face firing aft — and nothing fires up the nose, where the toy model draws its far-side lobe.
Check it against nTop. Tick Show nTop trace of this preset (3 GHz). The dashed curve is nTop’s traced solver on this same outline — a different implementation, on different machinery, that took minutes per preset instead of milliseconds — and it lands on the solved curve. Two independent calculations of the same physics agreeing to a fraction of a dB is what lets you believe either of them. Then drag a vertex: the checkbox greys out, because nTop never traced your outline. Press a preset button and it comes back.
Key observations#
Alignment stacks, it does not delete. Going from the fighter’s 24 spike directions to the flying wing’s 4 concentrates the same edge energy into fewer azimuths, so the surviving lobes get taller — 21.9 dBsm against the fighter’s tallest 16.5 dBsm — even as most of the compass goes quiet (23.1 % loud down to 2.9 % at 3 GHz).
The nose sector is the prize, and shaping can only win part of it. Dropping the \(\pm30^\circ\) nose-sector max from \(+7.0\) dBsm to \(-20.3\) dBsm is what matters for a penetrating strike aircraft — the mission axis is the one direction the threat is looking from, and the two aligned planforms leave it with no specular lobe at all. What is left in the sector is the diffuse ring, which no amount of edge alignment touches: raise the fuzz slider and the sector comes straight back up with the planform untouched. That is the honest boundary of shaping, and the next dB belongs to L27’s Manage and Treat tools.
Longer edges are louder — and narrower. Peak scales as \(L^2\), so the flying wing’s 10.5 m leading edge beats the fighter’s 5 m wing leading edge by about 6.4 dB, and the fighter’s own 1.9 m tail trailing edge sits 10 dB below its 6 m forebody edge. But the same \(L\) that raises the peak narrows the flash as \(\lambda/L\), so a long edge is a brighter, briefer event: that is why a flying wing can concentrate its whole signature into four spikes and still light up less of the compass than a fighter does.
The far side of an edge is not the front of it. Every edge fires both ways, but the return at normal \(+180^\circ\) is edge diffraction rather than a lit face, and it comes back 6 dB down. That gap is why the fighter’s nose-sector reading is \(+7.0\) dBsm rather than \(+13.0\): what reaches the mission axis is the far side of the wing trailing edges. It is also a polarization statement — in horizontal polarization those grazing edge lobes largely vanish, and a planform that looks symmetric front-to-back on this compass does not in HH.
You align the sector you have to fly down, not the whole airframe. The 5th-gen fighter keeps a fuselage, intakes and two stabilators, so it lands at 14 spike directions and 19.2 % loud — nowhere near the flying wing’s 4 and 2.9 %. But it puts every leading edge on \(42^\circ\), both trailing edges on \(147^\circ\) so their far-side lobes clear the sector by \(3^\circ\), and the nozzle sawtooth parallel to the leading edges so it costs nothing at all — and that alone buys it the same \(-20.3\) dBsm nose sector the flying wing has. The compass shows the bargain as a shape: a quiet wedge at the mouth and loud rear quadrants, the “Pac-Man” every aligned fighter draws. Alignment is a spectrum, not a binary, and the cheapest part of it is the part pointed at the threat.
This is planform alignment. The flying wing’s trailing-edge segments are parallel to its leading edges by design, which is why all six of them fire in only four directions. Real airframes take it further: the B-2 and B-21 share every planform angle, so nearly all diffracted energy lands in a handful of predictable lobes off-axis.
Source#
MATLAB bundle · L26_PlanformAlignment.m↓
The companion script walks the same three edge tables into closed outlines and builds the same diffuse floor beneath them — the same 32 fixed scatterers about a \(-25\) dBsm mean, the same \(10.36\,\lambda/L\) lobe widths at the same f_GHz = 3, and the same 6 dB-down far-side lobe, so it reproduces the numbers above digit for digit — overlays their three compasses on one polar plot, and prints the loud-compass fraction, the nose-sector max, the spike-direction count and the tallest lobe for each, at the \(-25\) dBsm default and again at the \(-15\) dBsm of step 7, so the class can read the trade out loud. Change f_GHz at the top and every width moves with it, exactly as the slider does.