Редактирование: КП: Параметрические колебания

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

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

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 44: Строка 44:
  
 
== Визуализация задачи==
 
== Визуализация задачи==
 +
Примечание: менять частоту колебаний лучше в центральном положении.
  
''Примечание: менять частоту необходимо во время прохождения нижнего положения.''
+
{{#widget:Iframe |url=http://tm.spbstu.ru/htmlets/Filimonov/dl_example_Swing.html |width=830 |height=630 |border=0 }}
 +
<div class="mw-collapsible mw-collapsed">
 +
'''Текст программы на языке JavaScript:''' <div class="mw-collapsible-content">
 +
Файл '''"dl_example_Swing.js"'''
 +
<syntaxhighlight lang="javascript" line start="1" enclose="div">
 +
function main_dl_example_Swing() {
 +
 +
number_input.oninput = function() {
 +
        slider_input.value = number_input.value;
 +
        mult2();
 +
    };
 +
    slider_input.oninput = function() {
 +
        number_input.value = slider_input.value;
 +
        mult2();
 +
    };
 +
 +
    function mult2() {
 +
        span_result.innerHTML =  Math.PI / number_input.value;
 +
    }
 +
 +
    var ctx = canvas_Swing.getContext("2d");
 +
    var width = canvas_Swing.width;
 +
    var height = canvas_Swing.height;
 +
 +
var string_s_x = 400;
 +
var string_s_y = 10;
 +
var string_e_x = 400;
 +
var string_e_y = 300;
 +
var phi =  Math.PI / 2;
 +
//var n = 6;
 +
var phi_max = Math.PI / number_input.value;
 +
var h = 20;
 +
var m = 10;
 +
var string_length = 290;
 +
var direction = 1;
 +
var speed = 1;
 +
 +
var board_s_x = string_s_x - 50;
 +
var board_s_y = string_e_y;
 +
var board_e_x = string_e_x + 50;
 +
var board_e_y = string_e_y;
 +
 +
var head_x = string_e_x + 15;
 +
var head_y = string_e_y - 50;
 +
var head_r = 10;
 +
 +
var eye_left_x = head_x - 2;
 +
var eye_left_y = head_y - 2;
 +
var eye_right_x = head_x + 2;
 +
var eye_right_y = head_y - 2;
 +
 +
var body_s_x = head_x + 4;
 +
var body_s_y = head_y + head_r;
 +
var body_e_x = body_s_x + 12;
 +
var body_e_y = body_s_y + 25;
 +
 +
var legs_s_x = body_e_x;
 +
var legs_s_y = body_e_y;
 +
var legs_e_x = body_e_x - 20;
 +
var legs_e_y = board_e_y + 10;
 +
 +
var arms_s_x = body_e_x - 5;
 +
var arms_s_y = body_e_y - 8;
 +
var arms_e_x = body_e_x - 25;
 +
var arms_e_y = body_e_y - 15;
 +
 +
    function step() {                         
 +
        tick();
 +
        draw();
 +
    }
 +
 +
    function tick() { 
 +
phi_max = Math.PI / number_input.value;
 +
 +
        string_e_x = string_s_x  + string_length * Math.cos(phi);
 +
string_e_y = string_s_y  + string_length * Math.sin(phi);
 +
 +
speed = 0.017 * Math.sqrt((Math.cos(phi - Math.PI / 2) - Math.cos(phi_max + 0.01)));
 +
phi = phi + direction * speed;
 +
 +
if (phi >  Math.PI / 2 + phi_max) direction = - direction;
 +
if (phi <  Math.PI / 2 - phi_max) direction = - direction;
 +
 +
board_s_x = string_s_x - 50;
 +
board_s_y = string_e_y;
 +
board_e_x = string_e_x + 50;
 +
board_e_y = string_e_y;
 +
 +
head_x = string_e_x + 15;
 +
head_y = string_e_y - 50;
 +
head_r = 10;
 +
 +
eye_left_x = head_x - 2;
 +
eye_left_y = head_y - 2;
 +
eye_right_x = head_x + 2;
 +
eye_right_y = head_y - 2;
 +
 +
body_s_x = head_x + 4;
 +
body_s_y = head_y + head_r;
 +
body_e_x = body_s_x + 12;
 +
body_e_y = body_s_y + 25;
 +
 +
legs_s_x = body_e_x;
 +
legs_s_y = body_e_y;
 +
legs_e_x = body_e_x - 20;
 +
legs_e_y = board_e_y + 10;
 +
 +
arms_s_x = body_e_x - 5;
 +
arms_s_y = body_e_y - 8;
 +
arms_e_x = body_e_x - 25;
 +
arms_e_y = body_e_y - 15;
 +
 +
    }
 +
 +
    function draw() {                         
 +
        ctx.clearRect(0, 0, width, height);   
 +
        ctx.beginPath();
 +
     
 +
ctx.lineWidth="1";
 +
ctx.strokeStyle="#080101";
 +
 +
ctx.moveTo(string_s_x, string_s_y);                           
 +
ctx.lineTo(string_e_x, string_e_y);                         
 +
ctx.stroke(); 
 +
 +
ctx.lineWidth="2";
 +
ctx.strokeStyle="#DED5D5";
 +
ctx.beginPath();
 +
ctx.arc(head_x, head_y, head_r, 0, 2 * Math.PI);
 +
ctx.stroke();
 +
 +
ctx.fillStyle="#080101";
 +
ctx.beginPath();
 +
ctx.arc(eye_left_x, eye_left_y, 1, 0, 2 * Math.PI);
 +
ctx.arc(eye_right_x, eye_right_y, 1, 0, 2 * Math.PI);
 +
ctx.fill();
 +
 +
ctx.beginPath();
 +
ctx.strokeStyle="#DED5D5";
 +
ctx.moveTo(body_s_x, body_s_y);                           
 +
ctx.lineTo(body_e_x, body_e_y);                           
 +
ctx.lineWidth="6";
 +
ctx.stroke();
 +
 +
ctx.beginPath();
 +
ctx.strokeStyle="#DED5D5";
 +
ctx.moveTo(legs_s_x, legs_s_y);                           
 +
ctx.lineTo(legs_e_x, legs_e_y);                         
 +
ctx.lineWidth="6";
 +
ctx.stroke();
 +
 +
ctx.beginPath();
 +
ctx.strokeStyle="#DED5D5";
 +
ctx.moveTo(arms_s_x, arms_s_y);                           
 +
ctx.lineTo(arms_e_x, arms_e_y);                         
 +
ctx.lineWidth="6";
 +
ctx.stroke();
 +
 +
ctx.fillStyle="#F31C1C";
 +
ctx.beginPath();
 +
ctx.arc(string_e_x, string_e_y, head_r, 0, 2 * Math.PI);
 +
ctx.fill();
 +
 +
ctx.lineWidth="2";
 +
ctx.strokeStyle="#080101";
 +
ctx.beginPath();
 +
ctx.arc(string_e_x, string_e_y, head_r, 0, 2 * Math.PI);
 +
ctx.stroke();
 +
    }
 +
 +
    setInterval(step, 1000 / 60);             
 +
 
 +
}
 +
</syntaxhighlight>
  
{{#widget:Iframe |url=http://tm.spbstu.ru/htmlets/Sizova/Swing/dl_example_Swing_2.html|width=900 |height=650 |border=0 }}
+
Файл '''"dl_example_Swing.html"'''
 +
<syntaxhighlight lang="javascript" line start="1" enclose="div">
 +
<!DOCTYPE html>
 +
<html>
 +
<head>
 +
    <title>SWING</title>
 +
    <script src="dl_example_Swing.js">
 +
function sizePic() {
 +
number_input = document.getElementById("number_input").value;
 +
 +
}
 +
</script>
 +
</head>
 +
<body onload="main_dl_example_Swing();">
 +
    <canvas id="canvas_Swing" width="800" height="450" style="border: 1px solid #000000"></canvas>
 +
<input type="range" id="slider_input" min=3 max=9 value=3 step=0.01 style="width: 150px;">
 +
<div> Частота: PI : <input type="number" id="number_input" oninput ="n" min=3 max=9 value=3 step=0.01 style="width: 50px;">
 +
    = <span id="span_result">1.0471975511965976</span> </div>
 +
</body>
 +
</html>
 +
 
 +
== Обсуждение результатов и выводы ==
 +
 
 +
 
 +
 
 +
== Ссылки по теме ==
Вам запрещено изменять защиту статьи. 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:

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