Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
9547beb
fix(interpolare): Lagrange rămâne cu o singură linie pe desen
rdimitrescu Aug 17, 2026
61666e6
fix(interpolare): nivelurile lui Neville se iau cu săgețile, sub desen
rdimitrescu Aug 17, 2026
56e30a6
fix(interpolare): scoase și ultimele urme ale filei Runge
rdimitrescu Aug 17, 2026
86426bf
fix(interpolare): diferența dintre spline-ul natural și cel tensionat…
rdimitrescu Aug 17, 2026
16cefba
fix(interpolare): graficul lui Neville chiar crește, prin raport
rdimitrescu Aug 17, 2026
53fd8e3
docs: lista din imbunatatiri.md e terminată
rdimitrescu Aug 17, 2026
bd1ea8b
chore: scoate playwright-core, adăugat din greșeală
rdimitrescu Aug 17, 2026
bacdfde
fix(teorie): explicația literelor se rupe la marginea din stânga, pe …
rdimitrescu Aug 17, 2026
dbd0af8
fix(derulare): săgeata „pagina următoare" duce la titlu, nu în subsol
rdimitrescu Aug 17, 2026
f3c7185
fix(thomas): celulele nu mai poartă fiecare litera ei, ilizibile pe t…
rdimitrescu Aug 17, 2026
8496b30
docs: nota despre refacerea derulării doar la întoarcere
rdimitrescu Aug 17, 2026
3918919
fix(clip): comenzile stau pe un rând până pe la 334px, cu goluri egale
rdimitrescu Aug 17, 2026
aafe5c0
fix(clip): goluri egale doar sub 400px, restul ca înainte
rdimitrescu Aug 17, 2026
8e65a3f
fix(metode-iterative): tabelul metodelor încape pe telefon, fără deru…
rdimitrescu Aug 17, 2026
999f343
fix(clip): subtitrarea nu mai cade peste desen pe cadru îngust
rdimitrescu Aug 17, 2026
009d36d
fix(lu): antetul și cifrele de cost nu se mai scriu unele peste altele
rdimitrescu Aug 17, 2026
6a7a149
fix(fft): sub clip rămân doar titlul și autorul
rdimitrescu Aug 17, 2026
c4f4bb2
feat(interpolare): fiecare filă cu funcția ei, fără evidențiere în fo…
SerbaC6 Aug 18, 2026
d139100
fix(viz): dreapta își primește capetele și static, nu doar prin animate
SerbaC6 Aug 18, 2026
654ae08
Started implementing sitemap.xml error
SerbaC6 Aug 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions Progress.md
Original file line number Diff line number Diff line change
Expand Up @@ -650,6 +650,77 @@ Lista rescrisă de utilizator după prima trecere. Ce s-a schimbat:
atunci; propoziția pasului a dispărut de pe Neville; fila spline nu mai desenează și polinomul de
comparație; nodurile pornesc de la 5 și își scriu numele doar până la 5.

### A treia trecere prin `imbunatatiri.md` (17 august 2026)

Lista fusese bifată aproape toată în trecerea a doua, dar `InterfataInterpolare.tsx` rămăsese
**la jumătate de refactorizare și nu compila**: `useDerulare` și `PlaybackBar` erau folosite fără
să fie importate, `schimbaFila`, `kAles` și `amplitudine` fuseseră șterse dar erau încă chemate,
iar filei Runge îi rămăseseră ramurile de legendă și de descriere. Zece erori de tipuri, deci nici
`npm run build` nu trecea. Ce s-a terminat:

- **Lagrange, o singură linie.** Evidențierea din formulă s-a mutat de pe `l_k(x)` pe `P_n(x)`:
multiplicatorul nu se mai desenează, deci nu mai are ce aprinde pe grafic. Legenda a scăpat de
cele două intrări rămase fără desen.
- **Neville, pași cu săgeți.** Bara de derulare și triunghiul stau sub desen; legenda a scăpat de
„verticala punctului evaluat" și de „P₀ₙ(x)", niciuna desenată.
- **Graficul crește prin `raport`, nu prin plafon.** Plafonul ridicat de la 460 la 560 **nu mișcase
niciun pixel**: măsurat în browser, coloana din stânga se oprește la 707px și nu crește nici pe
1536px, deci înălțimea ieșea din `707 / 1,6 = 442px`, iar plafonul nu era atins la nicio lățime.
Cu `raport = 1,3` se ajunge la **544px**. **De reținut**: `inaltimeMaxima` e o limită, nu o
cerere — cine vrea un desen mai înalt schimbă `raport`.
- **Spline-ul se vede că are două curbe.** Aici măsurătoarea a schimbat decizia. Desenarea
amândurora, făcută în trecerea trecută, nu ajunge: pe `sin(πx)`, la numărul implicit de noduri,
cele două condiții de capăt stau la **2px** una de alta, iar de la nouă noduri se suprapun exact.

| noduri | 4 | 5 | 7 | 9 | 13 |
| -------- | --- | --- | --- | --- | --- |
| sin(πx) | 8 | 2 | 0 | 0 | 0 |
| x⁵ − 2x³ | 12 | 10 | 5 | 3 | 1,5 |

Deci funcția de start a devenit `x⁵ − 2x³`. Celelalte două file nu pierd nimic: `max |Pₙ| = 1`
la orice număr de noduri, iar de la șase noduri polinomul reproduce funcția exact. Legenda
numește acum și curba punctată, iar lângă `s″(x₀)` („de ce") stă `depărtarea` („cu cât").

Cu trei noduri cele două curbe coincid **exact**: `(−1, 1)`, `(0, 0)`, `(1, −1)` sunt coliniare,
deci amândouă condițiile dau dreapta `y = −x`. Verificat, nu e o scăpare de calcul.

Verificat în browser, pe ambele teme, la 360px și 1280px, cu `prefers-reduced-motion`: fără erori
în consolă și fără derulare orizontală.

**Restanța de mai sus e închisă (18 august 2026).** `PlotDreapta` își dă acum cele patru capete
**și** static, nu doar prin `animate`, exact ca `motion.line` din `PlotPunct` — deci atributul intră
în marcajul scris de React, iar linia are geometrie validă din chiar randarea care o inserează.

**Erorile din consolă n-au putut fi reproduse** pe Chrome, cu `motion` 13.1.0: încărcare curată pe
`derivare-numerica` și pe `ecuatii-neliniare`, plus pași și schimbări de metodă, cu zero erori; un
`MutationObserver` pe nodurile `<line>` adăugate și un cârlig pe `setAttribute` n-au prins nicio
scriere de `undefined` sau `NaN`; iar cele 23 de linii din pagină au toate cele patru atribute
numerice. Explicația cea mai probabilă e `initial={false}`, care face `motion` să randeze direct
ținta din `animate`. Reparația s-a făcut oricum: se aliniază la tiparul folosit deja în `PlotPunct`
și nu mai lasă primul cadru pe seama momentului în care `motion` apucă să scrie atributul.

### Refacerea derulării se face doar la întoarcere (17 august 2026)

Urmarea directă a reparației de mai sus, din a doua trecere: odată ce poziția chiar se reținea, s-a
văzut că se **refăcea prea des**. Săgeata „pagina următoare" te lăsa în subsolul paginii următoare,
nu la titlul ei.

Cauza nu era derularea, ci **unde stau săgețile**: chiar la fundul paginii. Orice pagină părăsită
printr-o săgeată își salva poziția „la fund", iar a doua oară când ajungeai pe ea — oricum ai fi
ajuns — erai pus înapoi acolo. Măsurat pe `interpolare-polinomiala` → `curbe-bezier`, a doua
trecere: **6713 din 6966** pe telefon și **5031 din 5031** pe desktop.

**Nu era o problemă de telefon**, deși acolo a fost văzută: pe telefon paginile sunt cam de două ori
mai înalte și săgeata se apasă mult mai des decât butonul „înapoi" al browserului, deci se nimerea
mai des. Pe desktop se reproduce identic.

Acum poziția se reface **doar la `POP`** (`useNavigationType` din react-router) — înapoi/înainte din
browser, adică exact gestul căruia browserul îi reface singur derularea pe un site fără router. Un
clic pe o legătură e `PUSH`: ai cerut altă pagină, deci o primești de la început.

**De reținut**: „reține poziția paginii" nu e o singură cerință, ci două — _ce_ se salvează și _când_
se reface. Prima trecere a rezolvat-o pe prima și a presupus că a doua n-are variante.

### Pagina 13 — `curbe-bezier`, ce e gata și ce nu

Ce există:
Expand Down
34 changes: 4 additions & 30 deletions imbunatatiri.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,6 @@
# De schimbat la Cuadraturi:
La interactiv:
1. La Gaussiene, pune prima functie radical(x)
2. Scrie titlul de la Cuadraturi adaptive "Cuadraturi Adaptive"


# De schimbat la Newton-Cotes:
Probleme Persistente:
e descentrata partea de sub grafic: SubintervaleN 4h = 0,7854. 4 ar trebui sa stea langa N



# De schimbat la Derivare Numerica:
La interactiv:
1. Fa mai mare graficul, acum e decentrat cu parametrii


# De schimbat la interpolari:
La interactiv:
1. La Lagrange: imbina multiplicatorul cu polinomul doar intr-o singura linie, unde sa se vada frumos cum se schimba polinomul la mai multe puncte
2. La Neville: partea cu pasi fa-o sub grafic, nu ca parametru, sa se ruleze cu sagetele. Partea de grade scoate-o sub partea de derulare, iar in locul ei fa graficul mai mare. Scoate partea cu verticala punctului evaluat. Scoate P0n(x)
3. Scoate partea cu functia Runge de tot din interactiv
4. La Spline fa cumva sa se vada mai bine diferenta intre natural si tensionat. Scoate si max |s − f|
0,0200. Schimba functia de start daca e nevoie


# La Eliminare Gaussiana si pivotari
La interactiv: adu pe aceeasi linie a(ip) si matricea, mareste simbolul de la a(ip) si mareste per total matricea si linia cu pivotii


# Îmbunătățiri

Lista e goală: toate punctele scrise aici au fost rezolvate. Ce s-a schimbat la fiecare e scris în
[`Progress.md`](./Progress.md), în secțiunile despre trecerile prin fișierul ăsta.

Aici se scriu punctele următoare.
42 changes: 21 additions & 21 deletions public/sitemap.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,127 +7,127 @@
<priority>1.0</priority>
</url>
<url>
<loc>https://serbac6.github.io/numerical-methods-visualizer/algoritm/factorizari-lu</loc>
<loc>https://serbac6.github.io/numerical-methods-visualizer/#/algoritm/factorizari-lu</loc>
<lastmod>2026-08-17</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://serbac6.github.io/numerical-methods-visualizer/algoritm/norme-si-ortogonalitate</loc>
<loc>https://serbac6.github.io/numerical-methods-visualizer/#/algoritm/norme-si-ortogonalitate</loc>
<lastmod>2026-08-17</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://serbac6.github.io/numerical-methods-visualizer/algoritm/eliminare-gaussiana</loc>
<loc>https://serbac6.github.io/numerical-methods-visualizer/#/algoritm/eliminare-gaussiana</loc>
<lastmod>2026-08-17</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://serbac6.github.io/numerical-methods-visualizer/algoritm/algoritmul-thomas</loc>
<loc>https://serbac6.github.io/numerical-methods-visualizer/#/algoritm/algoritmul-thomas</loc>
<lastmod>2026-08-17</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://serbac6.github.io/numerical-methods-visualizer/algoritm/metode-iterative</loc>
<loc>https://serbac6.github.io/numerical-methods-visualizer/#/algoritm/metode-iterative</loc>
<lastmod>2026-08-17</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://serbac6.github.io/numerical-methods-visualizer/algoritm/ecuatii-neliniare</loc>
<loc>https://serbac6.github.io/numerical-methods-visualizer/#/algoritm/ecuatii-neliniare</loc>
<lastmod>2026-08-17</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://serbac6.github.io/numerical-methods-visualizer/algoritm/metode-de-gradient</loc>
<loc>https://serbac6.github.io/numerical-methods-visualizer/#/algoritm/metode-de-gradient</loc>
<lastmod>2026-08-17</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://serbac6.github.io/numerical-methods-visualizer/algoritm/metodele-puterii</loc>
<loc>https://serbac6.github.io/numerical-methods-visualizer/#/algoritm/metodele-puterii</loc>
<lastmod>2026-08-17</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://serbac6.github.io/numerical-methods-visualizer/algoritm/pagerank</loc>
<loc>https://serbac6.github.io/numerical-methods-visualizer/#/algoritm/pagerank</loc>
<lastmod>2026-08-17</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://serbac6.github.io/numerical-methods-visualizer/algoritm/algoritmul-qr</loc>
<loc>https://serbac6.github.io/numerical-methods-visualizer/#/algoritm/algoritmul-qr</loc>
<lastmod>2026-08-17</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://serbac6.github.io/numerical-methods-visualizer/algoritm/dvs</loc>
<loc>https://serbac6.github.io/numerical-methods-visualizer/#/algoritm/dvs</loc>
<lastmod>2026-08-17</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://serbac6.github.io/numerical-methods-visualizer/algoritm/interpolare-polinomiala</loc>
<loc>https://serbac6.github.io/numerical-methods-visualizer/#/algoritm/interpolare-polinomiala</loc>
<lastmod>2026-08-17</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://serbac6.github.io/numerical-methods-visualizer/algoritm/curbe-bezier</loc>
<loc>https://serbac6.github.io/numerical-methods-visualizer/#/algoritm/curbe-bezier</loc>
<lastmod>2026-08-17</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://serbac6.github.io/numerical-methods-visualizer/algoritm/fft</loc>
<loc>https://serbac6.github.io/numerical-methods-visualizer/#/algoritm/fft</loc>
<lastmod>2026-08-17</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://serbac6.github.io/numerical-methods-visualizer/algoritm/derivare-numerica</loc>
<loc>https://serbac6.github.io/numerical-methods-visualizer/#/algoritm/derivare-numerica</loc>
<lastmod>2026-08-17</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://serbac6.github.io/numerical-methods-visualizer/algoritm/newton-cotes</loc>
<loc>https://serbac6.github.io/numerical-methods-visualizer/#/algoritm/newton-cotes</loc>
<lastmod>2026-08-17</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://serbac6.github.io/numerical-methods-visualizer/algoritm/cuadraturi-adaptive-si-gaussiene</loc>
<loc>https://serbac6.github.io/numerical-methods-visualizer/#/algoritm/cuadraturi-adaptive-si-gaussiene</loc>
<lastmod>2026-08-17</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://serbac6.github.io/numerical-methods-visualizer/algoritm/ecuatii-diferentiale</loc>
<loc>https://serbac6.github.io/numerical-methods-visualizer/#/algoritm/ecuatii-diferentiale</loc>
<lastmod>2026-08-17</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://serbac6.github.io/numerical-methods-visualizer/contact</loc>
<loc>https://serbac6.github.io/numerical-methods-visualizer/#/contact</loc>
<lastmod>2026-08-17</lastmod>
<changefreq>yearly</changefreq>
<priority>0.3</priority>
</url>
<url>
<loc>https://serbac6.github.io/numerical-methods-visualizer/termeni</loc>
<loc>https://serbac6.github.io/numerical-methods-visualizer/#/termeni</loc>
<lastmod>2026-08-17</lastmod>
<changefreq>yearly</changefreq>
<priority>0.2</priority>
</url>
<url>
<loc>https://serbac6.github.io/numerical-methods-visualizer/confidentialitate</loc>
<loc>https://serbac6.github.io/numerical-methods-visualizer/#/confidentialitate</loc>
<lastmod>2026-08-17</lastmod>
<changefreq>yearly</changefreq>
<priority>0.2</priority>
Expand Down
44 changes: 29 additions & 15 deletions src/components/content/AnimatiaFactorizariiLu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -190,16 +190,24 @@ function Antet({
nota?: readonly string[];
st: number;
}) {
const notaSus = 150 + (titlu.length - 1) * 66 + 54;
// Rândurile se așază **față de corpul literei**, nu la 66 și 40 de unități
// fixe. Pasul fix era scris pentru desktop, unde `st` e 1 și corpul iese exact
// 60 și 29; pe un cadru îngust corpul crește până la 81, respectiv 43,5, iar
// rândul al doilea urca peste primul — se vedea la orice titlu sau notă de
// două rânduri. Factorii sunt cei care refac exact valorile de dinainte la
// `st = 1`: 66/60 și 40/29, iar 54/60 pentru golul dintre titlu și notă.
const corpTitlu = 60 * Math.min(st, 1.35);
const corpNota = 29 * Math.min(st, 1.5);
const notaSus = 150 + (titlu.length - 1) * corpTitlu * 1.1 + corpTitlu * 0.9;
return (
<g opacity={opacitate} transform={`translate(0, ${(1 - opacitate) * 18})`}>
{titlu.map((linie, i) => (
<text
key={linie}
x={120}
y={150 + i * 66}
y={150 + i * corpTitlu * 1.1}
fill="var(--text)"
style={{ font: `800 ${60 * Math.min(st, 1.35)}px var(--font-sans)` }}
style={{ font: `800 ${corpTitlu}px var(--font-sans)` }}
>
{linie}
</text>
Expand All @@ -208,9 +216,9 @@ function Antet({
<text
key={linie}
x={120}
y={notaSus + i * 40}
y={notaSus + i * corpNota * 1.38}
fill="var(--text-slab)"
style={{ font: `400 ${29 * Math.min(st, 1.5)}px var(--font-sans)` }}
style={{ font: `400 ${corpNota}px var(--font-sans)` }}
>
{linie}
</text>
Expand Down Expand Up @@ -722,21 +730,17 @@ function ActExplozie({ st }: { st: number }) {
>
{rand.eticheta}
</text>
{/* Cifra și unitatea stau în **același** text, una după alta, nu la
două x-uri fixe (1580 și 1720). Fiecare avea corpul înmulțit cu
`st`, deci pe un cadru îngust „3.628.800" creștea până sub
„operații" și cele două se scriau una peste alta. Într-un singur
text, ancorat la dreapta, golul e `dx` — crește și el cu corpul,
deci nu se mai poate închide. */}
<text
x={1720}
y={y}
textAnchor="end"
dominantBaseline="alphabetic"
fill="var(--text-slab)"
style={{ font: `500 ${26 * Math.min(st, 1.5)}px var(--font-mono)` }}
>
operații
</text>
<text
x={1580}
y={y}
textAnchor="end"
dominantBaseline="alphabetic"
fill={ultimul ? culoareEticheta(ROL_COST) : "var(--text)"}
style={{ font: `800 ${58 * Math.min(st, 1.4)}px var(--font-mono)` }}
>
Expand All @@ -746,10 +750,20 @@ function ActExplozie({ st }: { st: number }) {
<tspan style={{ fontSize: "0.6em" }} dy="-0.45em">
18
</tspan>
{/* Readuce linia de bază de unde a ridicat-o exponentul:
același corp, același `dy`, cu semnul schimbat. */}
<tspan style={{ fontSize: "0.6em" }} dy="0.45em" />
</>
) : (
cuMii(Math.round(p * rand.valoare))
)}
<tspan
dx={26 * Math.min(st, 1.5)}
fill="var(--text-slab)"
style={{ font: `500 ${26 * Math.min(st, 1.5)}px var(--font-mono)` }}
>
operații
</tspan>
</text>
<Bara
x={200}
Expand Down
Loading