<?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; библиотека WebGL</title>
	<atom:link href="http://web.snauka.ru/issues/tag/biblioteka-webgl/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>Моделирование стереометрических фигур в браузере с помощью WebGL</title>
		<link>https://web.snauka.ru/issues/2026/02/104255</link>
		<comments>https://web.snauka.ru/issues/2026/02/104255#comments</comments>
		<pubDate>Wed, 25 Feb 2026 14:00:33 +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>

		<guid isPermaLink="false">https://web.snauka.ru/issues/2026/02/104255</guid>
		<description><![CDATA[Научный руководитель: Вильданов Алмаз Нафкатович к.ф.-м.н., Уфимский университет науки и технологий, Нефтекамский филиал Введение Современные веб-технологии открывают новые возможности для визуализации трёхмерных объектов непосредственно в браузере без необходимости установки дополнительного программного обеспечения. WebGL (Web Graphics Library) представляет собой JavaScript API, позволяющий создавать интерактивную 3D-графику, работающую в любом современном браузере. Эта технология особенно актуальна для образовательных целей, где [...]]]></description>
			<content:encoded><![CDATA[<p style="background: white; text-align: center;"><em>Научный руководитель: <span style="color: #0f1115;">Вильданов Алмаз Нафкатович<br />
</span><span style="color: #0f1115;">к.ф.-м.н., </span><span style="color: #0f1115;">Уфимский университет науки и технологий, Нефтекамский филиал</span></em></p>
<p style="background: white;"><span style="color: #0f1115;"><strong>Введение<br />
</strong></span></p>
<p style="background: white;"><span style="color: #0f1115;">Современные веб-технологии открывают новые возможности для визуализации трёхмерных объектов непосредственно в браузере без необходимости установки дополнительного программного обеспечения. WebGL (Web Graphics Library) представляет собой JavaScript API, позволяющий создавать интерактивную 3D-графику, работающую в любом современном браузере. Эта технология особенно актуальна для образовательных целей, где наглядная демонстрация стереометрических фигур помогает студентам лучше понимать пространственные отношения и геометрические свойства объектов.<br />
</span></p>
<p style="background: white;"><span style="color: #0f1115;">Моделирование куба, пирамиды, сферы и других тел вращения с помощью WebGL и библиотеки Three.js (рисунок 1) открывает широкие возможности для создания виртуальных лабораторий, интерактивных учебных пособий и демонстрационных материалов. В условиях дистанционного обучения такие инструменты становятся незаменимыми для наглядного представления абстрактных математических концепций.<br />
</span></p>
<p style="background: white;"><span style="color: #0f1115;"><strong>Алгоритм моделирования стереометрических фигур<br />
</strong></span></p>
<p style="background: white;"><span style="color: #0f1115;">Процесс создания трёхмерных объектов в браузере включает последовательные шаги по настройке сцены, созданию геометрических примитивов и их анимации:<br />
</span></p>
<ul>
<li>
<div style="background: white;"><span style="color: #0f1115;">импортируем библиотеку Three.js в HTML-документ;<br />
</span></div>
</li>
<li>
<div style="background: white;"><span style="color: #0f1115;">создаём сцену, камеру и рендерер для отображения графики;<br />
</span></div>
</li>
<li>
<div style="background: white;"><span style="color: #0f1115;">устанавливаем позицию камеры и настраиваем перспективу;<br />
</span></div>
</li>
<li>
<div style="background: white;"><span style="color: #0f1115;">добавляем источники света для реалистичного отображения теней;<br />
</span></div>
</li>
<li>
<div style="background: white;"><span style="color: #0f1115;">создаём геометрические объекты (куб, пирамиду, сферу) с заданными размерами;<br />
</span></div>
</li>
<li>
<div style="background: white;"><span style="color: #0f1115;">определяем материалы и текстуры для поверхностей фигур;<br />
</span></div>
</li>
<li>
<div style="background: white;"><span style="color: #0f1115;">добавляем созданные объекты на сцену;<br />
</span></div>
</li>
<li>
<div style="background: white;"><span style="color: #0f1115;">реализуем анимацию вращения фигур с помощью requestAnimationFrame;<br />
</span></div>
</li>
<li>
<div style="background: white;"><span style="color: #0f1115;">обрабатываем изменения размеров окна браузера.<br />
</span></div>
</li>
</ul>
<p style="background: white;"><span style="color: #0f1115;">Этот алгоритм позволяет создавать интерактивные 3D-сцены с возможностью вращения, масштабирования и изменения параметров объектов в реальном времени. Для стереометрических фигур важно правильно настроить освещение, чтобы подчеркнуть их объём и грани.<br />
</span></p>
<p style="background: white;"><span style="color: #0f1115;"><strong>Реализация на JavaScript с Three.js<br />
</strong></span></p>
<p style="background: white;"><span style="color: #0f1115;">Ниже приведён фрагмент кода, демонстрирующий создание трёх стереометрических фигур (куба, пирамиды и сферы) с анимацией вращения:<br />
</span></p>
<p><span style="color: #0f1115;">javascript</span></p>
<p><span style="color: #a626a4;">import<span style="color: #0f1115;"> <span style="color: #4078f2;">*<span style="color: #0f1115;"> <span style="color: #a626a4;">as<span style="color: #0f1115;"> <span style="color: #b76b01;">THREE<span style="color: #0f1115;"> <span style="color: #a626a4;">from<span style="color: #0f1115;"> <span style="color: #50a14f;">&#8216;https://cdn.skypack.dev/three@0.132.2&#8242;<span style="color: #383a42;">;</span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #a626a4;">const<span style="color: #0f1115;"> scene <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #a626a4;">new<span style="color: #0f1115;"> <span style="color: #b76b01;">THREE<span style="color: #383a42;">.<span style="color: #b76b01;">Scene<span style="color: #383a42;">();</span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">scene<span style="color: #383a42;">.<span style="color: #0f1115;">background <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #a626a4;">new<span style="color: #0f1115;"> <span style="color: #b76b01;">THREE<span style="color: #383a42;">.<span style="color: #b76b01;">Color<span style="color: #383a42;">(<span style="color: #b76b01;">0&#215;111122<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p><span style="color: #a626a4;">const<span style="color: #0f1115;"> camera <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #a626a4;">new<span style="color: #0f1115;"> <span style="color: #b76b01;">THREE<span style="color: #383a42;">.<span style="color: #b76b01;">PerspectiveCamera<span style="color: #383a42;">(<span style="color: #b76b01;">75<span style="color: #383a42;">,<span style="color: #0f1115;"> window<span style="color: #383a42;">.<span style="color: #0f1115;">innerWidth <span style="color: #4078f2;">/<span style="color: #0f1115;"> window<span style="color: #383a42;">.<span style="color: #0f1115;">innerHeight<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">0.1<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">1000<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">camera<span style="color: #383a42;">.<span style="color: #0f1115;">position<span style="color: #383a42;">.<span style="color: #4078f2;">set<span style="color: #383a42;">(<span style="color: #b76b01;">0<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">2<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">10<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">camera<span style="color: #383a42;">.<span style="color: #4078f2;">lookAt<span style="color: #383a42;">(<span style="color: #b76b01;">0<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">0<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">0<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #a626a4;">const<span style="color: #0f1115;"> renderer <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #a626a4;">new<span style="color: #0f1115;"> <span style="color: #b76b01;">THREE<span style="color: #383a42;">.<span style="color: #b76b01;">WebGLRenderer<span style="color: #383a42;">({<span style="color: #0f1115;"> <span style="color: #e45649;">antialias<span style="color: #4078f2;">:<span style="color: #0f1115;"> <span style="color: #b76b01;">true<span style="color: #0f1115;"> <span style="color: #383a42;">});</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">renderer<span style="color: #383a42;">.<span style="color: #4078f2;">setSize<span style="color: #383a42;">(<span style="color: #0f1115;">window<span style="color: #383a42;">.<span style="color: #0f1115;">innerWidth<span style="color: #383a42;">,<span style="color: #0f1115;"> window<span style="color: #383a42;">.<span style="color: #0f1115;">innerHeight<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">renderer<span style="color: #383a42;">.<span style="color: #0f1115;">shadowMap<span style="color: #383a42;">.<span style="color: #0f1115;">enabled <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #b76b01;">true<span style="color: #383a42;">;</span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">document<span style="color: #383a42;">.<span style="color: #0f1115;">body<span style="color: #383a42;">.<span style="color: #4078f2;">appendChild<span style="color: #383a42;">(<span style="color: #0f1115;">renderer<span style="color: #383a42;">.<span style="color: #0f1115;">domElement<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></p>
<p><span style="color: #a626a4;">const<span style="color: #0f1115;"> ambientLight <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #a626a4;">new<span style="color: #0f1115;"> <span style="color: #b76b01;">THREE<span style="color: #383a42;">.<span style="color: #b76b01;">AmbientLight<span style="color: #383a42;">(<span style="color: #b76b01;">0&#215;404060<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">scene<span style="color: #383a42;">.<span style="color: #4078f2;">add<span style="color: #383a42;">(<span style="color: #0f1115;">ambientLight<span style="color: #383a42;">);</span></span></span></span></span></span></p>
<p><span style="color: #a626a4;">const<span style="color: #0f1115;"> directionalLight <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #a626a4;">new<span style="color: #0f1115;"> <span style="color: #b76b01;">THREE<span style="color: #383a42;">.<span style="color: #b76b01;">DirectionalLight<span style="color: #383a42;">(<span style="color: #b76b01;">0xffffff<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">1<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">directionalLight<span style="color: #383a42;">.<span style="color: #0f1115;">position<span style="color: #383a42;">.<span style="color: #4078f2;">set<span style="color: #383a42;">(<span style="color: #b76b01;">5<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">10<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">7<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">directionalLight<span style="color: #383a42;">.<span style="color: #0f1115;">castShadow <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #b76b01;">true<span style="color: #383a42;">;</span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">scene<span style="color: #383a42;">.<span style="color: #4078f2;">add<span style="color: #383a42;">(<span style="color: #0f1115;">directionalLight<span style="color: #383a42;">);</span></span></span></span></span></span></p>
<p><span style="color: #a626a4;">const<span style="color: #0f1115;"> cubeGeometry <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #a626a4;">new<span style="color: #0f1115;"> <span style="color: #b76b01;">THREE<span style="color: #383a42;">.<span style="color: #b76b01;">BoxGeometry<span style="color: #383a42;">(<span style="color: #b76b01;">2<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">2<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">2<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #a626a4;">const<span style="color: #0f1115;"> cubeMaterial <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #a626a4;">new<span style="color: #0f1115;"> <span style="color: #b76b01;">THREE<span style="color: #383a42;">.<span style="color: #b76b01;">MeshStandardMaterial<span style="color: #383a42;">({</span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;"><span style="color: #e45649;">color<span style="color: #4078f2;">:<span style="color: #0f1115;"> <span style="color: #b76b01;">0x44aa88<span style="color: #383a42;">,</span></span></span></span></span></span><br />
<span style="color: #0f1115;"> <span style="color: #e45649;">emissive<span style="color: #4078f2;">:<span style="color: #0f1115;"> <span style="color: #b76b01;">0&#215;112233<span style="color: #383a42;">,</span></span></span></span></span></span><br />
<span style="color: #0f1115;"> <span style="color: #e45649;">roughness<span style="color: #4078f2;">:<span style="color: #0f1115;"> <span style="color: #b76b01;">0.4<span style="color: #383a42;">,</span></span></span></span></span></span><br />
<span style="color: #0f1115;"> <span style="color: #e45649;">metalness<span style="color: #4078f2;">:<span style="color: #0f1115;"> <span style="color: #b76b01;">0.1</span></span></span></span></span></p>
<p><span style="color: #383a42;">});</span><br />
<span style="color: #a626a4;">const<span style="color: #0f1115;"> cube <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #a626a4;">new<span style="color: #0f1115;"> <span style="color: #b76b01;">THREE<span style="color: #383a42;">.<span style="color: #b76b01;">Mesh<span style="color: #383a42;">(<span style="color: #0f1115;">cubeGeometry<span style="color: #383a42;">,<span style="color: #0f1115;"> cubeMaterial<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">cube<span style="color: #383a42;">.<span style="color: #0f1115;">position<span style="color: #383a42;">.<span style="color: #4078f2;">set<span style="color: #383a42;">(<span style="color: #4078f2;">-<span style="color: #b76b01;">3<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">1<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">0<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">cube<span style="color: #383a42;">.<span style="color: #0f1115;">castShadow <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #b76b01;">true<span style="color: #383a42;">;</span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">cube<span style="color: #383a42;">.<span style="color: #0f1115;">receiveShadow <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #b76b01;">true<span style="color: #383a42;">;</span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">scene<span style="color: #383a42;">.<span style="color: #4078f2;">add<span style="color: #383a42;">(<span style="color: #0f1115;">cube<span style="color: #383a42;">);</span></span></span></span></span></span><br />
<span style="color: #a626a4;">const<span style="color: #0f1115;"> pyramidGeometry <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #a626a4;">new<span style="color: #0f1115;"> <span style="color: #b76b01;">THREE<span style="color: #383a42;">.<span style="color: #b76b01;">ConeGeometry<span style="color: #383a42;">(<span style="color: #b76b01;">1.2<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">2.5<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">4<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #a626a4;">const<span style="color: #0f1115;"> pyramidMaterial <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #a626a4;">new<span style="color: #0f1115;"> <span style="color: #b76b01;">THREE<span style="color: #383a42;">.<span style="color: #b76b01;">MeshStandardMaterial<span style="color: #383a42;">({</span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;"><span style="color: #e45649;">color<span style="color: #4078f2;">:<span style="color: #0f1115;"> <span style="color: #b76b01;">0xaa44aa<span style="color: #383a42;">,</span></span></span></span></span></span><br />
<span style="color: #0f1115;"> <span style="color: #e45649;">emissive<span style="color: #4078f2;">:<span style="color: #0f1115;"> <span style="color: #b76b01;">0&#215;221122<span style="color: #383a42;">,</span></span></span></span></span></span><br />
<span style="color: #0f1115;"> <span style="color: #e45649;">roughness<span style="color: #4078f2;">:<span style="color: #0f1115;"> <span style="color: #b76b01;">0.3<span style="color: #383a42;">,</span></span></span></span></span></span><br />
<span style="color: #0f1115;"> <span style="color: #e45649;">metalness<span style="color: #4078f2;">:<span style="color: #0f1115;"> <span style="color: #b76b01;">0.2</span></span></span></span></span></p>
<p><span style="color: #383a42;">});</span><br />
<span style="color: #a626a4;">const<span style="color: #0f1115;"> pyramid <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #a626a4;">new<span style="color: #0f1115;"> <span style="color: #b76b01;">THREE<span style="color: #383a42;">.<span style="color: #b76b01;">Mesh<span style="color: #383a42;">(<span style="color: #0f1115;">pyramidGeometry<span style="color: #383a42;">,<span style="color: #0f1115;"> pyramidMaterial<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">pyramid<span style="color: #383a42;">.<span style="color: #0f1115;">position<span style="color: #383a42;">.<span style="color: #4078f2;">set<span style="color: #383a42;">(<span style="color: #b76b01;">0<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">1.25<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">0<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">pyramid<span style="color: #383a42;">.<span style="color: #0f1115;">castShadow <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #b76b01;">true<span style="color: #383a42;">;</span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">pyramid<span style="color: #383a42;">.<span style="color: #0f1115;">receiveShadow <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #b76b01;">true<span style="color: #383a42;">;</span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">scene<span style="color: #383a42;">.<span style="color: #4078f2;">add<span style="color: #383a42;">(<span style="color: #0f1115;">pyramid<span style="color: #383a42;">);</span></span></span></span></span></span><br />
<span style="color: #a626a4;">const<span style="color: #0f1115;"> sphereGeometry <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #a626a4;">new<span style="color: #0f1115;"> <span style="color: #b76b01;">THREE<span style="color: #383a42;">.<span style="color: #b76b01;">SphereGeometry<span style="color: #383a42;">(<span style="color: #b76b01;">1.3<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">32<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">32<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #a626a4;">const<span style="color: #0f1115;"> sphereMaterial <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #a626a4;">new<span style="color: #0f1115;"> <span style="color: #b76b01;">THREE<span style="color: #383a42;">.<span style="color: #b76b01;">MeshStandardMaterial<span style="color: #383a42;">({</span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;"><span style="color: #e45649;">color<span style="color: #4078f2;">:<span style="color: #0f1115;"> <span style="color: #b76b01;">0xaa4444<span style="color: #383a42;">,</span></span></span></span></span></span><br />
<span style="color: #0f1115;"> <span style="color: #e45649;">emissive<span style="color: #4078f2;">:<span style="color: #0f1115;"> <span style="color: #b76b01;">0&#215;221111<span style="color: #383a42;">,</span></span></span></span></span></span><br />
<span style="color: #0f1115;"> <span style="color: #e45649;">roughness<span style="color: #4078f2;">:<span style="color: #0f1115;"> <span style="color: #b76b01;">0.2<span style="color: #383a42;">,</span></span></span></span></span></span><br />
<span style="color: #0f1115;"> <span style="color: #e45649;">metalness<span style="color: #4078f2;">:<span style="color: #0f1115;"> <span style="color: #b76b01;">0.3</span></span></span></span></span></p>
<p><span style="color: #383a42;">});</span><br />
<span style="color: #a626a4;">const<span style="color: #0f1115;"> sphere <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #a626a4;">new<span style="color: #0f1115;"> <span style="color: #b76b01;">THREE<span style="color: #383a42;">.<span style="color: #b76b01;">Mesh<span style="color: #383a42;">(<span style="color: #0f1115;">sphereGeometry<span style="color: #383a42;">,<span style="color: #0f1115;"> sphereMaterial<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">sphere<span style="color: #383a42;">.<span style="color: #0f1115;">position<span style="color: #383a42;">.<span style="color: #4078f2;">set<span style="color: #383a42;">(<span style="color: #b76b01;">3<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">1.3<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">0<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">sphere<span style="color: #383a42;">.<span style="color: #0f1115;">castShadow <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #b76b01;">true<span style="color: #383a42;">;</span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">sphere<span style="color: #383a42;">.<span style="color: #0f1115;">receiveShadow <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #b76b01;">true<span style="color: #383a42;">;</span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">scene<span style="color: #383a42;">.<span style="color: #4078f2;">add<span style="color: #383a42;">(<span style="color: #0f1115;">sphere<span style="color: #383a42;">);</span></span></span></span></span></span><br />
<span style="color: #a626a4;">const<span style="color: #0f1115;"> planeGeometry <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #a626a4;">new<span style="color: #0f1115;"> <span style="color: #b76b01;">THREE<span style="color: #383a42;">.<span style="color: #b76b01;">PlaneGeometry<span style="color: #383a42;">(<span style="color: #b76b01;">15<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">10<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #a626a4;">const<span style="color: #0f1115;"> planeMaterial <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #a626a4;">new<span style="color: #0f1115;"> <span style="color: #b76b01;">THREE<span style="color: #383a42;">.<span style="color: #b76b01;">MeshStandardMaterial<span style="color: #383a42;">({</span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;"><span style="color: #e45649;">color<span style="color: #4078f2;">:<span style="color: #0f1115;"> <span style="color: #b76b01;">0&#215;335577<span style="color: #383a42;">,</span></span></span></span></span></span><br />
<span style="color: #0f1115;"> <span style="color: #e45649;">side<span style="color: #4078f2;">:<span style="color: #0f1115;"> <span style="color: #b76b01;">THREE<span style="color: #383a42;">.<span style="color: #0f1115;">DoubleSide<span style="color: #383a42;">,</span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;"> <span style="color: #e45649;">transparent<span style="color: #4078f2;">:<span style="color: #0f1115;"> <span style="color: #b76b01;">true<span style="color: #383a42;">,</span></span></span></span></span></span><br />
<span style="color: #0f1115;"> <span style="color: #e45649;">opacity<span style="color: #4078f2;">:<span style="color: #0f1115;"> <span style="color: #b76b01;">0.7</span></span></span></span></span></p>
<p><span style="color: #383a42;">});</span><br />
<span style="color: #a626a4;">const<span style="color: #0f1115;"> plane <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #a626a4;">new<span style="color: #0f1115;"> <span style="color: #b76b01;">THREE<span style="color: #383a42;">.<span style="color: #b76b01;">Mesh<span style="color: #383a42;">(<span style="color: #0f1115;">planeGeometry<span style="color: #383a42;">,<span style="color: #0f1115;"> planeMaterial<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">plane<span style="color: #383a42;">.<span style="color: #0f1115;">rotation<span style="color: #383a42;">.<span style="color: #0f1115;">x <span style="color: #4078f2;">=<span style="color: #0f1115;"> Math<span style="color: #383a42;">.<span style="color: #b76b01;">PI<span style="color: #0f1115;"> <span style="color: #4078f2;">/<span style="color: #0f1115;"> <span style="color: #b76b01;">2<span style="color: #383a42;">;</span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">plane<span style="color: #383a42;">.<span style="color: #0f1115;">position<span style="color: #383a42;">.<span style="color: #0f1115;">y <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #b76b01;">0<span style="color: #383a42;">;</span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">plane<span style="color: #383a42;">.<span style="color: #0f1115;">receiveShadow <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #b76b01;">true<span style="color: #383a42;">;</span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">scene<span style="color: #383a42;">.<span style="color: #4078f2;">add<span style="color: #383a42;">(<span style="color: #0f1115;">plane<span style="color: #383a42;">);</span></span></span></span></span></span><br />
<span style="color: #a626a4;">const<span style="color: #0f1115;"> axesHelper <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #a626a4;">new<span style="color: #0f1115;"> <span style="color: #b76b01;">THREE<span style="color: #383a42;">.<span style="color: #b76b01;">AxesHelper<span style="color: #383a42;">(<span style="color: #b76b01;">5<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;">scene<span style="color: #383a42;">.<span style="color: #4078f2;">add<span style="color: #383a42;">(<span style="color: #0f1115;">axesHelper<span style="color: #383a42;">);</span></span></span></span></span></span><br />
<span style="color: #a626a4;">function<span style="color: #0f1115;"> <span style="color: #4078f2;">animate<span style="color: #383a42;">()<span style="color: #0f1115;"> <span style="color: #383a42;">{</span></span></span></span></span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;"><span style="color: #4078f2;">requestAnimationFrame<span style="color: #383a42;">(<span style="color: #0f1115;">animate<span style="color: #383a42;">);</span></span></span></span></span><br />
<span style="color: #0f1115;"> cube<span style="color: #383a42;">.<span style="color: #0f1115;">rotation<span style="color: #383a42;">.<span style="color: #0f1115;">x <span style="color: #4078f2;">+=<span style="color: #0f1115;"> <span style="color: #b76b01;">0.01<span style="color: #383a42;">;</span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;"> cube<span style="color: #383a42;">.<span style="color: #0f1115;">rotation<span style="color: #383a42;">.<span style="color: #0f1115;">y <span style="color: #4078f2;">+=<span style="color: #0f1115;"> <span style="color: #b76b01;">0.01<span style="color: #383a42;">;</span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;"> pyramid<span style="color: #383a42;">.<span style="color: #0f1115;">rotation<span style="color: #383a42;">.<span style="color: #0f1115;">y <span style="color: #4078f2;">+=<span style="color: #0f1115;"> <span style="color: #b76b01;">0.02<span style="color: #383a42;">;</span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;"> sphere<span style="color: #383a42;">.<span style="color: #0f1115;">rotation<span style="color: #383a42;">.<span style="color: #0f1115;">x <span style="color: #4078f2;">+=<span style="color: #0f1115;"> <span style="color: #b76b01;">0.005<span style="color: #383a42;">;</span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;"> sphere<span style="color: #383a42;">.<span style="color: #0f1115;">rotation<span style="color: #383a42;">.<span style="color: #0f1115;">y <span style="color: #4078f2;">+=<span style="color: #0f1115;"> <span style="color: #b76b01;">0.01<span style="color: #383a42;">;</span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;"> renderer<span style="color: #383a42;">.<span style="color: #4078f2;">render<span style="color: #383a42;">(<span style="color: #0f1115;">scene<span style="color: #383a42;">,<span style="color: #0f1115;"> camera<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></p>
<p><span style="color: #383a42;">}</span><br />
<span style="color: #4078f2;">animate<span style="color: #383a42;">();</span></span><br />
<span style="color: #0f1115;">window<span style="color: #383a42;">.<span style="color: #4078f2;">addEventListener<span style="color: #383a42;">(<span style="color: #50a14f;">&#8216;resize&#8217;<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #383a42;">()<span style="color: #0f1115;"> <span style="color: #4078f2;">=&gt;<span style="color: #0f1115;"> <span style="color: #383a42;">{</span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;">camera<span style="color: #383a42;">.<span style="color: #0f1115;">aspect <span style="color: #4078f2;">=<span style="color: #0f1115;"> window<span style="color: #383a42;">.<span style="color: #0f1115;">innerWidth <span style="color: #4078f2;">/<span style="color: #0f1115;"> window<span style="color: #383a42;">.<span style="color: #0f1115;">innerHeight<span style="color: #383a42;">;</span></span></span></span></span></span></span></span></span></span></span></span><br />
<span style="color: #0f1115;"> camera<span style="color: #383a42;">.<span style="color: #4078f2;">updateProjectionMatrix<span style="color: #383a42;">();</span></span></span></span><br />
<span style="color: #0f1115;"> renderer<span style="color: #383a42;">.<span style="color: #4078f2;">setSize<span style="color: #383a42;">(<span style="color: #0f1115;">window<span style="color: #383a42;">.<span style="color: #0f1115;">innerWidth<span style="color: #383a42;">,<span style="color: #0f1115;"> window<span style="color: #383a42;">.<span style="color: #0f1115;">innerHeight<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span></p>
<p><span style="color: #383a42;">});</span></p>
<p style="background: white;"><span style="color: #0f1115;"><strong>Заключение<br />
</strong></span></p>
<p style="background: white;"><span style="color: #0f1115;">WebGL и библиотека Three.js предоставляют мощные инструменты для создания интерактивных трёхмерных моделей непосредственно в браузере. Реализованный алгоритм позволяет наглядно демонстрировать стереометрические фигуры с возможностью их вращения и масштабирования. Такие решения особенно востребованы в образовательном процессе для визуализации геометрических понятий и пространственных отношений. Код легко адаптируется под различные задачи и может быть расширен для создания сложных сцен с множеством объектов. Технология остаётся актуальной благодаря кроссплатформенности и отсутствию необходимости в установке дополнительного ПО.</span></p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2026/02/104255/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
