Редактирование: Дерево Пифагора

Перейти к: навигация, поиск

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
 
==Описание==
 
==Описание==
Алгоритм построения дерева Пифагора с выбором углов и глубиной прорисовки.
+
{{#widget:Iframe |url=http://tm.spbstu.ru/htmlets/LapshinAA/Pyth.html |width=1000|height=1500 |border=0 }}
 
 
Иполнители:
 
 
 
[[Лапшин_Андрей|Лапшин Андрей]]
 
 
 
[[Эссам Нганг Жоан Флориан Кенни]]
 
 
 
Группа 13632/1 Кафедра Теоретической механики
 
 
 
Файл:[[http://tm.spbstu.ru/htmlets/LapshinAA/Kursovaya_rabota_Lapshin_Essam.docx]]
 
==Особенности==
 
В классическом дереве Пифагора угол равен 45 градусам, можно построить обобщённое дерево Пифагора при использовании других углов.
 
==Визуализация==
 
{{#widget:Iframe |url=http://tm.spbstu.ru/htmlets/LapshinAA/Pyth.html |width=1000|height=800 |border=0 }}
 
==Код программы==
 
<div class="mw-collapsible mw-collapsed">
 
'''Код программы на языке JavaScript:''' <div class="mw-collapsible-content">
 
<syntaxhighlight lang="javascript" line start="1" enclose="div">
 
}
 
window.addEventListener("load", program_code, false);
 
function program_code() {
 
 
var ctx = canvas_example.getContext('2d');
 
var w = canvas_example.width;
 
var h = canvas_example.height;
 
  function draw_square(x, y, r,R){
 
ctx.fillStyle= 'rgb('+Math.floor(255-R)+', 165, 150)';
 
ctx.fillRect(x,y,r,r);
 
}
 
function Pyth_fract(a,n){
 
  var n_max= input1.value;
 
    var alpha= Math.PI*(input2.value)/180;
 
if (n_max < 1) console.log("n must be >= 1")
 
if (n > n_max) return;
 
var b = Math.round( a*Math.cos(alpha) );
 
var c = Math.round( a*Math.sin(alpha) );
 
ctx.translate ( -Math.round((b/2+c/2)*Math.sin(alpha)),Math.round (-a/2 - (b/2+c/2)*Math.cos(alpha) ));
 
ctx.rotate( -alpha);
 
draw_square(-b/2, -b/2, b, c);
 
  Pyth_fract(b,n+1 ) ;
 
  ctx.rotate(alpha);
 
  ctx.translate ( Math.round((b/2 + c/2)*Math.sin(alpha)),-Math.round (-a/2 - (b/2+c/2)*Math.cos(alpha) ));
 
  ctx.translate ( +Math.round((c/2 + b/2)*Math.cos(alpha)), Math.round (-a/2 -(c/2+b/2)*Math.sin(alpha) ));
 
  ctx.rotate(Math.PI/2-alpha) ;
 
    draw_square(-c/2, -c/2, c, c);
 
    Pyth_fract(c, n+1 ) ;
 
ctx.rotate(-Math.PI/2+alpha);
 
ctx.translate ( -Math.round((c/2 + b/2)*Math.cos(alpha)), -Math.round (-a/2 -(c/2+b/2)*Math.sin(alpha) ));
 
}
 
function DrawP(){
 
draw_square(w/2, h/2, 50, 50);
 
  ctx.translate(w/2 + 25, h/2 +25);
 
Pyth_fract(50, 1);
 
}
 
draw.onclick=function(){
 
ctx.clearRect(0,0,w,h);
 
DrawP()
 
ctx.translate(-w/2 - 25, -h/2-25 );
 
}
 
}
 
 
 
</syntaxhighlight>
 
 
 
</div>
 
Вам запрещено изменять защиту статьи. Edit Создать редактором

Обратите внимание, что все добавления и изменения текста статьи рассматриваются как выпущенные на условиях лицензии Public Domain (см. Department of Theoretical and Applied Mechanics:Авторские права). Если вы не хотите, чтобы ваши тексты свободно распространялись и редактировались любым желающим, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого.
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ МАТЕРИАЛЫ, ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Отменить | Справка по редактированию  (в новом окне)