Mathematica 9 is now available
Student Support Forum
Student Support Forum: 'Art - "Semi-Random" Vector Field Plotting' topicStudent Support Forum > General > Archives > "Art - "Semi-Random" Vector Field Plotting"

Next Comment >Help | Reply To Topic
Author Comment/Response
Jim Witte
01/29/11 01:09am

I've had a copy of this unfinished project code that looked quite cool for ages now:

"Tarot Art Tool Project"

It's basically a complicated "iterated vector field" - a bunch of fields from different lines/other figures that are combined together. I originally was going to rewrite the whole thing in Quartz under OSX, but that would take more time on the base graphics than I really want to spend - at least at the beginning.

Mathematica should be able to do the vector fields quite easily, as well as plenty of other cool stuff (plot in 3D, should be able to do easy color fields, line thickness, etc, etc). The problem I see is that I'm looking to do a plot that is not so much interested in the math, but in the art. What I need is this:

1) a way to build up an "iterated function" that will take a point (x,y) and a set of figure definitions, and spit out a direction and a length of the line to be plotted. I'd also like to be able to randomly shift the lines plotted so they aren't a straight geometric grid, so I need a way to basically have a function that looks like this:

vLineField(x,y) -> (xOffset, yOffset), rayLength, lineThickness
vColorField(x,y) -> r,b,g,a

vLineField would be called at intervals across the grid, I would hope with spacing that would depend on where the definition figures were (closer to a line would have lines closer together, farther from it wouldn't - the ray length would be similar in some way)

vColorField would be essentially continuous - evaluated at every pixel in the field

Is it possible to (relatively easily) write Mathematica programs to do this kind of plotting? I can see a brute force way to do it would be to simply build a very large table of vector coordinates (x1,y1,x2,y2), and then pass them all to a plot function - but that feel like it'd be extremely inefficient. The smarter way would be to have a function that would put out a "non-randomized" coordinates would need to be evaluated, then the function that would offset each coordinate based on what figures defined the picture, then a third function that would determine the vector direction, ray length, color, etc, and then have a Plot function that could possibly do all the evaluation in parallel if possible (using whatever GPU and multi-core tricks it can).

Another problem I see is that the definition of how I find the vector is not at all simple. If there is only a single line, or curve, or spline in the figure, it is. But if there are three or four, plus a few ovals in the definition? Another reason why I'd like to have Mathematica take over doing whatever it can in parallel automatically..

Does this question make any sense?

Attachment: tumtum.jpg, URL: ,

Subject (listing for 'Art - "Semi-Random" Vector Field Plotting')
Author Date Posted
Art - "Semi-Random" Vector Field Plotting Jim Witte 01/29/11 01:09am
Re: Art - toen 02/02/11 3:43pm
Next Comment >Help | Reply To Topic