Apie skaičiuoklę
Ši skaičiuoklė padeda suprojektuoti U formos (180° posūkio) laiptus su aikštele — du
lygiagrečius, priešingomis kryptimis einančius maršus, sujungtus aikštele ir atskirtus
tarpu (šulinio plotis) tarp jų — pagal jau esančią grindų angą. Formulės tos pačios
kaip L formos laiptų skaičiuoklėje (abi remiasi ta pačia bendrai naudojama maršo
geometrijos logika ir tuo pačiu „pirmiausia anga" (opening-first) modeliu), tačiau čia yra
papildomas šulinio pločio parametras, o aikštelės plotis visada apskaičiuojamas iš maršo
pločio ir šulinio, ne įvedamas tiesiogiai. Kaip ir kitos laiptų skaičiuoklės, tai
projektavimo (kind: 'design') skaičiuoklė — rezultatas yra pats brėžinys.
Formulė
Anga yra pirminis duomuo, ne rezultatas — tas pats principas, kaip ir L formos bei tiesių laiptų skaičiuoklėse:
pakylų skaičius iš viso = suapvalinta(bendras aukštis / pageidaujamas pakylos aukštis)
pakylos aukštis = bendras aukštis / pakylų skaičius (vienas dalijimas visam laiptui, tiksliai)
apatinio maršo pakylų skaičius = suapvalinta(aikštelės aukščio taikinys / pakylos aukštis)
viršutinio maršo pakylų skaičius = pakylų skaičius iš viso − apatinio maršo pakylų skaičius
Pakopos plotis (going) taikomas VIENODAI abiem maršams, o jo šaltinis priklauso nuo
openingExactFit:
jei openingExactFit = false (NUMATYTOJI nuo 2026-08-23):
pakopos plotis = vartotojo įvestas `going`
viršutinio maršo ilgis = pakopos plotis × viršutinio maršo pakopų skaičius
jei openingExactFit = true (pasirenkama):
viršutinio maršo ilgis = angos ilgis − noselės iškyša
pakopos plotis = viršutinio maršo ilgis / viršutinio maršo pakopų skaičius
apatinio maršo ilgis = pakopos plotis × apatinio maršo pakopų skaičius (ta pati reikšmė iš viršaus)
Apatinis maršas neturi savo angos, todėl jo ilgis tiesiog paveldi tą patį pakopos plotį.
Kodėl numatytoji reikšmė pasikeitė: realiame gyvenime grindų anga paprastai išpjaunama
DIDESNĖ nei viršutinis maršas, kuris pristatomas prie vieno jos krašto — anga, tiksliai
sutampanti su maršo ilgiu, yra retesnis, ne bendras atvejis. Todėl openingExactFit = false
(naujoji numatytoji reikšmė) laiko going tikru, nepriklausomu projektiniu sprendimu — angos
ilgis visai nedalyvauja nė vieno maršo dydyje. openingExactFit = true išlieka pasiekiama
kaip pasirinkimas tais atvejais, kai anga tikrai buvo iškirsta lygiai pagal viršutinio maršo
dydį — tada anga realiai nustato pakopos plotį ir visą viršutinio maršo ilgį; patogumo
formulė lieka tik kaip atskira diagnostika, tikrinanti rezultatą, ne kaip jo šaltinis, abiem
atvejais.
Kodėl atimama noselės iškyša (tik openingExactFit = true kelyje): kiekvienos pakopos
noselė kyšo į priekį už savo pakylos linijos lygiai per noseOverhang — įskaitant PIRMĄJĄ
viršutinio maršo pakopą, kurios noselė kyšo prieš patį maršo pradžios tašką. Jei viršutinio
maršo ilgis būtų lygus tiksliai angos ilgiui (be atimties), angos artimasis kraštas visada
sutaptų su maršo pradžios tašku, o pirmosios pakopos noselė visada liktų šiek tiek už angos
ribos — nesvarbu, koks angos ilgis ar padėtis. Tai buvo modeliavimo klaida, ne fizika (žr. L
formos laiptų skaičiuoklės Formulė, identiška problema ir sprendimas, nes abi skaičiuoklės
naudoja tą pačią bendrai naudojamą maršo geometrijos logiką).
angos artimasis kraštas (nuo maršo pradžios) = viršutinio maršo ilgis − angos ilgis
Viršutinio maršo viršus (toliausias nuo aikštelės taškas, kur jis pasiekia tikrą viršutinį
aukštą) visada turi atsidurti prie angos tolimojo krašto. Kai openingExactFit = false
(numatytoji), ši reikšmė paprastai gerokai neigiama — reali anga paprastai iškirsta didesnė
nei maršas, todėl going (tikras, nuo angos nepriklausomas dydis) dažniausiai duoda
trumpesnį viršutinį maršą už angą, ir maršo pradžia jau atsiduria angos ribose. Kai
openingExactFit = true (pasirenkama), viršutinio maršo ilgis konstrukciškai lygus angos
ilgiui minus noselės iškyša, todėl angos artimasis kraštas visada lygus lygiai minus
noselės iškyšai (pvz., −25 mm su numatytąja 25 mm iškyša) — ne nuliui — kaip tik tiek, kiek
reikia, kad pirmosios pakopos noselė patektų į angos ribas.
aikštelės gylis (judėjimo kryptimi) = maršo plotis (jei lygus jam) arba jūsų nurodytas dydis
aikštelės plotis (statmenai judėjimui) = maršo plotis × 2 + šulinio plotis (visada išvedamas, niekada neįvedamas)
aikštelės aukštis (faktinis) = apatinio maršo pakylų suma
pakopos gylis (su nosele) = pakopos plotis + noselės iškyša
nuolydžio kampas = atan2(pakylos aukštis, pakopos plotis)
kiekvieno maršo tetivos ilgis = √(to maršo aukštis² + to maršo ilgis²)
Skirtingai nuo L formos laiptų, čia du maršai yra lygiagretūs ir eina priešingomis
kryptimis, o ne statmenai vienas kitam — juos skiria šulinio plotis. Aikštelės plotis
niekada neįvedamas tiesiogiai — jis visada lygus maršo plotis × 2 + šulinio plotis, todėl
struktūriškai negali būti siauresnis už vieną maršą.
Galvos laisvės patikra taikoma visam nueinamam keliui — kiekvienai apatinio maršo pakopai, pačiai aikštelei ir kiekvienai viršutinio maršo pakopai, ne tik viršutiniam maršui. Kiekvienas taškas turi savo brėžinio stačiakampį (plano vaizde) ir savo aukštį; jis tikrinamas prieš vieną plokščią, nuo apatinio aukšto grindų skaičiuojamą lubų liniją ir prieš angos stačiakampį — taškas atleidžiamas nuo patikros tik jei jo stačiakampis visiškai patenka į angos stačiakampį, ne vien iš dalies persidengia.
Aikštelės gylio patikra (IRC R311.7.6, ta pati formuluotė kaip L formos laiptuose)
taikoma aikštelės gyliui, ne pločiui — nes plotis (visada 2×maršo plotis+šulinys)
struktūriškai negali būti siauresnis už vieną maršą, todėl ši patikra jam neturėtų prasmės.
Pakopų patogumo (2×pakyla+plotis) ir nuolydžio (30–45°) patikros naudoja tuos pačius kriterijus ir tuos pačius du standartus, kaip ir abi kitos laiptų skaičiuoklės.
Pavyzdys
Numatytosios reikšmės: angos ilgis 3665 mm, angos plotis 1100 mm, bendras aukštis 3500 mm,
maršo plotis 900 mm, šulinio plotis 100 mm, perdangos storis 300 mm, reikalaujama galvos
laisvė 2000 mm, viršutinė pakopa lygi su grindimis, aikštelės gylis lygus maršo pločiui,
aikštelės aukščio taikinys 1050 mm, pageidaujamas pakylos aukštis 175 mm, pakopos plotis
280 mm (tikras įvestas dydis, openingExactFit = false), pakopos storis 32 mm, noselės
iškyša 25 mm.
pakylų skaičius iš viso = suapvalinta(3500 / 175) = 20 (dalijasi be liekanos)
pakylos aukštis = 3500 / 20 = 175 mm (tiksliai)
apatinio maršo pakylų skaičius = suapvalinta(1050 / 175) = 6
viršutinio maršo pakylų skaičius = 20 − 6 = 14
viršutinio maršo pakopų skaičius = 14 − 1 = 13 (viršutinė pakopa lygi su grindimis)
pakopos plotis = 280 mm (tikras įvestas dydis, angos ilgis nedalyvauja)
viršutinio maršo ilgis = 280 × 13 = 3640 mm
angos artimasis kraštas = 3640 − 3665 = −25 mm
apatinio maršo pakopų skaičius = 6 − 1 = 5 (paskutinę pakopą atstoja aikštelė)
apatinio maršo ilgis = 5 × 280 = 1400 mm
aikštelės gylis = 900 mm; aikštelės plotis = 900 × 2 + 100 = 1900 mm
aikštelės aukštis = 6 × 175 = 1050 mm (tiksliai sutampa su taikiniu)
pakopos gylis = 280 + 25 = 305 mm
nuolydžio kampas = atan2(175; 280) ≈ 0,5586 rad ≈ 32,01°
apatinio maršo tetivos ilgis = √(1050² + 1400²) = 1750 mm (tiksliai)
viršutinio maršo tetivos ilgis = √(2450² + 3640²) ≈ 4387,72 mm
Skaičiuoklė šiems įvesties duomenims grąžina lygiai tą patį: pakylos aukštį 175 mm, pakopos plotį 280 mm, pakopos gylį 305 mm, aikštelės plotį 1900 mm, aikštelės aukštį 1050 mm, apatinio maršo tetivos ilgį 1750 mm, viršutinio maršo tetivos ilgį ≈4387,72 mm, 6 pakylas apatiniame marše ir 14 — viršutiniame.
Galvos laisvė: su šiais numatytaisiais duomenimis skaičiuoklė praeina patikrą be jokių įspėjimų ar klaidų — mažiausia prošvaisa (2150 mm, su 150 mm atsarga virš reikalaujamų 2000 mm) randama PAČIOJE AIKŠTELĖJE, ne viršutiniame marše: kadangi angos artimasis kraštas dabar lygiai −25 mm (žr. Formulė), anga pilnai dengia pirmosios viršutinio maršo pakopos noselę, todėl visas viršutinis maršas patenka į angos ribas ir yra atleistas nuo patikros. 2×pakyla+plotis = 2×175+280 = 630 mm — tiksliai DIN 18065 taikinys, patogumo intervalo viduryje; jokių įspėjimų šiems įvesties duomenims negrąžinama.
Atskira, tik viršutiniam maršui skirta „koks angos dydis būtų reikalingas" skaičiuoklė šiuo atveju grąžina pradžios tašką −25 mm ir ilgį 3665 mm — tiksliai sutampantį su faktiniu angos ilgiu, nes numatytieji duomenys parinkti taip, kad anga tiksliai patenkintų šį izoliuotą reikalavimą. Tai vertina tik viršutinio maršo pačio poreikį, izoliuotai nuo bendro kelio patikros aukščiau, ir nebūtinai sutampa su ja.
Medienos sąrašas: 18 pakopų (5 apatiniame marše + 13 viršutiniame) × 900 mm pločio × 305 mm gylio pakopų lentų — 4 lentos po 4800 mm. 18 pakylų lentų (iš 20 pakylų iš viso — 2 pakylos, remiančios aikštelę/grindis, o ne pakopą, praleidžiamos, nes jų aukštis mažesnis už perdangos storį): taip pat 4 lentos. 4 tetivos (2 apatinio maršo po 1750 mm, 2 viršutinio maršo po ≈4387,72 mm, iš viso ≈12 275,44 mm): 3 lentos.
Dažni klausimai
Kodėl pakopos plotis nebeskaičiuojamas iš 2×pakyla+plotis formulės?
Nes tai buvo ankstesnė, dar ne iki galo pritaikyta „pirmiausia anga" modelio versija — anga
tada buvo tik tikrinama, ne realiai naudojama pakopos pločiui nustatyti. Šiandien, pagal
numatytąją reikšmę (openingExactFit = false), going yra tikras įvestas dydis — patogumo
formulė lieka atskira diagnostika rezultatui patikrinti. Įjungus openingExactFit, pakopos
plotis (ir visas viršutinio maršo ilgis) tiesiogiai išvedamas iš angos ilgio.
Kodėl aikštelė tikrinama kartu su maršais, ne atskirai? Nes galvos laisvės patikra apima visą nueinamą kelią — kiekvieną apatinio maršo pakopą, pačią aikštelę ir kiekvieną viršutinio maršo pakopą — palyginant su viena bendra lubų linija, o ne tik viršutinį maršą. Anga atleidžia nuo patikros tik tuos taškus, kurių visas grindų plano plotas patenka į jos ribas.
Kodėl angos artimasis kraštas gali būti neigiamas?
Nes viršutinio maršo viršus visada turi atsidurti prie angos tolimojo krašto — tai
struktūrinis reikalavimas. Su numatytąja reikšme (openingExactFit = false) ši riba
paprastai gerokai neigiama, nes reali anga paprastai iškirsta didesnė nei viršutinis maršas
— going (tikras, nuo angos nepriklausomas dydis) duoda trumpesnį maršą už angą, todėl maršo
pradžia jau atsiduria angos ribose, dažnai net toli už jos artimojo krašto (žr. Prielaidos ir
ribos, kodėl tai gali pasiekti ir pačią aikštelę). Įjungus openingExactFit, ši riba visada
lygi lygiai minus noselės iškyšai (pvz., −25 mm su numatytąja 25 mm iškyša) — ne nuliui —
nes viršutinio maršo ilgis tada konstrukciškai lygus angos ilgiui minus noselės iškyša:
pirmosios pakopos noselei reikia tiek vietos angoje prieš patį maršo pradžios tašką.
Kam reikalingas šulinio plotis (wellWidth)? Tai tarpas tarp dviejų lygiagrečių maršų, pakankamas turėklui iš abiejų pusių prie atviro šulinio. Šis dydis neturi cituojamo standarto — nė vienas iš trijų cituojamų standartų (DIN 18065, STR 2.02.01:2004, IRC R311.7.6) tiesiogiai nenurodo minimalaus šulinio pločio.
Kodėl aikštelės pločio patikros nėra, o tik gylio?
Nes aikštelės plotis (statmuo judėjimo krypčiai) visada apskaičiuojamas kaip
2×maršo plotis+šulinio plotis — jis struktūriškai negali būti siauresnis už vieną maršą,
todėl IRC R311.7.6 patikra taikoma tik aikštelės gyliui, kuris gali būti nustatytas mažesnis,
jei pasirenkamas rankinis dydis.
Ar turnDirection čia keičia kokį nors skaičių?
Ne — tai grynai brėžinio parametras, nulemiantis, į kurią šulinio pusę atsiveria apatinis
maršas. Tiek turnDirection, tiek stairPositionInOpening yra išreikšti nuo kopiančiojo
žmogaus pačios kairės/dešinės rankos, stovint maršo apačioje prieš pirmą žingsnį — ne nuo
brėžinio ašies.
Prielaidos ir ribos
meta.standards cituoja DIN 18065, STR 2.02.01:2004 (2×pakyla+plotis patikrai, su tuo pačiu
630/650 mm neatitikimu) ir IRC R311.7.6 (aikštelės gylio patikrai). 30–45° nuolydžio
patogumo intervalas lieka necituota bendra taisyklė. Šulinio pločio numatytoji reikšmė ir
ribos yra pačios skaičiuoklės pasirinkimas — nė vienas iš trijų cituojamų standartų
minimalaus šulinio pločio tiesiogiai nenurodo.
Reikalaujama galvos laisvė yra vartotojo įvestis be cituojamo minimumo, taikoma visam
nueinamam keliui — apatiniam maršui, aikštelei ir viršutiniam maršui.
requiredOpeningStart/requiredOpeningLength reikšmės atsako tik į „koks angos dydis
pakaktų viršutiniam maršui" — jos NEATSPINDI viso kelio patikros rezultato ir gali rodyti,
kad turima anga pakankama, net kai bendra patikra grąžina klaidą dėl aikštelės ar apatinio
maršo. requiredOpeningStart gali būti ir NEIGIAMAS — tai reali, o ne klaidinga reikšmė: ji
reiškia, kad anga turėtų prasidėti šiek tiek ANKSČIAU už paties maršo pradžios tašką (kad
pirmosios pakopos noselė gautų reikiamą galvos laisvę), o ne kad reikalavimas jau įvykdytas
nuo pat maršo pradžios.
Numatytosios reikšmės (angos ilgis, bendras aukštis, aikštelės aukščio taikinys) parinktos taip, kad numatytas laiptas patenkintų savo pačios galvos laisvės patikrą su realia atsarga (žr. Pavyzdys), o ne vien techniškai — ankstesnė šios skaičiuoklės versija numatytai atidarydavo su klaida. Tai nesusilpnina pačios patikros: bet kuri kombinacija, kurioje aikštelė yra pakankamai aukštai (palyginti su bendru aukščiu), vis tiek gali nepraeiti patikros — tai realus, ne dirbtinis, apribojimas.
Skirtingai nuo L formos laiptų skaičiuoklės, čia aikštelės aukščio didinimas NEDUODA
naudos — tai patikrinta tiesiogiai, ne tiesiog prielaida: šios skaičiuoklės aikštelė driekiasi
per VISĄ šulinio plotį (abu maršus ir šulinį — maršo plotis×2+šulinio plotis = 1900 mm su
numatytaisiais duomenimis), ne vieno maršo plotį (900 mm), ir tas aikštelės plotis yra TOJE
PAČIOJE ašyje (stairPositionInOpening, čia X), kurioje driekiasi ir pačios angos plotis —
skirtingai nuo L formos laiptų, kur apatinis maršas (ir kartu aikštelės ilgis) yra
STATMENOJE, angai visiškai nepasiekiamoje ašyje. Šiai skaičiuoklei anga, praplatinta tiek,
kad apimtų visą 1900 mm aikštelės plotį, KARTU apima ir apatinio maršo juostą, nes jos abi
yra greta, skiriamos tik šulinio pločiu — nėra realaus tarpinio atvejo, kuriame anga dengtų
aikštelę, bet ne apatinį maršą. Patikrinta tiesioginiu bandymu: openingWidth, praplatintas
iki 1900 mm ir daugiau su stairPositionInOpening='right', IŠTIKRŲJŲ pašalina visas klaidas
— bet tik todėl, kad atleidžia nuo patikros ir apatinį maršą, t. y. panaikina lubas virš
VISO laiptų maršo, ne tik šiek tiek praplatina angą už maršo ribų. Tai nebe tas bendras
atvejis, kurį modeliuoja šis numatytosios reikšmės pakeitimas, todėl tai nepasirinkta
numatytąja reikšme.
aikštelės aukščio taikinys (1050 mm) ir angos ilgis (3665 mm) todėl LIEKA NEPAKEISTI nuo
ankstesnės versijos — ir jiems nereikia keitimo: prie šių tiksliai tų pačių skaičių, going
pagal naująją numatytąją reikšmę (tikras 280 mm dydis) sutampa su tuo, ką senoji
išvedimo-iš-angos formulė čia jau duodavo (split(3665−25,13)=280 mm tiksliai), todėl
viršutinio maršo ilgis ir angos artimasis kraštas išlieka tie patys nepriklausomai nuo kelio
— rezultatas identiškas ankstesnei versijai (pakylos aukštis 175 mm, pakopos plotis 280 mm,
2×pakyla+plotis = 630 mm, jokių įspėjimų ar klaidų, vienas informacinis pranešimas, 150 mm
galvos laisvės atsarga) — žr. compute.test.ts. Šios skaičiuoklės aikštelės aukščio riba
lieka 30 % bendro aukščio — tikrai skiriasi nuo L formos laiptų skaičiuoklės 35 % — tai
realus geometrinis skirtumas tarp 90° ir 180° atvejų, ne apsirikimas.
Vienas perdangos storio įvesties laukas naudojamas ir viršutinės perdangos, ir aikštelės konstrukcijos storiui — ta pati prielaida kaip L formos laiptų skaičiuoklėje.
Ši skaičiuoklė naudoja tą pačią bendrai naudojamą maršo geometrijos logiką kaip L formos
laiptų skaičiuoklė (buildFlightGeometry, parallelFlightBandLayout,
planRectFullyCoveredBy ir susiję pagalbiniai metodai iš packages/geometry), todėl
abiejų riserio/pakopos formulės, medienos poreikio skaičiavimas ir parts[] struktūra yra
identiški — skiriasi tik aikštelės geometrija ir maršų orientacija plane (lygiagretūs
priešingomis kryptimis, o L formoje — statmeni). Medienos lentų skaičius yra paprastas
kiekio dalijimas iš standartinio lentos ilgio, ne pjaustymo plano optimizavimas.