Forums » Forum général »
Création d'un nuage de point de test
Added by Giraldeau Francis over 8 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 over 8 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 over 8 years ago
Ajouter le fichier include résout le problème. Merci pour les conseils!