Project

General

Profile

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!

    (1-2/2)