Hi,

I am doing a little test using numpy and numexpr to do a particle simulation. I 
never used either of them much and this is the first time I have to go deeper. 
Here is the code:

import numpy as np
import numexpr as nexpr

class Particle( object ):
    
    def __init__( self, id ):
        self.position = [0.0, 0.0, 0.0]
        self.color = [0.5, 0.5, 0.5]
        self.direction = [0.0, 0.0, 0.0]
        self..id = id
        self.lifeSpan = 0
        self.type = 0

class Emitter( object ):
    
    def __init__( self ):
        self.particles = np.empty([], dtype=Particle())
        self.currentParticleId = 0
        self.numParticles = 1000
        self.emissionRate = 10
        self.position = [0.0, 0.0, 0.0]
        self.rotation = [0.0, 0.0, 0.0]
        
    # Add a single particle
    def addParticle( self ):
        """
        Add a single particle in the emitter.
        """
        if self.currentParticleId < self.numParticles:
            self.particles = np.append( self.particles, Particle( 
self..currentParticleId ) )
            self.currentParticleId+=1   


#######################################################
Problem 1:
self.particles = np.empty([], dtype=Particle())
In "Emitter" class, how do I initialize a numpy array of "Particle" type?

Problem 2:
If problem 1 can be solved, is it possible to use numexpr to alter the position 
of each particle's position
in emitter.particles array. For example, multiply x,y and z of each particle by 
using three random values. In other words

self.particles[0].position*= random(1.0)
self.particles[1].position*= random(2.0)
self.particles[2].position*= random(3.0)

If problem 1 cannot be solved then may be I could use something like this using 
simple list:

a = [Particle(0), Particle(1)]

How do I modify the position of each particle in array"a" using numexpr?

I would be using 1-5 million particles where each particle's attribute postion, 
rotation and color will be modified using some complex
equations. The above code is just the begining hence any tips for performance 
would be greatly apperciated.

Regards

Prashant


      Yahoo! recommends that you upgrade to the new and safer Internet Explorer 
8. http://downloads.yahoo.com/in/internetexplorer/
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to