<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://digida.mgpu.ru/index.php?action=history&amp;feed=atom&amp;title=3D_Wireframes</id>
	<title>3D Wireframes - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://digida.mgpu.ru/index.php?action=history&amp;feed=atom&amp;title=3D_Wireframes"/>
	<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=3D_Wireframes&amp;action=history"/>
	<updated>2026-06-12T20:21:58Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=3D_Wireframes&amp;diff=2773&amp;oldid=prev</id>
		<title>Patarakin в 06:21, 6 сентября 2022</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=3D_Wireframes&amp;diff=2773&amp;oldid=prev"/>
		<updated>2022-09-06T06:21:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 09:21, 6 сентября 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Scripting Tutorials&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Description=Как создать 3D каркас&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Field_of_knowledge=Археология, Информатика, Математика&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Возрастная категория=15&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Environment=Scratch&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This article describes the creation of a &amp;#039;&amp;#039;&amp;#039;3D wireframe model&amp;#039;&amp;#039;&amp;#039;. It is advisable to review [[Trigonometry]] before reading this article. An example of this, with a complex model, can be found [https://scratch.mit.edu/projects/Hardmath123/2433673 here].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This article describes the creation of a &amp;#039;&amp;#039;&amp;#039;3D wireframe model&amp;#039;&amp;#039;&amp;#039;. It is advisable to review [[Trigonometry]] before reading this article. An example of this, with a complex model, can be found [https://scratch.mit.edu/projects/Hardmath123/2433673 here].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l50&quot;&gt;Строка 50:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 56:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Scripting Tutorials]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Scripting Tutorials]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Graphics]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key digida:diff:1.41:old-1644:rev-2773:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Patarakin</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=3D_Wireframes&amp;diff=1644&amp;oldid=prev</id>
		<title>Patarakin: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=3D_Wireframes&amp;diff=1644&amp;oldid=prev"/>
		<updated>2022-07-21T08:33:13Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 11:33, 21 июля 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key digida:diff:1.41:old-1643:rev-1644 --&gt;
&lt;/table&gt;</summary>
		<author><name>Patarakin</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=3D_Wireframes&amp;diff=1643&amp;oldid=prev</id>
		<title>scratch&gt;CrazyBoy826: Cleaned up and updated as part of the Full Wiki Cleanup) (canned edit summary</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=3D_Wireframes&amp;diff=1643&amp;oldid=prev"/>
		<updated>2020-01-11T02:13:17Z</updated>

		<summary type="html">&lt;p&gt;Cleaned up and updated as part of the &lt;a href=&quot;/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:CrazyBoy826/FWC&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Участник:CrazyBoy826/FWC (страница не существует)&quot;&gt;Full Wiki Cleanup&lt;/a&gt;) (&lt;a href=&quot;/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Kenny2scratch/Project_Guides/Canned_Edit_Summaries&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Участник:Kenny2scratch/Project Guides/Canned Edit Summaries (страница не существует)&quot;&gt;canned edit summary&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This article describes the creation of a &amp;#039;&amp;#039;&amp;#039;3D wireframe model&amp;#039;&amp;#039;&amp;#039;. It is advisable to review [[Trigonometry]] before reading this article. An example of this, with a complex model, can be found [https://scratch.mit.edu/projects/Hardmath123/2433673 here].&lt;br /&gt;
&lt;br /&gt;
== Theory ==&lt;br /&gt;
This simulation depends on the simple principal of projection of points. When you have some points in a space, joined by lines, their projection forms a 3D wireframe image. Moreover, the projection can simply be considered the X and Y positions of the points, since projecting a point is equivalent to equalizing the Z coordinate. In other words, if a point has coordinates (X,Y,Z) we can project its image as (X,Y) on the screen.&lt;br /&gt;
&lt;br /&gt;
To represent points, we will use three [[list]]s, representing X, Y, and Z positions, respectively, so the coordinates of point N are (X[N], Y[N], Z[N]). The order of points describes the path of the &amp;quot;wire&amp;quot;. To draw the wireframe, we move [[sprite]] through all the projected positions with the [[pen]] down, such that the trail will be the projection of the model.&lt;br /&gt;
&lt;br /&gt;
== Implementation of Static Models ==&lt;br /&gt;
To implement a static model, we use this script:&lt;br /&gt;
&amp;lt;scratchblocks&amp;gt;&lt;br /&gt;
when gf clicked&lt;br /&gt;
forever&lt;br /&gt;
	erase all // clear screen&lt;br /&gt;
	pen up // stop drawing&lt;br /&gt;
	set [n v] to (0) // iterator&lt;br /&gt;
	repeat (length of [X v]) // for all coordinates&lt;br /&gt;
	change [n v] by (1) // iterate&lt;br /&gt;
		go to x: (item (n) of [X v]) y: (item (n) of [Y v]) // trace projection&lt;br /&gt;
		pen down // put the pen down&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/scratchblocks&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Generating Models ==&lt;br /&gt;
Generating models is really hard by hand-editing the lists. A much easier way to generate these lists is via visual editing with programs like Blender. [[Python]] scripts can be created to reference Blender models and write them to text files, which can then be [[Importing|imported]] into Scratch. Alternatively, simple Scratch programs to generate random test models are also easy to build. For example, we can make a simple program to follow mouse trails and constantly add these to the coordinate lists with a constant z axis.&lt;br /&gt;
&lt;br /&gt;
It may also be possible to create a [[project]] that can convert an exported modeler Wavefront file into project-readable format.&lt;br /&gt;
&lt;br /&gt;
== Implementing Rotation ==&lt;br /&gt;
Implementing rotation is much harder. We need to update the entire list of coordinates with new, displaced positions in every cycle. This is time-consuming, so the end result may run extremely slowly. A good way to avoid it is by using [[Turbo Mode]], or, even more ambitiously, by making the script [[Single Frame]].&lt;br /&gt;
&lt;br /&gt;
Firstly, we can without loss of generality implement rotation in one axis, and then modify it for the others. This tutorial implements rotation in the up-down (Y) axis, implementation of the rest is left to the reader. &amp;lt;!-- Are we allowed to say that?! --&amp;gt; Next, we can implement rotation for just one point, and by rotating all points around a fixed axis (Y axis through 0,0,0) we can rotate the entire model. So, the problem can be reduced to rotating a point at X,Y &amp;#039;&amp;#039;n&amp;#039;&amp;#039; degrees about 0,0.&lt;br /&gt;
&lt;br /&gt;
{{note|Here, remember &amp;quot;Y&amp;quot; is actually the Z position, since when we look at the model from the top the axes are inverted. From now on, X refers to the X position, Y to the Z, and Z to the original Y position.}}&lt;br /&gt;
&lt;br /&gt;
The rotation is implemented via trigonometry. We note the angle between the X axis and the line from the point to the origin, and add &amp;#039;&amp;#039;n&amp;#039;&amp;#039;. Finally, we use that and the knowledge of the distance between the point and origin (remember, this remains constant) to plot the new location. To find the original angle, we use the arctan function. Letting that angle be a,&lt;br /&gt;
{{equation|1=a = atan(Y/Z)}}&lt;br /&gt;
So, the total angle rotated is&lt;br /&gt;
{{equation|a + n}}.&lt;br /&gt;
Finally, the new X and Y positions can be found with the formulae&lt;br /&gt;
{{equation|1=X = cos(a+n)*d}}&lt;br /&gt;
and&lt;br /&gt;
{{equation|1=Y = sin(a+n)*d}}&lt;br /&gt;
where d is the distance between the point one origin. We find d by the Pythagoras Theorem:&lt;br /&gt;
{{equation|1=d = √(X*X+Y*Y)}}.&lt;br /&gt;
&lt;br /&gt;
Having found the new X and Y, we can now replace the coordinates of the point with the rotated coordinates.&lt;br /&gt;
&lt;br /&gt;
{{note|This explanation is extremely rough. In reality, we need to consider negative cases since trig functions of integers vary. These are all handled with special cases.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting Tutorials]]&lt;br /&gt;
[[Category:Graphics]]&lt;/div&gt;</summary>
		<author><name>scratch&gt;CrazyBoy826</name></author>
	</entry>
</feed>