Ciao a tutti. Ecco qui un programmino molto carino che sto cercando di far funzionare:
//center_of_mass.C
//progeramma per il calcolo del centro di massa
//utilizzando CGAL
#include "tutorial.h"
#include <iostream.h>
#include <CGAL/Origin.h>
#include <CGAL/Cartesian.h>
#include <CGAL/Point_2.h>
#include <CGAL/Vector_2.h>
//Creiamo una variabile che associ un punto alla massa
typedef CGAL::Cartesian<double> K;
typedef CGAL::Point_2<K> Point_2;
typedef CGAL::Vector_2<K> Vector_2;
typedef CGAL::Origin ORIGIN;
struct Point_mass {
Point_2 pos;
double mass;
Point_mass(const Point_2 & p, double m): pos(p), mass(m) {}
};
Point_2 centre_of_mass(Point_mass *cur, Point_mass *beyond)
{
Vector_2 sumv(0.0, 0.0);
double sumw = 0.0;
for(;cur!=beyond; ++cur){
sumv = sumv+(cur->pos - ORIGIN)* cur->mass;
sumw +=cur->mass;
}
return ORIGIN +sumv/sumw;
}
int main()
{
const int N = 4;
Point_mass points[N] = {
Point_mass(Point_2 (3,4), 1),
Point_mass(Point_2(-3,5),1),
Point_mass(Point_2(2.1,0),10),
Point_mass(Point_2(7,-12),1)
};
Point_2 centre = centre_of_mass(points, points+N);
cout << "The centre of mass is: (" << centre.x() <<", "<< centre.y() <<")\n";
}
Il probblema è che mi da i seguenti errori:
enterOfMass.C: In function ‘Point_2 centre_of_mass(Point_mass*, Point_mass*)’:
CenterOfMass.C:30:33: error: expected primary-expression before ‘)’ token
CenterOfMass.C:33:16: error: expected primary-expression before ‘+’ token
Non capisco, nel ciclo for dovrebbe essere tutto ok. voi vedete l'errore?