public void AddParticle(Vector3f v, Colorf c) { v -= Origin; if (UniqueParticles && Uniques.Contains(v)) { return; } Vector3i key = ToIndex(v); PInfo pinfo; if (Particles.TryGetValue(key, out pinfo)) { pinfo.count++; //pinfo.AccumColor += new Vector3f(c.r, c.g, c.b); pinfo.AccumColor = pinfo.count * new Vector3f(c.r, c.g, c.b); Particles[key] = pinfo; } else { pinfo = new PInfo() { count = 1, AccumColor = c }; Particles.Add(key, pinfo); Extents.Contain(key); } if (UniqueParticles) { Uniques.Add(v); } }
ElemType allocate(Vector3i index) { ElemType new_elem = exemplar.CreateNewGridElement(false) as ElemType; elements.Add(index, new_elem); bounds.Contain(index); return(new_elem); }