<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Электронный научно-практический журнал «Современные научные исследования и инновации» &#187; Давлетзянов Демид Владимирович</title>
	<atom:link href="http://web.snauka.ru/issues/author/demiddavletzyanov/feed" rel="self" type="application/rss+xml" />
	<link>https://web.snauka.ru</link>
	<description></description>
	<lastBuildDate>Fri, 17 Apr 2026 07:29:22 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Применение библиотеки Three.js для визуализации простых трёхмерных геометрических объектов в веб-среде</title>
		<link>https://web.snauka.ru/issues/2025/12/104046</link>
		<comments>https://web.snauka.ru/issues/2025/12/104046#comments</comments>
		<pubDate>Fri, 05 Dec 2025 14:41:01 +0000</pubDate>
		<dc:creator>Давлетзянов Демид Владимирович</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[3D-моделирование]]></category>
		<category><![CDATA[three.js]]></category>
		<category><![CDATA[WebGL]]></category>
		<category><![CDATA[веб-технологии]]></category>
		<category><![CDATA[визуализация]]></category>
		<category><![CDATA[трехмерная графика]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/issues/2025/12/104046</guid>
		<description><![CDATA[Научный руководитель: Вильданов Алмаз Нафкатович к.ф.-м.н., Уфимский университет науки и технологий, Нефтекамский филиал Введение. Развитие веб-технологий привело к возможности использования трёхмерной графики непосредственно в интернет-браузерах. Стандарт WebGL обеспечивает доступ к аппаратному ускорению графики, однако его использование требует глубоких знаний в области компьютерной графики. В связи с этим широкое распространение получили высокоуровневые библиотеки, упрощающие процесс создания 3D-сцен. Одной [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center; background: white;"><span style="color: #111111;"><em>Научный руководитель: Вильданов Алмаз Нафкатович<br />
к.ф.-м.н., Уфимский университет науки и технологий, Нефтекамский филиал</em><br />
</span></p>
<p style="text-align: justify; background: white;"><span style="color: #111111;"><strong>Введение.</strong> Развитие веб-технологий привело к возможности использования трёхмерной графики непосредственно в интернет-браузерах. Стандарт WebGL обеспечивает доступ к аппаратному ускорению графики, однако его использование требует глубоких знаний в области компьютерной графики. В связи с этим широкое распространение получили высокоуровневые библиотеки, упрощающие процесс создания 3D-сцен.<br />
Одной из наиболее популярных библиотек является Three.js, предоставляющая удобные средства для создания и визуализации трёхмерных объектов. Целью данной работы является демонстрация применения библиотеки Three.js для визуализации простого геометрического объекта и анализа основных этапов построения трёхмерной сцены.<br />
Для реализации трёхмерной визуализации были использованы следующие технологии:<br />
</span></p>
<ol>
<li><span style="color: #111111; background-color: white; text-align: justify;">Язык гипертекстовой разметки HTML5;</span></li>
<li><span style="color: #111111; background-color: white; text-align: justify;">Язык программирования JavaScript;</span></li>
<li><span style="color: #111111; background-color: white; text-align: justify;">Библиотека Three.js версии r128;</span></li>
<li><span style="color: #111111; background-color: white; text-align: justify;">Графический API WebGL;</span></li>
<li><span style="color: #111111; background-color: white; text-align: justify;">Модуль OrbitControls для управления камерой.</span></li>
</ol>
<p style="text-align: justify; background: white;"><span style="color: #111111;">Использование CDN-подключений позволяет обеспечить корректную работу приложения на различных платформах без дополнительной установки программного обеспечения.<br />
</span></p>
<p style="text-align: justify; background: white;"><span style="color: #111111;">Приложение построено по классической архитектуре Three.js и включает следующие основные элементы:<br />
</span></p>
<ol>
<li>
<div style="text-align: justify; background: white;"><span style="color: #111111;">Сцену (THREE.Scene), содержащую все объекты визуализации;<br />
</span></div>
</li>
<li>
<div style="text-align: justify; background: white;"><span style="color: #111111;">Перспективную камеру (THREE.PerspectiveCamera);<br />
</span></div>
</li>
<li>
<div style="text-align: justify; background: white;"><span style="color: #111111;">Рендерер (THREE.WebGLRenderer), осуществляющий вывод изображения;<br />
</span></div>
</li>
<li>
<div style="text-align: justify; background: white;"><span style="color: #111111;">Источники освещения;<br />
</span></div>
</li>
<li>
<div style="text-align: justify; background: white;"><span style="color: #111111;">Трёхмерную модель объекта;<br />
</span></div>
</li>
<li>
<div style="text-align: justify; background: white;"><span style="color: #111111;">Средства пользовательского управления камерой.<br />
</span></div>
</li>
</ol>
<p style="text-align: justify; background: white;"><span style="color: #111111;">Подобная структура обеспечивает модульность и возможность дальнейшего расширения функциональности.<br />
</span></p>
<p style="text-align: justify; background: white;"><span style="color: #111111;">Построение трёхмерной модели. Модель креста формируется из двух параллелепипедов, созданных с использованием класса BoxGeometry. Вертикальный элемент имеет размеры 6×60×3, горизонтальный — 40×6×3 и смещён относительно центра по оси Y.<br />
Для объединения элементов используется объект THREE.Group, позволяющий рассматривать модель как единое целое. В качестве материала применяется MeshPhongMaterial, обеспечивающий корректное освещение и визуальное восприятие формы объекта.<br />
</span></p>
<p style="text-align: justify; background: white;"><span style="color: #111111;">Освещение сцены реализовано с помощью двух источников света: рассеянного (AmbientLight) и направленного (DirectionalLight). Такое сочетание позволяет добиться равномерной освещённости и визуального подчёркивания формы объекта.<br />
Для управления камерой используется модуль OrbitControls, обеспечивающий вращение сцены, масштабирование и плавное перемещение точки наблюдения. Это повышает интерактивность и удобство работы с трёхмерной моделью.<br />
</span></p>
<p style="text-align: justify; background: white;"><span style="color: #111111;"><strong>HTML код приложения:</strong></span></p>
<p>&lt;!DOCTYPE html&gt;</p>
<p>&lt;html lang=&#8221;ru&#8221;&gt;</p>
<p>&lt;head&gt;</p>
<p style="padding-left: 30px;">    &lt;title&gt;three.js — Простой крест&lt;/title&gt;</p>
<p style="padding-left: 30px;">    &lt;meta charset=&#8221;utf-8&#8243;&gt;</p>
<p style="padding-left: 30px;">    &lt;meta name=&#8221;viewport&#8221; content=&#8221;width=device-width, initial-scale=1.0&#8243;&gt;</p>
<p>&lt;/head&gt;</p>
<p>&lt;body&gt;</p>
<p>&lt;div id=&#8221;info&#8221;&gt;Простой крест&lt;/div&gt;</p>
<p>&lt;script src=&#8221;https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js&#8221;&gt;&lt;/script&gt;</p>
<p>&lt;script src=&#8221;https://cdn.jsdelivr.net/npm/three@0.128.0/examples/js/controls/OrbitControls.min.js&#8221;&gt;&lt;/script&gt;</p>
<p>&lt;script&gt;</p>
<p style="padding-left: 30px;">    var camera, scene, renderer;</p>
<p style="padding-left: 30px;">    var controls;</p>
<p style="padding-left: 30px;">    init();</p>
<p style="padding-left: 30px;">    animate();</p>
<p style="padding-left: 30px;">    function init() {</p>
<p style="padding-left: 60px;">        scene = new THREE.Scene();</p>
<p style="padding-left: 60px;">        scene.background = new THREE.Color(0xf0f0f0);</p>
<p style="padding-left: 60px;">        camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 1000);</p>
<p style="padding-left: 60px;">        camera.position.set(0, 0, 100);</p>
<p style="padding-left: 60px;">        renderer = new THREE.WebGLRenderer({ antialias: true });</p>
<p style="padding-left: 60px;">        renderer.setSize(window.innerWidth, window.innerHeight);</p>
<p style="padding-left: 60px;">        document.body.appendChild(renderer.domElement);</p>
<p style="padding-left: 60px;">        var ambientLight = new THREE.AmbientLight(0xffffff, 0.6);</p>
<p style="padding-left: 60px;">        scene.add(ambientLight);</p>
<p style="padding-left: 60px;">        var directionalLight = new THREE.DirectionalLight(0xffffff, 0.8);</p>
<p style="padding-left: 60px;">        directionalLight.position.set(1, 1, 1);</p>
<p style="padding-left: 60px;">        scene.add(directionalLight);</p>
<p style="padding-left: 60px;">        createSimpleCross();</p>
<p style="padding-left: 60px;">        controls = new THREE.OrbitControls(camera, renderer.domElement);</p>
<p style="padding-left: 60px;">        controls.enableDamping = true;</p>
<p style="padding-left: 60px;">        controls.dampingFactor = 0.05;</p>
<p style="padding-left: 60px;">        window.addEventListener(&#8216;resize&#8217;, onWindowResize, false);</p>
<p style="padding-left: 30px;">    }</p>
<p style="padding-left: 30px;">    function createSimpleCross() {</p>
<p style="padding-left: 60px;">        var group = new THREE.Group();</p>
<p style="padding-left: 60px;">        var verticalGeometry = new THREE.BoxGeometry(6, 60, 3);</p>
<p style="padding-left: 60px;">        var verticalMaterial = new THREE.MeshPhongMaterial({ color: 0xffff00 });</p>
<p style="padding-left: 60px;">        var vertical = new THREE.Mesh(verticalGeometry, verticalMaterial);</p>
<p style="padding-left: 60px;">        group.add(vertical);</p>
<p style="padding-left: 60px;">        var horizontalGeometry = new THREE.BoxGeometry(40, 6, 3);</p>
<p style="padding-left: 60px;">        var horizontalMaterial = new THREE.MeshPhongMaterial({ color: 0xffff00 });</p>
<p style="padding-left: 60px;">        var horizontal = new THREE.Mesh(horizontalGeometry, horizontalMaterial);</p>
<p style="padding-left: 60px;">        horizontal.position.y = 8;</p>
<p style="padding-left: 60px;">        group.add(horizontal);</p>
<p style="padding-left: 60px;">        scene.add(group);</p>
<p style="padding-left: 30px;">    }</p>
<p style="padding-left: 30px;">    function onWindowResize() {</p>
<p style="padding-left: 60px;">        camera.aspect = window.innerWidth / window.innerHeight;</p>
<p style="padding-left: 60px;">        camera.updateProjectionMatrix();</p>
<p style="padding-left: 60px;">        renderer.setSize(window.innerWidth, window.innerHeight);</p>
<p style="padding-left: 30px;">    }</p>
<p style="padding-left: 30px;">    function animate() {</p>
<p style="padding-left: 60px;">        requestAnimationFrame(animate);</p>
<p style="padding-left: 60px;">        controls.update();</p>
<p style="padding-left: 60px;">        renderer.render(scene, camera);</p>
<p style="padding-left: 30px;">    }</p>
<p>&lt;/script&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p>
<p style="text-align: justify; background: white;"><span style="color: #111111;"><strong><br />
</strong></span></p>
<p style="text-align: justify; background: white;"><span style="color: #111111;">В результате выполнения программы в браузере отображается интерактивная трёхмерная модель простого креста. Пользователь может изменять ракурс обзора и масштаб, что позволяет детально рассмотреть объект с различных сторон.<br />
</span></p>
<p style="text-align: center; background: white;"><img src="https://web.snauka.ru/wp-content/uploads/2025/12/122925_1539_1.png" alt="" /><span style="color: #111111;"><br />
</span></p>
<p style="text-align: center; background: white;"><span style="color: #111111;">Рисунок 1. Интерактивная трёхмерная модель простого креста<br />
</span></p>
<p style="text-align: justify; background: white;"><span style="color: #111111;">Полученные результаты подтверждают, что библиотека Three.js является эффективным инструментом для визуализации простых и сложных трёхмерных объектов в веб-приложениях, включая образовательные и демонстрационные системы.<br />
</span></p>
<p style="text-align: justify; background: white;"><span style="color: #111111;"><strong>Заключение. </strong>В работе рассмотрен пример использования библиотеки Three.js для создания интерактивной трёхмерной визуализации. Показано, что применение высокоуровневых средств позволяет существенно упростить процесс разработки 3D-графики в веб-среде. Рассмотренный пример может служить основой для дальнейших исследований и разработки более сложных визуальных моделей.</span></p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2025/12/104046/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Моделирование вазы с использованием кривых Безье в среде Three.js</title>
		<link>https://web.snauka.ru/issues/2025/12/104047</link>
		<comments>https://web.snauka.ru/issues/2025/12/104047#comments</comments>
		<pubDate>Tue, 30 Dec 2025 12:07:35 +0000</pubDate>
		<dc:creator>Давлетзянов Демид Владимирович</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[three.js]]></category>
		<category><![CDATA[WebGL]]></category>
		<category><![CDATA[кривая Безье]]></category>
		<category><![CDATA[моделирование]]></category>
		<category><![CDATA[объект вращения]]></category>
		<category><![CDATA[трехмерная графика]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/issues/2025/12/104047</guid>
		<description><![CDATA[Научный руководитель: Вильданов Алмаз Нафкатович к.ф.-м.н., Уфимский университет науки и технологий, Нефтекамский филиал Современные веб-технологии позволяют реализовывать сложные трёхмерные сцены непосредственно в браузере без использования специализированного программного обеспечения. Одной из наиболее популярных библиотек для работы с WebGL является three.js, предоставляющая удобный интерфейс для создания и визуализации трёхмерных объектов. Одним из распространённых способов моделирования тел вращения является использование [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><em>Научный руководитель:</em><em> </em><em>Вильданов Алмаз Нафкатович<br />
</em><em><em>к.ф.-м.н.,</em></em><em> </em><em>Уфимский университет науки и технологий, Нефтекамский филиал</em></p>
<p>Современные веб-технологии позволяют реализовывать сложные трёхмерные сцены непосредственно в браузере без использования специализированного программного обеспечения. Одной из наиболее популярных библиотек для работы с WebGL является three.js, предоставляющая удобный интерфейс для создания и визуализации трёхмерных объектов.</p>
<p>Одним из распространённых способов моделирования тел вращения является использование кривых Безье для задания двумерного профиля с последующим вращением вокруг оси. Данный метод широко применяется в компьютерной графике при создании сосудов, ваз и других симметричных объектов.</p>
<p>Целью данной работы является разработка и описание алгоритма построения трёхмерной модели кувшина на основе кубической кривой Безье в среде three.js.</p>
<p><strong>Теоретические основы. </strong>Кривые Безье представляют собой параметрические кривые, широко применяемые в компьютерной графике и системах автоматизированного проектирования. Кубическая кривая Безье определяется четырьмя контрольными точками и описывается параметрическим уравнением:</p>
<p><img title="formula" src="https://web.snauka.ru/wp-content/uploads/2025/12/formula.png" alt="" width="732" height="48" /></p>
<p>где <em><strong>P<sub>0</sub></strong></em>, <em><strong>P<sub>1</sub></strong></em>, <em><strong>P<sub>2</sub></strong></em>, <em><strong>P<sub>3</sub></strong></em>, - контрольные точки кривой.</p>
<p><strong>Метод вращения профиля. </strong>Для получения трёхмерного объекта профиль, заданный набором точек в двумерном пространстве, вращается вокруг оси симметрии. В three.js данный метод реализован с помощью класса LatheGeometry, который автоматически формирует сетку вершин на основе массива точек и количества сегментов вращения.<br />
<strong></strong></p>
<p><strong>Описание реализации.</strong> Программная реализация выполнена на языке JavaScript с использованием библиотеки three.js. На первом этапе создаётся сцена, камера и рендерер. Камера типа PerspectiveCamera обеспечивает перспективное отображение объекта.     Для формирования профиля кувшина используется кубическая кривая Безье (THREE.CubicBezierCurve), контрольные точки которой масштабируются для получения требуемых размеров объекта. На основе вычисленных точек кривой создаётся геометрия вращения (THREE.LatheGeometry).</p>
<p>Для повышения реалистичности визуализации применяются два источника света: рассеянный (AmbientLight) и направленный (DirectionalLight). Также используются два материала — для внешней и внутренней поверхностей объекта, что позволяет корректно отображать модель при вращении камеры.</p>
<p>Интерактивное управление сценой реализовано с помощью модуля OrbitControls, обеспечивающего вращение, масштабирование и плавное перемещение камеры.</p>
<p>Ниже приведен HTML код программы:</p>
<p>&lt;!DOCTYPE html&gt;</p>
<p>&lt;html lang=&#8221;ru&#8221;&gt;</p>
<p>&lt;head&gt;</p>
<p style="padding-left: 30px;">    &lt;title&gt;three.js — Кувшин, созданный с помощью кривой Безье&lt;/title&gt;</p>
<p style="padding-left: 30px;">    &lt;meta charset=&#8221;utf-8&#8243;&gt;</p>
<p style="padding-left: 30px;">    &lt;meta name=&#8221;viewport&#8221; content=&#8221;width=device-width, initial-scale=1.0&#8243;&gt;</p>
<p>&lt;/head&gt;</p>
<p>&lt;body&gt;</p>
<p>&lt;div id=&#8221;info&#8221;&gt;Кувшин, созданный с помощью кривой Безье&lt;/div&gt;</p>
<p>&lt;script src=&#8221;https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js&#8221;&gt;&lt;/script&gt;</p>
<p>&lt;script src=&#8221;https://cdn.jsdelivr.net/npm/three@0.128.0/examples/js/controls/OrbitControls.min.js&#8221;&gt;&lt;/script&gt;</p>
<p>&lt;script&gt;</p>
<p style="padding-left: 30px;">    var camera, scene, renderer;</p>
<p style="padding-left: 30px;">    var controls;</p>
<p style="padding-left: 30px;">    init();</p>
<p style="padding-left: 30px;">    animate();</p>
<p style="padding-left: 30px;">    function init() {</p>
<p style="padding-left: 60px;">        scene = new THREE.Scene();</p>
<p style="padding-left: 60px;">        scene.background = new THREE.Color(0xf0f0f0);</p>
<p style="padding-left: 60px;">        camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 1000);</p>
<p style="padding-left: 60px;">        camera.position.set(0, 0, 100);</p>
<p style="padding-left: 60px;">        renderer = new THREE.WebGLRenderer({antialias: true});</p>
<p style="padding-left: 60px;">        renderer.setSize(window.innerWidth, window.innerHeight);</p>
<p style="padding-left: 60px;">        document.body.appendChild(renderer.domElement);</p>
<p style="padding-left: 60px;">        var ambientLight = new THREE.AmbientLight(0xffffff, 0.6);</p>
<p style="padding-left: 60px;">        scene.add(ambientLight);</p>
<p style="padding-left: 60px;">        var directionalLight = new THREE.DirectionalLight(0xffffff, 0.8);</p>
<p style="padding-left: 60px;">        directionalLight.position.set(1, 1, 1);</p>
<p style="padding-left: 60px;">        scene.add(directionalLight);</p>
<p style="padding-left: 60px;">        createVase();</p>
<p style="padding-left: 60px;">        controls = new THREE.OrbitControls(camera, renderer.domElement);</p>
<p style="padding-left: 60px;">        controls.enableDamping = true;</p>
<p style="padding-left: 60px;">        controls.dampingFactor = 0.05;</p>
<p style="padding-left: 60px;">        window.addEventListener(&#8216;resize&#8217;, onWindowResize, false);</p>
<p style="padding-left: 30px;">    }</p>
<p style="padding-left: 30px;">    function createVase() {</p>
<p style="padding-left: 60px;">        var group = new THREE.Group();</p>
<p style="padding-left: 60px;">        const scale = 10;</p>
<p style="padding-left: 60px;">        const curve = new THREE.CubicBezierCurve(</p>
<p style="padding-left: 90px;">            new THREE.Vector2(3, 0).multiplyScalar(scale),</p>
<p style="padding-left: 90px;">            new THREE.Vector2(12, 6).multiplyScalar(scale),</p>
<p style="padding-left: 90px;">            new THREE.Vector2(-3, 12).multiplyScalar(scale),</p>
<p style="padding-left: 90px;">            new THREE.Vector2(7, 15).multiplyScalar(scale)</p>
<p style="padding-left: 60px;">        );</p>
<p style="padding-left: 60px;">        const points = curve.getPoints(36);</p>
<p style="padding-left: 60px;">        var geometry = new THREE.LatheGeometry(points, 64);</p>
<p style="padding-left: 60px;">        var material1 = new THREE.MeshPhongMaterial({color: 0xfff000});</p>
<p style="padding-left: 60px;">        var material2 = new THREE.MeshPhongMaterial({color: 0xfff080, side: THREE.BackSide});</p>
<p style="padding-left: 60px;">        var object1 = new THREE.Mesh(geometry, material1);</p>
<p style="padding-left: 60px;">        var object2 = new THREE.Mesh(geometry, material2);</p>
<p style="padding-left: 60px;">        group.add(object1);</p>
<p style="padding-left: 60px;">        group.add(object2);</p>
<p style="padding-left: 60px;">        scene.add(group);</p>
<p style="padding-left: 30px;">    }</p>
<p style="padding-left: 30px;">    function onWindowResize() {</p>
<p style="padding-left: 60px;">        camera.aspect = window.innerWidth / window.innerHeight;</p>
<p style="padding-left: 60px;">        camera.updateProjectionMatrix();</p>
<p style="padding-left: 60px;">        renderer.setSize(window.innerWidth, window.innerHeight);</p>
<p style="padding-left: 30px;">    }</p>
<p style="padding-left: 30px;">    function animate() {</p>
<p style="padding-left: 60px;">        requestAnimationFrame(animate);</p>
<p style="padding-left: 60px;">        controls.update();</p>
<p style="padding-left: 60px;">        renderer.render(scene, camera);</p>
<p style="padding-left: 30px;">    }</p>
<p>&lt;/script&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;<br />
В результате выполнения программы формируется интерактивная трёхмерная модель кувшина, корректно отображаемая в браузере. Пользователь имеет возможность вращать объект, изменять масштаб и рассматривать его под различными углами. Применение кривых Безье позволяет гибко управлять формой модели, изменяя лишь положение контрольных точек.</p>
<p style="text-align: center; background: white;"><img src="https://web.snauka.ru/wp-content/uploads/2025/12/123025_1159_11.png" alt="" /><span style="color: #111111; georgia; 13pt; background-color: yellow;"><br />
</span></p>
<p style="text-align: center; background: white;"><span style="color: #111111;">Рисунок 1. Интерактивная трёхмерная модель вазы<br />
</span></p>
<p style="text-align: justify; background: white;"><span style="color: #111111;"><strong>Заключение</strong></span></p>
<p style="text-align: justify; background: white;">В работе был рассмотрен метод построения трёхмерного объекта вращения на основе кубической кривой Безье с использованием библиотеки three.js. Показано, что данный подход является наглядным, универсальным и удобным для веб-разработки. Разработанное решение может быть расширено за счёт добавления текстур, анимации и более сложных кривых профиля.</p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2025/12/104047/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
