Forums » Forum général »
Création d'un nuage de point de test
Added by Giraldeau Francis almost 9 years ago
J’aimerais créer un nuage pour tester CT_ShootingPatternFrromPointCloud. Je ne trouve pas le bon type à utiliser pour le nuage de point. Je me suis basé sur ct_reader_points_ascii.cpp:
void ScannersTest::testPointCloudShootingPattern()
{
/*
* Create a cloud of points for CT_ShootingPatternFromPointCloud
*/
CT_AbstractUndefinedSizePointCloud* cloud = PS_REPOSITORY->createNewUndefinedSizePointCloud();
cloud->addPoint(CT_Point(Vector3d(1, 2, 3)));
CT_PCIR pcir = PS_REPOSITORY->registerUndefinedSizePointCloud(cloud); // voir ct_reader_points_ascii.cpp:521
Vector3d origin(0, 0, 0);
CT_ShootingPattern *p = new CT_ShootingPatternFromPointCloud(origin, pcir);
}
Par contre, la compilation échoue:
error: cannot convert
‘QSharedPointer<CT_AbstractNotModifiableCloudIndexRegisteredT<CT_PointData> >::Type* const
{aka CT_AbstractNotModifiableCloudIndexRegisteredT<CT_PointData>* const}’ to
‘QSharedPointer<CT_AbstractCloudIndexRegisteredT<CT_PointData> >::Type*
{aka CT_AbstractCloudIndexRegisteredT<CT_PointData>*}’ in initialization
En fait, je ne comprends pas comment ct_reader_point_ascii.cpp compile, car le type la méthode PS_REPOSITORY→registerUndefinedSizePointCloud() retourne CT_NMPCIR et non pas CT_PCIR.
Quelle serait la meilleure méthode pour obtenir un objet CT_PCIR à partir d’un vecteur de point?
Merci!
Replies (2)
RE: Création d'un nuage de point de test - Added by Krebs Michaël almost 9 years ago
Ne pas oublier l’include :
#include "ct_cloudindex/registered/abstract/ct_abstractnotmodifiablecloudindexregisteredt.h"
peut être que le problème vient de là ? Ou alors il manque l'include dans le header de la classe CT_ShootingPatternFromPointCloud ?
Sinon c'est la bonne méthode.
Quoi qu'il serait préférable d'utiliser la méthode ci-dessous quand on sait le nombre de point à l'avance :
CT_NMPCIR pcir = PS_REPOSITORY->createNewPointCloud( nPoints );
CT_MutablePointIterator it(pcir);
while(it.hasNext()) {
CT_Point p = createCtPoint(x,y,z);
it.next();
it.replaceCurrentPoint(p);
}
Vector3d origin(0, 0, 0);
CT_ShootingPattern *p = new CT_ShootingPatternFromPointCloud(origin, pcir);
RE: Création d'un nuage de point de test - Added by Giraldeau Francis almost 9 years ago
Ajouter le fichier include résout le problème. Merci pour les conseils!