@props([ 'plot', // ['segments','raw','xMax','yMax','coeffs'] 'xLabel' => 'Q [m³/h]', 'yLabel' => 'Y', 'interactive' => false, // przeciągalny marker [Q,H] 'id' => 'curve', 'initialQ' => null, // początkowe Q markera 'etaCoeffs' => [], // współczynniki η (do aktualizacji panelu) 'qInput' => null, // selektor pola Q (input) 'hOutput' => null, // selektor wyświetlania H 'etaOutput' => null, // selektor wyświetlania η 'opX' => null, // stały punkt pracy: Q (np. z pomiaru SYNDIS) 'opY' => null, // stały punkt pracy: wartość Y w tym Q 'opColor' => '#c62828', // kolor punktu pracy 'opYLabel' => null, // gdy ustawione - przy Q pokazuje też tę wartość (np. H) 'band' => false, // pionowy pasek podświetlenia przy opX (wykres η) ]) @php $w = 380; $h = 230; $padL = 48; $padR = 12; $padT = 14; $padB = 30; $plotW = $w - $padL - $padR; $plotH = $h - $padT - $padB; $xMax = max(0.0001, (float) $plot['xMax']); $yMax = max(0.0001, (float) $plot['yMax']); $sx = fn ($x) => $padL + ($x / $xMax) * $plotW; $sy = fn ($y) => $padT + $plotH - ($y / $yMax) * $plotH; $fmt = fn ($v) => $v >= 100 ? number_format($v, 0, ',', ' ') : ($v >= 10 ? number_format($v, 1, ',', '') : number_format($v, 2, ',', '')); @endphp {{-- Siatka + etykiety osi --}} @for ($g = 0; $g <= 4; $g++) @php $gy = $padT + $plotH * $g / 4; $vy = $yMax * (1 - $g / 4); @endphp {{ $fmt($vy) }} @endfor @for ($g = 0; $g <= 4; $g++) @php $gx = $padL + $plotW * $g / 4; $vx = $xMax * $g / 4; @endphp {{ $fmt($vx) }} @endfor {{-- Osie --}} {{-- Krzywa wielomianowa - kolorowe segmenty wg stref Q --}} @foreach ($plot['segments'] as $seg) @php $poly = collect($seg['points'])->map(fn ($p) => round($sx($p['x']), 1).','.round($sy($p['y']), 1))->implode(' '); @endphp @endforeach {{-- Pasek podświetlenia przy zadanym Q (wykres η) --}} @if ($band && $opX !== null && $opX >= 0 && $opX <= $xMax) @endif {{-- Punkty surowe (niebieskie) --}} @foreach ($plot['raw'] as $p) @endforeach {{-- Stały punkt pracy (wartości zmierzone) - na rzeczywistej wysokości, nie rzutowany na krzywą --}} @if ($opX !== null && $opY !== null && $opX >= 0 && $opX <= $xMax) Q = {{ number_format(round((float) $opX, 3), 3, ',', '') }} @if ($opYLabel !== null) {{ $opYLabel }} = {{ number_format(round((float) $opY, 1), 1, ',', ' ') }} @endif @endif {{-- Interaktywny marker + tooltip --}} @if ($interactive) @endif {{-- Etykiety osi --}} {{ $yLabel }} {{ $xLabel }} @if ($interactive)

Przeciągnij po wykresie, aby odczytać H dla danego Q.

@endif