🪜 stairtools is an R package designed to calculate and visualise
staircase designs, based on basic architectural constraints. Results
are sorted according to a step height optimization, in order to choose
easily the best stair dimensioning.
Install the released version from CRAN:
install.packages("stairtools")Or install the latest development version from GitHub:
# install.packages("remotes")
remotes::install_github("clement-LVD/stairtools")㎝. All dimensions are expressed in centimetres.
Input. The user must indicate a total rise to elevate and a total length available. If length is not a constraint on your project, you can specify a very large value.
Output. The package calculates all possible – reasonable – staircase configurations and return various solutions, i.e. varying numbers of steps and whether or not there is a landing step.
𓊍 The possible solutions are scored according to Blondel’s rule (see below) and the best solution is identified, but you can explore the alternative solutions.
Blondel’s rule. A stair geometry follows the Blondel - comfort - relationship.
Where
𓊍 The Blondel ideal value should be 63 cm : it is recommended to prioritise the solution with the smallest deviation from the Blondel target value, i.e. 63 cm. Solutions with a Blondel target value between 60 cm and 64 cm are acceptable.
Best solution. Possible solutions are sorted by their deviation from the Blondel target value.
Edges cases. In the - unlikely - event of a situation where several solutions have a similar Blondel value, solutions are sorted by their deviation from the minimum step height, i.e. 16 cm. This is to ensure that the staircase is comfortable for older people, children and dogs.
library(stairtools)
sol <- calculer_toutes_solutions(hauteur_a_franchir = 103, distance_max = 133)
sol$candidats_nombre_marches
#> n_marches hauteur_marche ecart_hauteur_ideale
#> 1 6 17.16667 1.166667
possible_solutions <- sol$solutions[sol$solutions$solution_possible == TRUE, ]
print(possible_solutions)
#> n_marches hauteur_marche ecart_hauteur_ideale giron_standard
#> 2 6 17.16667 1.166667 28.66667
#> 5 6 17.16667 1.166667 28.66667
#> scenario distance_utilisee blondel_value ecart_blondel
#> 2 sans_palier_uniforme 133 60.93333 2.066667
#> 5 avec_palier_uniforme 133 56.50000 6.500000
#> avec_paliere depasse_espace palier_impossible solution_possible rank
#> 2 FALSE FALSE FALSE TRUE 1
#> 5 TRUE FALSE FALSE TRUE 2
#> (colonne 'geometrie' masquée à l'affichage — accessible via $geometrie[[i]])Or simply find the best solution:
sol2 <- calculer_toutes_solutions(hauteur_a_franchir = 160, distance_max = 150)
best <- meilleure_solution(sol2$solutions)
plot(best$geometrie[[1]])View a drawing with dimensional measurements.
sol3 <- calculer_toutes_solutions(hauteur_a_franchir = 80, distance_max = 150)
best <- meilleure_solution(sol3$solutions)
plot(best$geometrie[[1]], cotes = TRUE) 
