![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
stbenge wrote:
> My inclination _is_ to to start using profane expletives,
Profanity is my number one debugging tool.
--
Darren New, San Diego CA, USA (PST)
"How did he die?" "He got shot in the hand."
"That was fatal?"
"He was holding a live grenade at the time."
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
> As it turns out, there were two places to change the window size, so it
> should be fixed now.
OK it's working now, very smooth.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
On 31/01/2011 08:24 PM, stbenge wrote:
> Thank you all for your input! I'd still like to hear any comments you
> might have, if you can take the time.
>
> One of my goals is to prepare a full-on cellular automata gallery that
> anyone (with a graphics card) can view.
Neither URL works for me on my work PC. I get a security warning asking
if I want to run the applet, and then a blank page. The new URL works
just fine on my home PC. I have no idea why there would be a difference.
(But I recall that this kind of thing is highly typical of Java. Isn't
that their slogan? Write once, test everywhere?)
I don't know about cellular automaton; it looks more like some sort of
reaction-diffusion system.
http://texturegarden.com/java/rd/
Then again, there are other types of differential equations which
apparently produce similar results. Which is why I find it quite
surprising that you claim this is a *discrete* system, not a continuous
one. It certainly doesn't look very discrete.
I also wonder whether the visible image on-screen actually represents
all the information in the frame, or whether there are details too faint
to see. Certainly the simulation behaves in a wonderfully unpredictable way.
Clicking the mouse is like detonating a high-yield nuclear bomb, and the
fallout usually dies away quickly, but sometimes inexplicably lasts for
a very, very long time.
It is worth noting that, certainly for RD systems, almost all
combinations of parameter settings do absolutely nothing interesting at
all. Only a tiny fraction of possible settings do anything remotely
worth watching. Finding these interesting bits is highly non-trivial.
And yet, you seem to have hit upon something quite interesting here.
It appears that the image boundaries are held at a constant state. You
might try toroidal symmetry (i.e., joining the edges together). Also, it
occurs to me that if you were to run a simulation and stack each
successive frame one on top of the other, you could make some rather
interesting 3D shapes.
(Alternatively, perhaps the algorithm generalises easily to 3D. I'm not
sure how easy to visualise that would be though...)
It still amuses me that way, waaaay back in 1997 or so, I was playing
with Java, trying to copy the output of the ground-breaking Geiss
visualisation for WinAmp. Of course, Geiss used hand-optimised machine
code for all the main loops, and still ran cripplingly slowly. (E.g.,
about 12 frames/second at 800x600, only rising to sane speeds at 320x240.)
Unsurprisingly, Java was orders of magnitude slower. I had it render at
256x256, and draw 4x larger on screen. And still it was absurdly slow.
(I didn't measure exactly how slow.)
And yet, your little Java applet sucks about 5% CPU out of my obsolete
AMD Athlon 2X 4200+ with its 2.2 GHz clock rate. How times have changed!
I'm curious to know how you manage to get it to render at a constant
frame rate, rather than "as fast as you can".
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
On 01/02/2011 2:15 AM, stbenge wrote:
> On 1/31/2011 5:30 PM, Stephen wrote:
>> On 01/02/2011 12:00 AM, stbenge wrote:
>>> My inclination _is_ to to start using profane expletives, but the Zen
>>> method of realizing the path I must take fills me with peace.
>>
>> Ah! My son.
>
> You aren't my father! No! No! (getting carried away with Star Wars
> geekiabilia there)
>
It is so easy. :-)
>> You will realise, after years of study and training that the
>> circle can be completed and the mind’s control of the body is as nothing
>> to letting rip when the hammer of fate connects with the thumb of life.
>> So take yourself into the desert and kick the coyote until He gives you
>> the gift of fire.
>
> I've done that, but it really doesn't work. Expressing emotional turmoil
> to desert creatures (or other socially arid inhabitants) doesn't really
> accomplish much, although you /do/ get some exercise.
>
Just slap your computer, then.
--
Regards
Stephen
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
On 1/31/2011 6:54 PM, Darren New wrote:
> stbenge wrote:
>> My inclination _is_ to to start using profane expletives,
>
> Profanity is my number one debugging tool.
lol!
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
On 2/1/2011 4:04 AM, Stephen wrote:
> On 01/02/2011 2:15 AM, stbenge wrote:
>> On 1/31/2011 5:30 PM, Stephen wrote:
>>> On 01/02/2011 12:00 AM, stbenge wrote:
>>>> My inclination _is_ to to start using profane expletives, but the Zen
>>>> method of realizing the path I must take fills me with peace.
>>>
>>> Ah! My son.
>>
>> You aren't my father! No! No! (getting carried away with Star Wars
>> geekiabilia there)
>
> It is so easy. :-)
Just when you think you have it under control, someone cuts off your
hand and starts making outrageous parental claims :(
> Just slap your computer, then.
OK... . whoa, that's a lot of dust!
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
On 2/1/2011 12:39 AM, scott wrote:
>> As it turns out, there were two places to change the window size, so it
>> should be fixed now.
>
> OK it's working now, very smooth.
Cool.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
On 2/1/2011 1:45 AM, Invisible wrote:
> On 31/01/2011 08:24 PM, stbenge wrote:
>> Thank you all for your input! I'd still like to hear any comments you
>> might have, if you can take the time.
>
> Neither URL works for me on my work PC. I get a security warning asking
> if I want to run the applet, and then a blank page. The new URL works
> just fine on my home PC. I have no idea why there would be a difference.
> (But I recall that this kind of thing is highly typical of Java. Isn't
> that their slogan? Write once, test everywhere?)
Part of the problem is that I'm using OpenGL libraries, and the security
restrictions imposed by the new version of JRE is keeping the thing from
loading completely. In a few days (after the download is complete) I can
start signing my applets, which should help.
> I don't know about cellular automaton; it looks more like some sort of
> reaction-diffusion system.
It /is/ partly a reaction-diffusion system. I've never made a "pure" RD
system, though the edge-finding portion of mine is considered a type of RD.
> http://texturegarden.com/java/rd/
Oh yeah, I was there yesterday :) There's also another link at the same
site concerning fractal drainage patterns:
http://fd.alife.co.uk/model/plugin/index.html
When trying to model minimal surfaces, I inadvertently stumbled upon a
way to model such drainage patterns. What you see in my demo is the
result of the drainage ridges becoming stabilized. I think it might even
lead to a way for eroding height_field data.
> Then again, there are other types of differential equations which
> apparently produce similar results. Which is why I find it quite
> surprising that you claim this is a *discrete* system, not a continuous
> one. It certainly doesn't look very discrete.
No, it's definitely *not* discreet. After reading up on the definitions,
I'd have to say that it's most likely continuous. I guess I have lumped
all sorts of systems into the generalized term, "CA." There's a lot of
crossover. I'm pretty sure there is a continuous version of the Game of
Life (maybe still waiting to be found).
> I also wonder whether the visible image on-screen actually represents
> all the information in the frame, or whether there are details too faint
> to see. Certainly the simulation behaves in a wonderfully unpredictable
> way.
The video surfaces are not scaled down, but they /do/ use linear
interpolation, so there is inter-pixel testing going on. I didn't use
noise for the field, but when you click the mouse, it sprays
randomly-valued pixels locally. That's the only randomization present.
> It is worth noting that, certainly for RD systems, almost all
> combinations of parameter settings do absolutely nothing interesting at
> all. Only a tiny fraction of possible settings do anything remotely
> worth watching. Finding these interesting bits is highly non-trivial.
> And yet, you seem to have hit upon something quite interesting here.
Well, it was a theory that actually worked! Usually when I hit upon
something, the next phase is the small adjustment of values, to express
what's truly going on. It's hard to tell exactly /what/ needs to be
changed beforehand, since each subsequent generation becomes more and
more difficult to predict. But that's what makes these systems so much
fun :)
> It appears that the image boundaries are held at a constant state. You
> might try toroidal symmetry (i.e., joining the edges together).
Yeah, the library I'm using for the GLSL doesn't allow me to tell OpenGL
to wrap a texture. Which means I need to make a function, which means
things will slow down somewhat, though not appreciably.
> Also, it
> occurs to me that if you were to run a simulation and stack each
> successive frame one on top of the other, you could make some rather
> interesting 3D shapes.
I should try that. I don't see why it couldn't be done (unless I run out
of RAM).
> (Alternatively, perhaps the algorithm generalises easily to 3D. I'm not
> sure how easy to visualise that would be though...)
I'm sure a 3D version would work just fine, but would be hecka slow.
I've thought about stacking 2D surfaces and testing between them. The
current setup (768x768) amounts to 589,824 pixels. A 64x64x64 stacked
planes setup would be 262,144 pixels total. But such a setup would
require more pixel samples to be taken, and some sort of way to test the
nearest surfaces. To visualize it, I could use alpha transparency and a
simple bump-mapping technique. But there are other problems with doing
all of that that I haven't resolved.
> It still amuses me that way, waaaay back in 1997 or so, I was playing
> with Java, trying to copy the output of the ground-breaking Geiss
> visualisation for WinAmp. Of course, Geiss used hand-optimised machine
> code for all the main loops, and still ran cripplingly slowly. (E.g.,
> about 12 frames/second at 800x600, only rising to sane speeds at 320x240.)
Whoa, that's pretty fast! I've gotten no better with SDL and C++...
> Unsurprisingly, Java was orders of magnitude slower. I had it render at
> 256x256, and draw 4x larger on screen. And still it was absurdly slow.
> (I didn't measure exactly how slow.)
Yeah. Java, as a rule, just isn't that fast.
> And yet, your little Java applet sucks about 5% CPU out of my obsolete
> AMD Athlon 2X 4200+ with its 2.2 GHz clock rate. How times have changed!
Most of the work is being done on your graphics card. That's why GLSL
appeals to me so much: I can quickly type out an idea and see it play
out in real-time. I didn't even realize the potential until I saw some
of Milkdrop's presets... At one point I was like, "Wait a minute! That's
the Game of Life, running at 60FPS! Fullscreen!!!" I didn't get much
sleep that night.
> I'm curious to know how you manage to get it to render at a constant
> frame rate, rather than "as fast as you can".
It /is/ running all-out, but it's possible that either Processing or the
graphics hardware is capping the frame rate.
Sam
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
>> Neither URL works for me on my work PC. I get a security warning asking
>> if I want to run the applet, and then a blank page. The new URL works
>> just fine on my home PC. I have no idea why there would be a difference.
>> (But I recall that this kind of thing is highly typical of Java. Isn't
>> that their slogan? Write once, test everywhere?)
>
> Part of the problem is that I'm using OpenGL libraries, and the security
> restrictions imposed by the new version of JRE is keeping the thing from
> loading completely. In a few days (after the download is complete) I can
> start signing my applets, which should help.
Security restrictions block OpenGL? Man, whatever next...
> It /is/ partly a reaction-diffusion system. I've never made a "pure" RD
> system, though the edge-finding portion of mine is considered a type of RD.
Hmm, OK.
> No, it's definitely *not* discreet. After reading up on the definitions,
> I'd have to say that it's most likely continuous. I guess I have lumped
> all sorts of systems into the generalized term, "CA." There's a lot of
> crossover. I'm pretty sure there is a continuous version of the Game of
> Life (maybe still waiting to be found).
I see... I think.
>> It is worth noting that, certainly for RD systems, almost all
>> combinations of parameter settings do absolutely nothing interesting at
>> all.
>
> Well, it was a theory that actually worked! Usually when I hit upon
> something, the next phase is the small adjustment of values, to express
> what's truly going on. It's hard to tell exactly /what/ needs to be
> changed beforehand, since each subsequent generation becomes more and
> more difficult to predict. But that's what makes these systems so much
> fun :)
Fun and frustrating at the same time, usually. ;-)
>> It still amuses me that way, waaaay back in 1997 or so, I was playing
>> with Java, trying to copy the output of the ground-breaking Geiss
>> visualisation for WinAmp. Of course, Geiss used hand-optimised machine
>> code for all the main loops, and still ran cripplingly slowly. (E.g.,
>> about 12 frames/second at 800x600, only rising to sane speeds at
>> 320x240.)
>
> Whoa, that's pretty fast! I've gotten no better with SDL and C++...
Well, a tiny inner loop custom-coded in assembly... Go check out Project
Euler. Apparently people really do still write assembly by hand. Go figure!
> Yeah. Java, as a rule, just isn't that fast.
No kidding. It certainly wasn't back in 1997.
>> And yet, your little Java applet sucks about 5% CPU out of my obsolete
>> AMD Athlon 2X 4200+ with its 2.2 GHz clock rate. How times have changed!
>
> Most of the work is being done on your graphics card.
Wait - it's written in *Java* and yet it can access the *graphics card*??
How is that even possible?
Oh, well, no wonder its fast then. The graphics card is purposely
engineered to eat calculations like this for breakfast.
> I didn't even realize the potential until I saw some
> of Milkdrop's presets... At one point I was like, "Wait a minute! That's
> the Game of Life, running at 60FPS! Fullscreen!!!" I didn't get much
> sleep that night.
Yeah, Milkdrop basically 0wnz. Created by the same guy as the old Geiss
plugin too... That is one talented guy!
I wish to God I could figure out how half of Milkdrop works. There are
some amazing 3D effects which cannot be done in realtime, and yet it
does them in realtime, even though that's clearly impossible.
>> I'm curious to know how you manage to get it to render at a constant
>> frame rate, rather than "as fast as you can".
>
> It /is/ running all-out, but it's possible that either Processing or the
> graphics hardware is capping the frame rate.
Right. I assumed it way rate-limited because it wasn't using all
available CPU power.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
On 01/02/2011 6:18 PM, stbenge wrote:
>>> You aren't my father! No! No! (getting carried away with Star Wars
>>> geekiabilia there)
>>
>> It is so easy. :-)
>
> Just when you think you have it under control, someone cuts off your
> hand and starts making outrageous parental claims :(
>
There, there, there. :-)
>> Just slap your computer, then.
>
> OK... . whoa, that's a lot of dust!
Hot dust?
--
Regards
Stephen
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |