freenode/#clim - IRC Chatlog
Search
7:46:34
loke[m]
*no-defun-allowed*: Right, but have you built a general physics simulation system, or are you simply computing the equations of motion for this particular system, putting it in in Lisp form and run it?
7:47:08
loke[m]
*no-defun-allowed*: I presume you saw the video clip I made of animation in Climaxima doing the same thing?
7:47:31
loke[m]
I would really like to have a 2D physic simulation as part of the Climaxima canvas feature.
7:47:52
no-defun-allowed
There is a simple simulation "framework", I guess, where each entity runs a few stages of the simulation (resetting, adding constraints, running constraints loosely).
7:48:01
loke[m]
* I would really like to have a 2D physics simulation as part of the Climaxima canvas feature.
7:48:47
no-defun-allowed
Never found myself using constraints, though. "Adding constraints" is really applying forces, then running them consists of computing acceleration, velocity and position.
7:49:44
no-defun-allowed
Admittedly, I was almost thinking of using Maxima to solve non-linear constraints :)
7:50:23
loke[m]
I was going to do a followup with a double pendulum, but I have found some issues with my maths :-)
7:51:37
no-defun-allowed
It's still pretty good for drawing bridges though: https://eldritch.cafe/@nodefunallowed/105528704991226477
7:51:39
loke[m]
You really want to solve it using the Lagrangian. Doing it directly using Newton's equations is a nightmare.
7:53:26
no-defun-allowed
OTOH, Classowary may prove useful if I add other constraint features. Say I want to align some points I plotted by mouse (or worse, wiimote in the near future), then I could suggest the original positions, and AIUI it would pick constrained positions not far off the originals.
7:53:51
loke[m]
*no-defun-allowed*: If you intend to keep working on this, why don't we bake it into Climaxima, or at least make them work together?
7:55:52
no-defun-allowed
I'm not sure how it would work with Maxima, admittedly. Say, I add forces from springs to their points, but I guess it could be reworked into producing constraints somehow.
7:57:13
no-defun-allowed
The drawing part is also nothing special, but the prototype-ish object model is certainly special, and perhaps more difficult to work into Maxima. Not that I've ever used anything other than binomial_cdf, solve, diff, or integrate.
7:57:19
loke[m]
Well, from your point of view, you wouldn't have to change anything really. All that is needed is to be able to handle Maxima equations in addition to plain numbers. There is a `MAXIMA-EVAL-TO-FLOAT` function that takes a Maxima equation, computes it and returns a float (or nil, if it doesn't work, like if a variable is unbound or something)
7:57:46
loke[m]
There are presentation methods for equations that allows you to select them (or parts of them, as can be seen in the video).
7:58:55
loke[m]
There is also a way to temporarily assign values to Maxima variables during the evaluation. Like if you have an equation `x^2+y`, you can then call `MAXIMA-EVAL-TO-FLOAT` with values for `x` and `y` temporarily assigned.
8:00:25
loke[m]
In my example video, all the animation stuff is done with concrete numbers. In the beginning of the video I compute the equations of motion using the Lagrangian, but once I bring it over to the canvas, they are just the solutions and the canvas does nothing more than iteratively computing numbers.
8:00:38
no-defun-allowed
Would computing with coordinates work acceptably? I can't give F = ma to Classowary, because F and a are vectors, so I have to split it into x and y components.
8:02:52
loke[m]
My point is, that in Climaxima, the current canvas is extremely low level. It works with cartesian coordinates and really does nothing more than draw objects and update them. It's even more low level than Cassowary.
8:03:13
loke[m]
It knows absolutely nothing about physics. You could use it to draw a bar graph if you wanted to.
8:04:25
loke[m]
That's why it's called canvas. It's used to simply draw stuff (and maybe animate). The numbers representing what to draw (coordinates, dimensions, colours, etc) comes from Maxima equations, but from the point of view of the canvas, they are just numbers popping out of eval-to-float
8:06:42
no-defun-allowed
So, you want to add an object model for feeding equations and drawing the values?
8:21:13
loke[m]
From my selfish perspective I would just like to be able to see Climaxima become a stronger tool, and I really can't do it myself. :-)
8:21:33
loke[m]
So if you're already working on something that already looks better than what I have done, then I see a synergy here.
8:22:09
loke[m]
Of course, there is only synergy if you see a benefit in leveraging the power of Maxima.
8:25:47
no-defun-allowed
Well, I already started with a discrete simulation, and still haven't used any constraints, so I don't see it just yet.