loom

Форк
0
/
scene.s-script 
75 строк · 1.4 Кб
1
import "solvers.s-script" : solvers
2
import "support.s-script" : s
3

4
def float :
5
    t   = 0.0,
6
    tk  = 0.0,
7
    dt  = 0.0
8
    
9
def int :
10
    iteration_step = 1
11
    
12
def auto :
13
    objects = []
14
    
15
def auto :
16
    callback = fn [] ()
17
    {
18
    },
19
    solver = solvers.Euler
20
    
21
fn add (object : obj)
22
{
23
    if obj["__equetions__"] == null && obj["__rights__"] == null
24
        print "*** scene.add : Объект не является моделью ode"
25
    else
26
        objects ++ obj
27
}
28
    
29
fn start ()
30
{
31
    if tk == t {
32
        print "*** scene.start : Не задано значение tk"
33
        return
34
    }
35
    
36
    if dt == 0.0 {
37
        print "*** scene.start : Не задано значение dt"
38
        return
39
    }
40
    
41
    def int : 
42
        n = 0,
43
        callback_count = iteration_step
44

45
    s.sendTimeToShellStatusBar(t)
46
    callback()
47
        
48
    while t < tk {
49
        t = dt * n
50
        
51
        for auto : obj in objects {
52
            if obj["__equetions__"] != null
53
                obj["__equetions__"]()
54
                
55
            if obj["__rights__"] != null {
56
                solver(obj, t, dt)
57
            }
58
        }
59
        
60
        callback_count -= 1
61
        
62
        if callback_count == 0 {
63
            s.sendTimeToShellStatusBar(t)
64
            callback()
65
            callback_count = iteration_step
66
        }
67

68
        n += 1
69
    }
70

71
    if callback_count != iteration_step {
72
        s.sendTimeToShellStatusBar(t)
73
        callback()
74
    }
75
}
76

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.