Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
| ==Описание== | | ==Описание== |
− | Алгоритм построения дерева Пифагора с выбором углов и глубиной прорисовки.
| + | {{#widget:Iframe |url=http://tm.spbstu.ru/htmlets/LapshinAA/Pyth.html |width=800|height=1300 |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>
| |