<?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/author882234/feed" rel="self" type="application/rss+xml" />
	<link>https://web.snauka.ru</link>
	<description></description>
	<lastBuildDate>Sat, 18 Apr 2026 09:41:14 +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>Разработка мобильного приложения на Android для расчёта импульса тела по массе и скорости</title>
		<link>https://web.snauka.ru/issues/2026/02/104256</link>
		<comments>https://web.snauka.ru/issues/2026/02/104256#comments</comments>
		<pubDate>Tue, 24 Feb 2026 14:48:15 +0000</pubDate>
		<dc:creator>Исмагилов Артур Рустамович</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[импульс тела]]></category>
		<category><![CDATA[клиентское приложение]]></category>
		<category><![CDATA[мобильная разработка]]></category>
		<category><![CDATA[пользовательский интерфейс]]></category>
		<category><![CDATA[разработка мобильного приложения]]></category>
		<category><![CDATA[физические расчёты]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/issues/2026/02/104256</guid>
		<description><![CDATA[В современном мире мобильные устройства стали неотъемлемой частью образовательного процесса и инженерной деятельности. Студенты физико-математических специальностей, преподаватели и специалисты часто нуждаются в быстрых расчётах без использования громоздких компьютеров или специализированного ПО. Разработка клиентских Android-приложений для решения типовых физических задач, таких как вычисление импульса тела, позволяет автоматизировать рутинные вычисления и сделать процесс обучения более интерактивным. Импульс [...]]]></description>
			<content:encoded><![CDATA[<p>В современном мире мобильные устройства стали неотъемлемой частью образовательного процесса и инженерной деятельности. Студенты физико-математических специальностей, преподаватели и специалисты часто нуждаются в быстрых расчётах без использования громоздких компьютеров или специализированного ПО. Разработка клиентских Android-приложений для решения типовых физических задач, таких как вычисление импульса тела, позволяет автоматизировать рутинные вычисления и сделать процесс обучения более интерактивным. Импульс тела — одна из фундаментальных величин в механике, рассчитываемая как произведение массы тела на его скорость. Создание простого и понятного интерфейса для ввода исходных данных и мгновенного получения результата является актуальной задачей, демонстрирующей основы мобильной разработки и взаимодействия с пользователем.</p>
<p>Алгоритм решения задачи по созданию клиентского Android-приложения для расчёта импульса тела по массе и скорости включает следующие последовательные шаги разработки на языке Java:</p>
<ul>
<li>создаём новый проект в среде разработки Android Studio с пустой активностью;</li>
<li>разрабатываем пользовательский интерфейс (разметку) с полями ввода для массы и скорости, кнопкой расчёта и текстовым полем для вывода результата;</li>
<li>инициализируем компоненты интерфейса в коде активности (Activity) с помощью метода findViewById;</li>
<li>устанавливаем обработчик нажатия на кнопку с использованием интерфейса OnClickListener;</li>
<li>получаем введённые пользователем значения из текстовых полей и преобразуем их в числовой формат;</li>
<li>выполняем проверку корректности введённых данных (на наличие пустых полей и отрицательных значений);</li>
<li>вычисляем импульс тела по формуле p = m * v, где m — масса в килограммах, v — скорость в метрах в секунду;</li>
<li>выводим полученный результат в элемент интерфейса, предназначенный для вывода информации.</li>
</ul>
<p>Данный алгоритм универсален и может быть адаптирован для решения широкого круга подобных вычислительных задач, от кинематики до электричества. Основное преимущество реализации на Android заключается в возможности запуска приложения на любом современном смартфоне без необходимости установки дополнительного программного обеспечения.</p>
<p>Ниже приведён фрагмент кода, реализующий логику расчёта импульса тела (файл MainActivity.java):</p>
<p>java</p>
<p><span style="color: #a626a4;">package<span style="color: #0f1115;"> com<span style="color: #383a42;">.<span style="color: #0f1115;">example<span style="color: #383a42;">.<span style="color: #0f1115;">momentumcalculator<span style="color: #383a42;">;</span></span></span></span></span></span></span></p>
<p><span style="color: #a626a4;">import<span style="color: #0f1115;"> android<span style="color: #383a42;">.<span style="color: #0f1115;">os<span style="color: #383a42;">.<span style="color: #b76b01;">Bundle<span style="color: #383a42;">;</span></span></span></span></span></span></span></p>
<p><span style="color: #a626a4;">import<span style="color: #0f1115;"> android<span style="color: #383a42;">.<span style="color: #0f1115;">view<span style="color: #383a42;">.<span style="color: #b76b01;">View<span style="color: #383a42;">;</span></span></span></span></span></span></span></p>
<p><span style="color: #a626a4;">import<span style="color: #0f1115;"> android<span style="color: #383a42;">.<span style="color: #0f1115;">widget<span style="color: #383a42;">.<span style="color: #b76b01;">Button<span style="color: #383a42;">;</span></span></span></span></span></span></span></p>
<p><span style="color: #a626a4;">import<span style="color: #0f1115;"> android<span style="color: #383a42;">.<span style="color: #0f1115;">widget<span style="color: #383a42;">.<span style="color: #b76b01;">EditText<span style="color: #383a42;">;</span></span></span></span></span></span></span></p>
<p><span style="color: #a626a4;">import<span style="color: #0f1115;"> android<span style="color: #383a42;">.<span style="color: #0f1115;">widget<span style="color: #383a42;">.<span style="color: #b76b01;">TextView<span style="color: #383a42;">;</span></span></span></span></span></span></span></p>
<p><span style="color: #a626a4;">import<span style="color: #0f1115;"> android<span style="color: #383a42;">.<span style="color: #0f1115;">widget<span style="color: #383a42;">.<span style="color: #b76b01;">Toast<span style="color: #383a42;">;</span></span></span></span></span></span></span></p>
<p><span style="color: #a626a4;">import<span style="color: #0f1115;"> androidx<span style="color: #383a42;">.<span style="color: #0f1115;">appcompat<span style="color: #383a42;">.<span style="color: #0f1115;">app<span style="color: #383a42;">.<span style="color: #b76b01;">AppCompatActivity<span style="color: #383a42;">;</span></span></span></span></span></span></span></span></span></p>
<p><span style="color: #a626a4;">public<span style="color: #0f1115;"> <span style="color: #a626a4;">class<span style="color: #0f1115;"> <span style="color: #b76b01;">MainActivity<span style="color: #0f1115;"> <span style="color: #a626a4;">extends<span style="color: #0f1115;"> <span style="color: #b76b01;">AppCompatActivity<span style="color: #0f1115;"> <span style="color: #383a42;">{</span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">private<span style="color: #0f1115;"> <span style="color: #b76b01;">EditText<span style="color: #0f1115;"> editTextMass<span style="color: #383a42;">,<span style="color: #0f1115;"> editTextVelocity<span style="color: #383a42;">;</span></span></span></span></span></span></span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">private<span style="color: #0f1115;"> <span style="color: #b76b01;">TextView<span style="color: #0f1115;"> textViewResult<span style="color: #383a42;">;</span></span></span></span></span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">private<span style="color: #0f1115;"> <span style="color: #b76b01;">Button<span style="color: #0f1115;"> buttonCalculate<span style="color: #383a42;">;</span></span></span></span></span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;"> <span style="color: #383a42;">@Override</span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">protected<span style="color: #0f1115;"> <span style="color: #a626a4;">void<span style="color: #0f1115;"> <span style="color: #4078f2;">onCreate<span style="color: #383a42;">(<span style="color: #b76b01;">Bundle<span style="color: #0f1115;"> savedInstanceState<span style="color: #383a42;">)<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: 60px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">super<span style="color: #383a42;">.<span style="color: #4078f2;">onCreate<span style="color: #383a42;">(<span style="color: #0f1115;">savedInstanceState<span style="color: #383a42;">);</span></span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> <span style="color: #4078f2;">setContentView<span style="color: #383a42;">(<span style="color: #b76b01;">R<span style="color: #383a42;">.<span style="color: #0f1115;">layout<span style="color: #383a42;">.<span style="color: #0f1115;">activity_main<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> editTextMass <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #4078f2;">findViewById<span style="color: #383a42;">(<span style="color: #b76b01;">R<span style="color: #383a42;">.<span style="color: #0f1115;">id<span style="color: #383a42;">.<span style="color: #0f1115;">editTextMass<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> editTextVelocity <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #4078f2;">findViewById<span style="color: #383a42;">(<span style="color: #b76b01;">R<span style="color: #383a42;">.<span style="color: #0f1115;">id<span style="color: #383a42;">.<span style="color: #0f1115;">editTextVelocity<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> textViewResult <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #4078f2;">findViewById<span style="color: #383a42;">(<span style="color: #b76b01;">R<span style="color: #383a42;">.<span style="color: #0f1115;">id<span style="color: #383a42;">.<span style="color: #0f1115;">textViewResult<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> buttonCalculate <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #4078f2;">findViewById<span style="color: #383a42;">(<span style="color: #b76b01;">R<span style="color: #383a42;">.<span style="color: #0f1115;">id<span style="color: #383a42;">.<span style="color: #0f1115;">buttonCalculate<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> buttonCalculate<span style="color: #383a42;">.<span style="color: #4078f2;">setOnClickListener<span style="color: #383a42;">(<span style="color: #a626a4;">new<span style="color: #0f1115;"> <span style="color: #b76b01;">View<span style="color: #383a42;">.<span style="color: #b76b01;">OnClickListener<span style="color: #383a42;">()<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: 90px;"><span style="color: #0f1115;"> <span style="color: #383a42;">@Override</span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">public<span style="color: #0f1115;"> <span style="color: #a626a4;">void<span style="color: #0f1115;"> <span style="color: #4078f2;">onClick<span style="color: #383a42;">(<span style="color: #b76b01;">View<span style="color: #0f1115;"> v<span style="color: #383a42;">)<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: 120px;"><span style="color: #0f1115;"> <span style="color: #4078f2;">calculateMomentum<span style="color: #383a42;">();</span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #383a42;">}</span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> <span style="color: #383a42;">});</span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;"> <span style="color: #383a42;">}</span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">private<span style="color: #0f1115;"> <span style="color: #a626a4;">void<span style="color: #0f1115;"> <span style="color: #4078f2;">calculateMomentum<span style="color: #383a42;">()<span style="color: #0f1115;"> <span style="color: #383a42;">{</span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> <span style="color: #b76b01;">String<span style="color: #0f1115;"> massStr <span style="color: #4078f2;">=<span style="color: #0f1115;"> editTextMass<span style="color: #383a42;">.<span style="color: #4078f2;">getText<span style="color: #383a42;">().<span style="color: #4078f2;">toString<span style="color: #383a42;">().<span style="color: #4078f2;">trim<span style="color: #383a42;">();</span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> <span style="color: #b76b01;">String<span style="color: #0f1115;"> velocityStr <span style="color: #4078f2;">=<span style="color: #0f1115;"> editTextVelocity<span style="color: #383a42;">.<span style="color: #4078f2;">getText<span style="color: #383a42;">().<span style="color: #4078f2;">toString<span style="color: #383a42;">().<span style="color: #4078f2;">trim<span style="color: #383a42;">();</span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">if<span style="color: #0f1115;"> <span style="color: #383a42;">(<span style="color: #0f1115;">massStr<span style="color: #383a42;">.<span style="color: #4078f2;">isEmpty<span style="color: #383a42;">()<span style="color: #0f1115;"> <span style="color: #4078f2;">||<span style="color: #0f1115;"> velocityStr<span style="color: #383a42;">.<span style="color: #4078f2;">isEmpty<span style="color: #383a42;">())<span style="color: #0f1115;"> <span style="color: #383a42;">{</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #b76b01;">Toast<span style="color: #383a42;">.<span style="color: #4078f2;">makeText<span style="color: #383a42;">(<span style="color: #a626a4;">this<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #50a14f;">&#8220;Заполните все поля&#8221;<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">Toast<span style="color: #383a42;">.<span style="color: #b76b01;">LENGTH_SHORT<span style="color: #383a42;">).<span style="color: #4078f2;">show<span style="color: #383a42;">();</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">return<span style="color: #383a42;">;</span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> <span style="color: #383a42;">}</span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">try<span style="color: #0f1115;"> <span style="color: #383a42;">{</span></span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">double<span style="color: #0f1115;"> mass <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #b76b01;">Double<span style="color: #383a42;">.<span style="color: #4078f2;">parseDouble<span style="color: #383a42;">(<span style="color: #0f1115;">massStr<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">double<span style="color: #0f1115;"> velocity <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #b76b01;">Double<span style="color: #383a42;">.<span style="color: #4078f2;">parseDouble<span style="color: #383a42;">(<span style="color: #0f1115;">velocityStr<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">if<span style="color: #0f1115;"> <span style="color: #383a42;">(<span style="color: #0f1115;">mass <span style="color: #4078f2;">&lt;<span style="color: #0f1115;"> <span style="color: #b76b01;">0<span style="color: #0f1115;"> <span style="color: #4078f2;">||<span style="color: #0f1115;"> velocity <span style="color: #4078f2;">&lt;<span style="color: #0f1115;"> <span style="color: #b76b01;">0<span style="color: #383a42;">)<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></p>
<p style="padding-left: 120px;"><span style="color: #0f1115;"> <span style="color: #b76b01;">Toast<span style="color: #383a42;">.<span style="color: #4078f2;">makeText<span style="color: #383a42;">(<span style="color: #a626a4;">this<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #50a14f;">&#8220;Масса и скорость не могут быть отрицательными&#8221;<span style="color: #383a42;">, </span></span></span></span></span></span></span></span></span></span><span style="color: #b76b01;">Toast</span><span style="color: #383a42;">.<span style="color: #b76b01;">LENGTH_SHORT<span style="color: #383a42;">).<span style="color: #4078f2;">show<span style="color: #383a42;">();</span></span></span></span></span></p>
<p style="padding-left: 120px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">return<span style="color: #383a42;">;</span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #383a42;">}</span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">double<span style="color: #0f1115;"> momentum <span style="color: #4078f2;">=<span style="color: #0f1115;"> mass <span style="color: #4078f2;">*<span style="color: #0f1115;"> velocity<span style="color: #383a42;">;</span></span></span></span></span></span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #b76b01;">String<span style="color: #0f1115;"> resultText <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #b76b01;">String<span style="color: #383a42;">.<span style="color: #4078f2;">format<span style="color: #383a42;">(<span style="color: #50a14f;">&#8220;Импульс тела: %.2f кг·м/с&#8221;<span style="color: #383a42;">,<span style="color: #0f1115;"> momentum<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> textViewResult<span style="color: #383a42;">.<span style="color: #4078f2;">setText<span style="color: #383a42;">(<span style="color: #0f1115;">resultText<span style="color: #383a42;">);</span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> <span style="color: #383a42;">}<span style="color: #0f1115;"> <span style="color: #a626a4;">catch<span style="color: #0f1115;"> <span style="color: #383a42;">(<span style="color: #b76b01;">NumberFormatException<span style="color: #0f1115;"> e<span style="color: #383a42;">)<span style="color: #0f1115;"> <span style="color: #383a42;">{</span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #b76b01;">Toast<span style="color: #383a42;">.<span style="color: #4078f2;">makeText<span style="color: #383a42;">(<span style="color: #a626a4;">this<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #50a14f;">&#8220;Некорректный формат числа&#8221;<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">Toast<span style="color: #383a42;">.<span style="color: #b76b01;">LENGTH_SHORT<span style="color: #383a42;">).<span style="color: #4078f2;">show<span style="color: #383a42;">();</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> <span style="color: #383a42;">}</span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;"> <span style="color: #383a42;">}</span></span></p>
<p><span style="color: #383a42;">}</span></p>
<p><strong>Заключение</strong></p>
<p>Разработка клиентского Android-приложения для расчёта импульса тела демонстрирует эффективность использования мобильных технологий в образовательных и инженерных целях. Предложенный алгоритм позволяет создать полнофункциональное приложение с интуитивно понятным интерфейсом и корректной обработкой пользовательского ввода. Простота реализации на языке Java с использованием стандартных библиотек Android SDK делает подобные проекты доступными для студентов, начинающих изучение мобильной разработки. Приложение может быть легко расширено для расчёта других физических величин, что повышает его дидактическую ценность. Таким образом, создание специализированных мобильных калькуляторов остаётся востребованным направлением в области образовательных технологий.</p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2026/02/104256/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>
