mirror of
https://github.com/tiennm99/mathmax.git
synced 2026-09-18 12:21:01 +00:00
27ec89fe89f1d81e2c631539606c6e78fc888a07
The animation interpolated each vertex straight from the leg square to its target rectangle, which is not area preserving: the square collapsed to about a ninth of its area midway, so a lesson about shear preserving area showed the opposite. The morph is now a composition of shears and a quarter turn built on geom-engine/transforms.js, each of determinant 1, so the area is exactly a squared and b squared at every frame. The square on the hypotenuse also reached outside the viewBox. The canvas is larger and the legs are capped so every polygon stays on screen for any position of the draggable vertex.
MathMax
Toán tương tác cho học sinh THCS Việt Nam (lớp 6-9). Số học, Đại số, Hình học qua kéo-thả và minh hoạ trực quan.
Status
8 bài đã ra mắt — số học, đại số, hình học đều có ít nhất hai bài.
- Lớp 6 — Ước chung lớn nhất (Euclid):
/so-hoc/uoc-chung-lon-nhat/ - Lớp 6 — Sàng Eratosthenes:
/so-hoc/sang-eratosthenes/ - Lớp 7 — Hiệu hai bình phương:
/dai-so/hieu-hai-binh-phuong/ - Lớp 7 — Đồ thị y = ax + b:
/dai-so/duong-thang/ - Lớp 7 — Định lý Pythagoras:
/hinh-hoc/dinh-ly-pythagoras/ - Lớp 7 — Tam giác bằng nhau (SSS):
/hinh-hoc/tam-giac-bang-nhau/ - Lớp 8 — Tam giác đồng dạng:
/hinh-hoc/tam-giac-dong-dang/ - Lớp 9 — Góc nội tiếp:
/hinh-hoc/goc-noi-tiep/
Develop
Yêu cầu: Node 24+, npm.
npm install
npm run dev # http://localhost:5173/mathmax/
npm test # Vitest (geom-engine unit tests)
npm run check # svelte-check + JSDoc strict
npm run build # Static output → build/
npm run preview # Serve build/
Deploy
Auto-deploy lên GitHub Pages từ main qua actions/deploy-pages@v4. Xem RUNBOOK.md để rollback / chuyển domain.
Live URL: https://tiennm99.github.io/mathmax/
Architecture
- Static: SvelteKit +
@sveltejs/adapter-static,paths.base = '/mathmax', outputbuild/. - Styling: Tailwind 3 (PostCSS) + Be Vietnam Pro (woff2 qua
@fontsource). Tick palettecolors.pair.{1,2,3,4}được khai báo trongtailwind.config.js. - Language: JavaScript only (Svelte 5, JSDoc qua
jsconfig.jsonvớicheckJs: true). - Math engines:
src/lib/geom-engine/(vec, triangle, circle, ticks, transforms),src/lib/numtheory-engine/(gcd, lcm, gcdSteps, sieve),src/lib/algebra-engine/(linear). Module thuần, không phụ thuộc DOM. Vitest unit tests đi kèm. - Math typography:
src/lib/components/tex.svelte— wrapper KaTeX duy nhất. SSR quarenderToString, không cần JS phía client để hiển thị. - Lessons: mỗi bài là một
+page.svelte; copy tiếng Việt colocate trongsrc/lib/lessons/<slug>/copy.vi.js. - Drag: Svelte action
use:draggable(src/lib/actions/draggable.svelte.js) — Pointer Events + bàn phím mũi tên cho a11y. - i18n: Hiện chỉ có tiếng Việt. Site chrome ở
src/lib/i18n/site.vi.js. English thêm sau bằng cách tạo*.en.jssong song.
License
Apache-2.0. Xem LICENSE.
Description
MathMax — Toán tương tác cho học sinh THCS Việt Nam (lớp 6-9). Static site.
Readme
Apache-2.0
720 KiB
Languages
Svelte
53.9%
JavaScript
45.5%
CSS
0.4%
HTML
0.2%