[vtk-developers] Proposed CenterOfMass function for vtkPoints

Biddiscombe, John A. biddisco at cscs.ch
Thu Apr 1 10:24:44 EDT 2010


PS. I see no reason at all for this to exist in vtkPoints

JB

> -----Original Message-----
> From: vtk-developers-bounces at vtk.org [mailto:vtk-developers-bounces at vtk.org]
> On Behalf Of Biddiscombe, John A.
> Sent: 01 April 2010 16:17
> To: Berk Geveci; David Doria
> Cc: VTK Developers; Will Schroeder
> Subject: Re: [vtk-developers] Proposed CenterOfMass function for vtkPoints
> 
> > Also, if you wanted to optimize this method, I'd suggest using
> > GetValue()/GetTupleValue() (you would have to use some sort of macro
> 
> Here's an extract from my own templated version
> 
> JB
> 
> //--------------------------------------------------------------------------
> --
> template <typename T>
> void WeightedSum(T* data, double mass, double *weightedsum) {
>   weightedsum[0] += data[0]*mass;
>   weightedsum[1] += data[1]*mass;
>   weightedsum[2] += data[2]*mass;
> }
> //--------------------------------------------------------------------------
> --
> void vtkCenterOfMassFilter::UpdateCenterOfMassVariables(
>   double &totalMass, double totalWeightedMass[])
> {
>   vtkIdType index = 0;
>   for (vtkIdType id=0; id<this->NumberOfPoints; ++id)
>   {
>     double mass=this->MassArray->GetTuple1(id);
>     if (this->dPointData) {
>       WeightedSum<double>(&this->dPointData[index], mass,
> totalWeightedMass);
>     }
>     else {
>       WeightedSum<float>(&this->fPointData[index], mass, totalWeightedMass);
>     }
>     totalMass += mass;
>     index += 3;
>   }
> }
> 
> 
> 
> > -----Original Message-----
> > From: vtk-developers-bounces at vtk.org [mailto:vtk-developers-
> bounces at vtk.org]
> > On Behalf Of Berk Geveci
> > Sent: 01 April 2010 15:27
> > To: David Doria
> > Cc: VTK Developers; Will Schroeder
> > Subject: Re: [vtk-developers] Proposed CenterOfMass function for vtkPoints
> >
> > Can you post your latest implementation?
> >
> > Also, if you wanted to optimize this method, I'd suggest using
> > GetValue()/GetTupleValue() (you would have to use some sort of macro
> > and a templated function). GetPoint() ends up calling GetTuple() which
> > is virtual.
> >
> > -berk
> >
> > On Thu, Apr 1, 2010 at 9:12 AM, David Doria <daviddoria+vtk at gmail.com>
> > wrote:
> > > On Thu, Apr 1, 2010 at 8:52 AM, Will Schroeder
> > > <will.schroeder at kitware.com> wrote:
> > >> David-
> > >>
> > >> The phrase center of mass is an issue for many reasons, first if the
> > >> dataset has cells that are curved (higher order cells) your assumption
> > >> may not hold. Second, there is no mention of mass in the dataset API
> > >> and this will confuse people.
> > >
> > > This is a moot point because I think GetPointsCenter is more clear
> > > anyway (since there is no concept of mass, like you said), but since
> > > this function is in vtkPoints there is no concept of "cells" to
> > > interfere with anything - it is simply the center of the points.
> > >
> > > Ok, so what's the process from here? Do we wait a few days for more
> > > comments/suggestions?
> > >
> > > David
> > > _______________________________________________
> > > Powered by www.kitware.com
> > >
> > > Visit other Kitware open-source projects at
> > http://www.kitware.com/opensource/opensource.html
> > >
> > > Follow this link to subscribe/unsubscribe:
> > > http://www.vtk.org/mailman/listinfo/vtk-developers
> > >
> > >
> > _______________________________________________
> > Powered by www.kitware.com
> >
> > Visit other Kitware open-source projects at
> > http://www.kitware.com/opensource/opensource.html
> >
> > Follow this link to subscribe/unsubscribe:
> > http://www.vtk.org/mailman/listinfo/vtk-developers
> 
> _______________________________________________
> Powered by www.kitware.com
> 
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
> 
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtk-developers




More information about the vtk-developers mailing list