Translate the whole repository to English
The kit is going public, so everything a reader sees is now English:
27 model sources, the core vocabulary, meta.ts (titles, descriptions and
every slider label), the viewer UI, all script output, REFERENCE.md and
the READMEs.
Rules applied: only comments, doc comments and human-facing strings were
touched. Identifiers, numbers, logic, registry item ids, part names and
material slot names are unchanged — those are a published contract and
were already English.
Verified rather than assumed: for all 53 changed .ts files the code
skeleton (source with comments stripped and string contents replaced by a
placeholder) is byte-identical before and after. Full gate is green —
typecheck, registry conformance, ~510 model checks, GLB round trip and a
production build.
Also fixed here:
- index.html and viewer.html were missed by the translation pass because
the file list only covered .ts/.md/.css. Both had lang="tr" and Turkish
titles.
- The viewer formatted triangle counts with toLocaleString('tr-TR'), which
prints 15.425 rather than 15,425.
- REFERENCE.md's model table header did not match what
scripts/catalog-table.ts emits, so the next regeneration would have
silently changed it. Aligned to the generator.
- Removed scripts/probe.ts and scripts/zdiag.ts; they were throwaway
diagnostics that got committed by accident.
This commit is contained in:
parent
72f219d087
commit
50c7fc60b9
97 changed files with 4572 additions and 4270 deletions
|
|
@ -1,12 +1,13 @@
|
|||
/**
|
||||
* @medieval-kit/wooden-pitchfork
|
||||
*
|
||||
* Yabayı uzaktan ayırt ettiren şey dişlerin arasındaki boşluk. O yüzden diş
|
||||
* sayısı ve açıklığı siluetin tamamını belirliyor.
|
||||
* What tells a pitchfork apart from a distance is the gap between the tines.
|
||||
* That is why the tine count and their spread decide the whole silhouette.
|
||||
*
|
||||
* İlk hâlimde dişler kare kesitli kutulardı ve hepsi birebir aynıydı. Gerçek
|
||||
* diş dövme ve yuvarlaktır, uca doğru sivrilir, ve hiçbiri komşusuyla tam aynı
|
||||
* açıda değildir. Üçü de burada düzeltildi.
|
||||
* In my first version the tines were boxes of square section and every one of
|
||||
* them was identical. A real tine is forged and round, it tapers towards the
|
||||
* point, and none of them sits at exactly the same angle as its neighbour. All
|
||||
* three were fixed here.
|
||||
*/
|
||||
import { type BufferGeometry } from 'three'
|
||||
|
||||
|
|
@ -27,11 +28,11 @@ import {
|
|||
export interface WoodenPitchforkConfig {
|
||||
readonly length: number
|
||||
readonly shaftRadius: number
|
||||
/** Diş sayısı. */
|
||||
/** Number of tines. */
|
||||
readonly tineCount: number
|
||||
/** Dişlerin dışa açılması (radyan). */
|
||||
/** How far the tines splay outwards (radians). */
|
||||
readonly spread: number
|
||||
/** Diş uzunluğu, toplam boyun oranı olarak. */
|
||||
/** Tine length, as a fraction of the total length. */
|
||||
readonly tineLength: number
|
||||
readonly seed: number
|
||||
}
|
||||
|
|
@ -69,7 +70,7 @@ export function createModel(overrides: Partial<WoodenPitchforkConfig> = {}) {
|
|||
const base = shaft.top + config.length * 0.006
|
||||
const pieces: BufferGeometry[] = []
|
||||
|
||||
// Enine dövme: dişleri sokete bağlayan yassı demir. Uçlara doğru inceliyor.
|
||||
// Cross forging: flat iron tying the tines to the socket. Thins towards the ends.
|
||||
const crossWidth = config.shaftRadius * 2.6 * count
|
||||
pieces.push(chamferedBoxGeometry(
|
||||
[crossWidth, config.shaftRadius * 2],
|
||||
|
|
@ -82,26 +83,28 @@ export function createModel(overrides: Partial<WoodenPitchforkConfig> = {}) {
|
|||
|
||||
for (let i = 0; i < count; i += 1) {
|
||||
const t = count === 1 ? 0 : (i / (count - 1)) * 2 - 1
|
||||
// Diş KALIN olmalı. İlk hâlde yarıçap sapın yarısı kadardı, yani 1 cm;
|
||||
// model uzaktan üç saç teli gibi görünüyordu. Gerçek yaba dişi 2–3 cm
|
||||
// çapında dövme demirdir ve siluette sapın kendisi kadar yer kaplar.
|
||||
// A tine must be THICK. In the first version the radius was half the
|
||||
// shaft's, i.e. 1 cm, and from a distance the model looked like three
|
||||
// hairs. A real pitchfork tine is forged iron 2–3 cm across and takes up
|
||||
// as much of the silhouette as the shaft itself.
|
||||
const radius = config.shaftRadius * 0.88
|
||||
const profile: Level[] = [
|
||||
{ y: 0, radius: radius * 1.2 },
|
||||
{ y: tineSpan * 0.2, radius },
|
||||
{ y: tineSpan * 0.66, radius: radius * 0.78 },
|
||||
{ y: tineSpan * 0.9, radius: radius * 0.42 },
|
||||
{ y: tineSpan, radius: radius * 0.12 }, // sivri ama sıfır değil
|
||||
{ y: tineSpan, radius: radius * 0.12 }, // pointed but not zero
|
||||
]
|
||||
const tine = latheGeometry(profile, 6, [0, 0, 0], steelTint(random, -0.05), {
|
||||
capTop: false,
|
||||
colourTop: steelTint(random, 0.05),
|
||||
})
|
||||
// Kavis: düz bir diş teknik resim gibi duruyor. Gerçek yaba dişi öne
|
||||
// doğru kıvrıktır — kaldırdığı samanı düşürmesin diye.
|
||||
// Curve: a straight tine looks like a technical drawing. A real pitchfork
|
||||
// tine is bent forward — so it does not drop the straw it has lifted.
|
||||
bendGeometry(tine, 0.42 / tineSpan + jitter(random, 0.06 / tineSpan))
|
||||
// Her diş komşusundan biraz farklı açıda: dövme bir yaba kusursuz
|
||||
// simetrik olmaz, ve bu tek detay onu "üretilmiş" olmaktan çıkarıyor.
|
||||
// Each tine sits at a slightly different angle from its neighbour: a
|
||||
// forged pitchfork is never perfectly symmetric, and this single detail
|
||||
// stops it from looking "manufactured".
|
||||
tine.rotateZ(-t * config.spread + jitter(random, 0.02))
|
||||
tine.rotateX(jitter(random, 0.025))
|
||||
tine.translate(t * config.shaftRadius * 2.5, base + config.length * 0.008, 0)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue