feat: visualize array receive beam patterns

This commit is contained in:
2026-08-29 14:45:47 +09:00
parent 041e0c3665
commit b68cd87e3c
5 changed files with 1044 additions and 1 deletions
+116
View File
@@ -90,6 +90,122 @@
<article class="metric-card"><span>보정 채널</span><strong id="calibration-count">0</strong><small>sensitivity / phase / response</small></article>
</section>
<details class="beam-pattern-card" id="beam-pattern-panel" open>
<summary class="beam-pattern-heading">
<div>
<p class="eyebrow">배열 분석</p>
<h2>수신 빔 패턴</h2>
</div>
<span id="beam-pattern-summary">1 kHz · XZ · +Z 조향</span>
</summary>
<div class="beam-pattern-body">
<div class="beam-pattern-controls">
<p class="beam-pattern-model">
Narrowband far-field conventional delay-and-sum
<span>geometry-only</span>
</p>
<div class="beam-pattern-fields">
<label class="field">
<span>아날로그 주파수 (Hz)</span>
<input
id="beam-pattern-frequency"
type="number"
min="1"
max="1000000"
step="100"
value="1000"
inputmode="decimal"
/>
</label>
<label class="field">
<span>음속 (m/s)</span>
<input
id="beam-pattern-speed-of-sound"
type="number"
min="250"
max="400"
step="0.1"
value="343"
inputmode="decimal"
/>
</label>
<label class="field">
<span>360° 절단면</span>
<select id="beam-pattern-cut">
<option value="xz">XZ · 0° +Z / 90° +X</option>
<option value="yz">YZ · 0° +Z / 90° +Y</option>
<option value="xy">XY · 0° +X / 90° +Y</option>
</select>
</label>
<label class="field">
<span>조향각 (deg)</span>
<input
id="beam-pattern-steering-angle"
type="number"
min="-360"
max="360"
step="0.5"
value="0"
inputmode="decimal"
/>
</label>
<label class="field">
<span>각도 샘플</span>
<select id="beam-pattern-samples">
<option value="auto">자동 · 위상 간격 기준</option>
<option value="360">360 · 1°</option>
<option value="720">720 · 0.5°</option>
<option value="1440">1,440 · 0.25°</option>
<option value="2880">2,880 · 0.125°</option>
<option value="5760">5,760 · 0.0625°</option>
</select>
</label>
<label class="field">
<span>표시 하한 (dB)</span>
<select id="beam-pattern-floor">
<option value="-30">−30 dB</option>
<option value="-40">−40 dB</option>
<option value="-60" selected>−60 dB</option>
<option value="-80">−80 dB</option>
<option value="-100">−100 dB</option>
</select>
</label>
</div>
<div class="beam-pattern-metrics" aria-label="빔 패턴 수치">
<article><span>파장</span><strong id="beam-pattern-wavelength">—</strong></article>
<article><span>각도 해상도</span><strong id="beam-pattern-resolution">—</strong></article>
<article><span>조향 응답</span><strong id="beam-pattern-steering-response">—</strong></article>
<article><span>−3.0103 dB 폭</span><strong id="beam-pattern-hpbw">—</strong></article>
</div>
<p class="beam-pattern-status" id="beam-pattern-status" role="status" aria-live="polite">
현재 배열의 수신 array factor를 계산하고 있습니다.
</p>
<p class="beam-pattern-note" id="beam-pattern-model-note">
이상적으로 보정된 무지향성 점 마이크의 자유장 평면파 단면입니다. 3D 전체 패턴,
근거리, 방·하우징, 마이크 주파수 응답은 포함하지 않습니다. ADC가 없으므로
Nyquist 초과 주파수도 접지 않고 원래 파장으로 계산합니다.
</p>
</div>
<figure class="beam-pattern-figure">
<svg
id="beam-pattern-plot"
viewBox="0 0 520 520"
role="img"
aria-label="수신 빔 패턴 polar plot"
aria-describedby="beam-pattern-status beam-pattern-model-note beam-pattern-peaks"
></svg>
<figcaption id="beam-pattern-peaks">
국소 최대를 계산하고 있습니다.
</figcaption>
</figure>
</div>
</details>
<details class="shortcut-help">
<summary>빠른 편집 키</summary>
<div>