(require 'src.math)
(alias 'mt 'src.math)
-; ['up x vx y vy]
-(defn phys [[_ x vx y vy]]
+(defn L [[_ t [x y] [vx vy]]]
(let [k 10 m 0.1]
- ['up
- vx
- (/ (- (* k x)) m)
- vy
- (/ (- (* k y)) m)
- ]))
+ (- (* 0.5 m
+ (+ (* vx vx) (* vy vy))
+ )
+ (* 0.5 k
+ (+ (* x x) (* y y))
+ ))))
+
+(def A (mt/L->accer L))
+
+(defn phys [xi]
+ (let [n (/ (- (count xi) 1) 2)
+ q (take n (rest xi))
+ qdot (drop n (rest xi))
+ qddot (A ['up 0 q qdot])]
+ (concat ['up]
+ qdot
+ qddot)))
+
+; ['up x vx y vy]
+;(defn phys [[_ x vx y vy]]
+; (let [k 10 m 0.1]
+; ['up
+; vx
+; (/ (- (* k x)) m)
+; vy
+; (/ (- (* k y)) m)
+; ]))
+; ['up x y vx vy]
(def xi (ref ['up 1 0 0 -1]))
(defn anime-panel []