- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
//-------------------РИСОВАНИЕ и МАТЕМАТИКА--------------------------------
//Рендерить сцену
_root.onEnterFrame = render;
//Функция отрисовки текущего положения
function render()
{
if (enable_anim) //Рисовать только ЕСЛИ разрешена анимация, т.е. файл загружен
{
empty.clear(); //Очистка области для рисования
for (obj in arr_m) //Пройтись по всем элементам кинематической схемы
{
switch(arr_m[obj].type){
case "crank": /*type="0" l="50" angle="0" s0="2" s1="1"*/
//Кривошип
//trace(arr_m[obj].type);
//trace(arr_m[obj].num + " " + arr_m[obj].angle);
empty["arr_o"+arr_m[obj].s1]._x = empty["arr_o"+arr_m[obj].s0]._x +arr_m[obj].l*Math.cos(arr_m[obj].angle*k);
empty["arr_o"+arr_m[obj].s1]._y = empty["arr_o"+arr_m[obj].s0]._y +arr_m[obj].l*Math.sin(arr_m[obj].angle*k);
if (enable_dv) //------------------------Движение звена разрешено-------
{
arr_m[obj].angle += 0.3;
if (arr_m[obj].angle >= 360)
{
arr_m[obj].angle = 0;
}
}
//Невидимка
if(arr_m[obj].hidden) continue;
empty.lineStyle(2,0x404040); empty.moveTo(empty["arr_o"+arr_m[obj].s0]._x,empty["arr_o"+arr_m[obj].s0]._y);
empty.lineTo(empty["arr_o"+arr_m[obj].s1]._x,empty["arr_o"+arr_m[obj].s1]._y);
break;
case "1": /*type="1" l1="100" l2="100" s0="2" s1="3" s2="4"*/
//шатун + коромысло
//trace(arr_m[obj].type);
var x0 = empty["arr_o"+arr_m[obj].s0]._x;
var y0 = empty["arr_o"+arr_m[obj].s0]._y;
var x1 = empty["arr_o"+arr_m[obj].s1]._x;
var y1 = empty["arr_o"+arr_m[obj].s1]._y;
var r = distance(x0, y0, x1, y1);
var a0 = Math.acos((Math.pow(arr_m[obj].l1,2) + Math.pow(r,2) - Math.pow(arr_m[obj].l2,2))/(2*arr_m[obj].l1*r));
var a1 = get_angle(x0, y0, x1, y1);
var x2 = x0 + arr_m[obj].l1 * Math.cos(a1 - a0);
var y2 = y0 + arr_m[obj].l1 * Math.sin(a1 - a0);
//trace(a1/k);
empty["arr_o"+arr_m[obj].s2]._x = x2;
empty["arr_o"+arr_m[obj].s2]._y = y2;
//Невидимка
if(arr_m[obj].hidden) continue;
empty.lineStyle(2,0x404040);
empty.moveTo(x0,y0);
empty.lineTo(x2,y2);
empty.lineTo(x1,y1);
break;
//... Тут еще очень много таких кейсов
}
}
}
Давненько писал на симулятор механический, это функция апдейта всех элементов.
Что в остальном коде, догадаться несложно.
Комментарии (0) RSS
Добавить комментарий