request for critique

Bob Arning arning at charm.net
Mon Jun 2 12:57:50 UTC 2003


On Mon, 2 Jun 2003 06:04:47 -0500 David Faden <dfaden at iastate.edu> wrote:
>The code is for a little Mandelbrot set explorer. It seems pretty slow 
>(compared to similar implementations of the M. set in different 
>environments and compared to other graphics objects within the Squeak 
>image). Is the usual way to create an image pixel-by-pixel in Squeak to 
>create a Form then set the pixels one-by-one using #colorAt: put: or 
>#pixelValueAt: put:? What could I do to improve the performance?

David,

You seem to be doing the traditional algorithm correctly in Squeak. One thing that speeds things up a bit is a different algorithm.

	http://www.charm.net/~arning/MandelBob.17Jun431pm.cs

Implements something called the Mariani/Silver algorithm which I lifted from a sample application written in MacApp. This approach examines the edges of rectangle and, when all edge pixels are the same, fills the interior without checking each pixel. I don't know if this has been proven to be correct, but it certainly looks right to the eye and is a good bit faster.

>Is there a way to associate an hour glass cursor with a single Morph to 
>allow it indicate that it's carrying out a noticeably time consuming 
>process?

It isn't so much associating an hour glass with a morph as it is showing the hour glass while some code is running. The way to do this is...

	Cursor wait showWhile: [your code in here].

Alternatively, you can move the computation to another process and left the user have the use of the computer while it's running. That's the approach I took. If you decide to file in the above code to a recent Squeak image, at leadt one thing needs to change...

!MandelMorph2 methodsFor: 'menu' stamp: 'RAA 6/2/2003 08:34'!
mouseDown: evt

	(MenuMorph new) 
		add: 'Zoom in'
		target: self
		selector: #zoomIn;
		"--"
		add: 'Save to disk'
		target: self
		selector: #saveToDisk;
		"--"
		add: 'Set project background'
		target: self
		selector: #setProjectBackground;

		"--"
		popUpAt: Sensor cursorPoint 
		forHand: evt hand
		in: World.
	! !

Cheers,
Bob



More information about the Squeak-dev mailing list