diff --git a/jekyll_site/_includes/counters_body.html b/jekyll_site/_includes/counters_body.html index d559e92..06abea7 100644 --- a/jekyll_site/_includes/counters_body.html +++ b/jekyll_site/_includes/counters_body.html @@ -1,2 +1,2 @@ - + diff --git a/jekyll_site/_includes/counters_head.html b/jekyll_site/_includes/counters_head.html index c15cf44..6f3c047 100644 --- a/jekyll_site/_includes/counters_head.html +++ b/jekyll_site/_includes/counters_head.html @@ -1,16 +1,8 @@ - - - diff --git a/jekyll_site/_includes/volumetric-tetris-en.html b/jekyll_site/_includes/volumetric-tetris-en.html index 438d09c..1b19876 100644 --- a/jekyll_site/_includes/volumetric-tetris-en.html +++ b/jekyll_site/_includes/volumetric-tetris-en.html @@ -102,7 +102,7 @@ 640 - + diff --git a/jekyll_site/_includes/volumetric-tetris-ru.html b/jekyll_site/_includes/volumetric-tetris-ru.html index bf11428..8e38699 100644 --- a/jekyll_site/_includes/volumetric-tetris-ru.html +++ b/jekyll_site/_includes/volumetric-tetris-ru.html @@ -102,7 +102,7 @@ 640 - + diff --git a/jekyll_site/en/2023/01/11/spinning-cube-in-space.md b/jekyll_site/en/2023/01/11/spinning-cube-in-space.md index 3f76aee..65a90c1 100644 --- a/jekyll_site/en/2023/01/11/spinning-cube-in-space.md +++ b/jekyll_site/en/2023/01/11/spinning-cube-in-space.md @@ -2,7 +2,7 @@ title: Spinning cube in space description: We consider the difference between parallel and perspective projection. Both are widely used in practice for various purposes. In the previous example, we... sections: [Linear perspective,Rotation matrix,Experimental model] -tags: [javascript,online,canvas,geometry,graphics,image,picture,square,cube] +tags: [javascript,online,canvas,geometry,graphics,image,picture,square,cube,3d,three-dimensional] scripts: [/js/classes-point-cube.js,/js/spinning-cube.js,/js/spinning-cube2.js] styles: [/css/pomodoro1.css] canonical_url: /en/2023/01/11/spinning-cube-in-space.html @@ -93,7 +93,7 @@ center onto the observer screen. 300
- +
diff --git a/jekyll_site/en/2023/01/16/spinning-spatial-cross.md b/jekyll_site/en/2023/01/16/spinning-spatial-cross.md index ea1aced..1848fcf 100644 --- a/jekyll_site/en/2023/01/16/spinning-spatial-cross.md +++ b/jekyll_site/en/2023/01/16/spinning-spatial-cross.md @@ -2,7 +2,7 @@ title: Spinning spatial cross description: We are writing an algorithm for rotating a three-dimensional figure around its center along all three axes at once. In the previous example, we rotated cube... sections: [Volumetric figures,Rotation matrix,Experimental model] -tags: [javascript,online,canvas,geometry,matrix,graphics,image,picture,square,cube] +tags: [javascript,online,canvas,geometry,matrix,graphics,image,picture,square,cube,3d,three-dimensional] scripts: [/js/classes-point-cube.js,/js/spinning-spatial-cross.js,/js/spinning-spatial-cross2.js] styles: [/css/pomodoro1.css] canonical_url: /en/2023/01/16/spinning-spatial-cross.html @@ -108,7 +108,7 @@ direction — *linear perspective* or *reverse perspective* and transparency of 300
- +
Transparency of cubes: @@ -137,13 +137,13 @@ direction — *linear perspective* or *reverse perspective* and transparency of {% include heading.html text="Algorithm description" hash="algorithm-description" %} -We prepare a matrix of zeros and ones, where one means a cube in a certain place of the figure. Then we -bypass this matrix and fill in the array of cubes with the corresponding coordinates of the vertices. After -that, we start the rotation along all three axes at once. At each step, we bypass the array of cubes and get -projections of their faces. Then we sort the array of faces by remoteness from the projection center, bypass -this array and throw away the same pairs from it — these are the adjacent walls between neighboring cubes -inside the figure. After that we draw cube faces with a translucent color — first the distant and then the -near ones, so that the distant faces can be seen through the near ones. +We prepare a three-dimensional matrix of zeros and ones, where one means a cube in a certain place of the figure. +Then we bypass this matrix and fill in the array of cubes with the corresponding coordinates of the vertices. +After that, we start the rotation along all three axes at once. At each step, we bypass the array of cubes and +get projections of their faces. Then we sort the array of faces by remoteness from the projection center, bypass +this array and throw away the same pairs from it — these are the adjacent walls between neighboring cubes inside +the figure. After that we draw with a translucent color the cube faces — first the distant, and then the near ones, +so that the distant faces can be seen through the near ones. {% include heading.html text="Implementation in JavaScript" hash="implementation-in-javascript" %} diff --git a/jekyll_site/js/tetris-controller.js b/jekyll_site/js/tetris-controller.js index 802bb3c..32fc6a9 100644 --- a/jekyll_site/js/tetris-controller.js +++ b/jekyll_site/js/tetris-controller.js @@ -111,7 +111,7 @@ function changeTv2(axis, caller) { function changeDistance2(caller) { d2=caller.target.valueAsNumber; } -// показать центральную точку +// двигать центральную точку function showCenter(caller) { tv2.show=!tv2.show; } diff --git a/jekyll_site/ru/2023/01/10/spinning-cube-in-space.md b/jekyll_site/ru/2023/01/10/spinning-cube-in-space.md index b558597..9c77646 100644 --- a/jekyll_site/ru/2023/01/10/spinning-cube-in-space.md +++ b/jekyll_site/ru/2023/01/10/spinning-cube-in-space.md @@ -2,7 +2,7 @@ title: Вращаем куб в пространстве description: Рассмотрим разницу между параллельной и перспективной проекцией. Обе широко используются на практике для различных целей. В предыдущем примере мы вращали... sections: [Линейная перспектива,Матрица поворота,Экспериментальная модель] -tags: [javascript,онлайн,canvas,геометрия,графика,изображение,картинка,квадрат,куб] +tags: [javascript,онлайн,canvas,геометрия,графика,изображение,картинка,квадрат,куб,3д,трёхмерный] scripts: [/js/classes-point-cube.js,/js/spinning-cube.js,/js/spinning-cube2.js] styles: [/css/pomodoro1.css] canonical_url: /ru/2023/01/10/spinning-cube-in-space.html @@ -91,7 +91,7 @@ date: 2023.01.10 300
- +
diff --git a/jekyll_site/ru/2023/01/15/spinning-spatial-cross.md b/jekyll_site/ru/2023/01/15/spinning-spatial-cross.md index 337aa88..d64d942 100644 --- a/jekyll_site/ru/2023/01/15/spinning-spatial-cross.md +++ b/jekyll_site/ru/2023/01/15/spinning-spatial-cross.md @@ -1,8 +1,8 @@ --- title: Вращаем пространственный крест -description: Пишем алгоритм для поворота объёмной фигуры вокруг своего центра по всем трём осям сразу. В предыдущем примере мы вращали куб в пространстве — в этом... +description: Пишем алгоритм для поворота трёхмерной фигуры вокруг своего центра по всем трём осям сразу. В предыдущем примере мы вращали куб в пространстве — в этом... sections: [Объёмные фигуры,Матрица поворота,Экспериментальная модель] -tags: [javascript,онлайн,canvas,геометрия,матрица,графика,изображение,картинка,квадрат,куб] +tags: [javascript,онлайн,canvas,геометрия,матрица,графика,изображение,картинка,квадрат,куб,3д,трёхмерный] scripts: [/js/classes-point-cube.js,/js/spinning-spatial-cross.js,/js/spinning-spatial-cross2.js] styles: [/css/pomodoro1.css] canonical_url: /ru/2023/01/15/spinning-spatial-cross.html @@ -11,7 +11,7 @@ title_translated: Spinning spatial cross date: 2023.01.15 --- -Пишем алгоритм для поворота объёмной фигуры вокруг своего центра по всем трём осям сразу. В предыдущем +Пишем алгоритм для поворота трёхмерной фигуры вокруг своего центра по всем трём осям сразу. В предыдущем примере мы [вращали куб в пространстве]({{ '/ru/2023/01/10/spinning-cube-in-space.html' | relative_url }}) — в этом примере кубиков будет много, алгоритм будет почти такой же, и формулы будем использовать те же. Для наглядности возьмём два варианта симметричной объёмной фигуры в двух типах проекций — *пространственный крест* @@ -106,7 +106,7 @@ date: 2023.01.15 300
- +
Прозрачность кубиков: @@ -135,12 +135,13 @@ date: 2023.01.15 {% include heading.html text="Описание алгоритма" hash="algorithm-description" %} -Подготавливаем матрицу из нулей и единиц, где единица означает кубик в определенном месте фигуры. Затем -обходим эту матрицу и заполняем массив кубиков с соответствующими координатами вершин. После этого запускаем -вращение по всем трём осям сразу. На каждом шаге обходим массив кубиков и получаем проекции их граней. Затем -сортируем массив граней по удалённости от центра проекции, обходим этот массив и выкидываем из него одинаковые -пары — это есть смежные стенки между соседними кубиками внутри фигуры. После этого полупрозрачным цветом рисуем -грани кубиков — сначала дальние и затем ближние, чтобы через ближние грани было видно дальние. +Подготавливаем трёхмерную матрицу из нулей и единиц, где единица означает кубик в определенном месте фигуры. +Затем обходим эту матрицу и заполняем массив кубиков с соответствующими координатами вершин. После этого +запускаем вращение по всем трём осям сразу. На каждом шаге обходим массив кубиков и получаем проекции их +граней. Затем сортируем массив граней по удалённости от центра проекции, обходим этот массив и выкидываем +из него одинаковые пары — это есть смежные стенки между соседними кубиками внутри фигуры. После этого +рисуем полупрозрачным цветом грани кубиков — сначала дальние, а затем ближние, чтобы через ближние грани +было видно дальние. {% include heading.html text="Реализация на JavaScript" hash="implementation-in-javascript" %} diff --git a/jekyll_site/ru/index.md b/jekyll_site/ru/index.md index d2a1890..0877084 100644 --- a/jekyll_site/ru/index.md +++ b/jekyll_site/ru/index.md @@ -19,7 +19,7 @@ title_translated: Code with comments {%- assign articles = articles | push: article_brief %} {%- assign articles = articles | push: "Вращаем пространственный крест" %} {%- capture article_brief %} -Пишем алгоритм для поворота объёмной фигуры вокруг своего центра по всем трём осям сразу. В предыдущем +Пишем алгоритм для поворота трёхмерной фигуры вокруг своего центра по всем трём осям сразу. В предыдущем примере мы вращали куб в пространстве — в этом примере кубиков будет много, алгоритм будет почти такой же, и формулы будем использовать те же. Для наглядности возьмём два варианта симметричной объёмной фигуры в двух типах проекций — *пространственный крест* и *крест-куб* — рассматриваем разницу между ними.