Ejemplo n.º 1
0
	Optics() : m_osNext(0) {
		const int N = 1024 * 8;
//		objSet = new Obj[N];

		m_reachDist = new float[N];
		m_coreDist = new float[N];

		m_flags = new char[N];

		m_mosPtr.resize(N);
		memset( m_flags, 0, sizeof( char ) * N );


		m_orderedSet = new int[N];
//		Random rnd = new Random();
//		for( int i = 0; i < N; i++ ) {
//			objSet[i] = new Point( rnd.nextFloat(), rnd.nextFloat() );
//		}

		float p[] = {1,4,6,2,5,7,1.5,3,4.5,6.5,1.7};
		for( int i = 0; i < N; i++ ) {
//			m_objSet.push_back(new Point( p[i] ));
			m_objSet.push_back( new Point(randf()/*, randf()*/) );
		}



		for( int i = 0; i < N; i++ ) {
			printf( "expand: %d %d\n", i, N );
			if( !hasProcessed(i) ) {

				expandClusterOrder( i, 1.1, 1 );
			}
		}
	}
Ejemplo n.º 2
0
void OPTICSFilter::filter(const std::string& seedString) {
    auto it = _unprocessedObjects.begin();
    while (_unprocessedObjects.empty() == false) {
        OPTICSObject_Ptr node = *it;

        if (node->processed) {
            it = _unprocessedObjects.erase(it);
            continue;
        }

        expandClusterOrder(node);
    }

    assert(_orderedObjects.size() == _opticsObjects.size());

    // extract clusters via DBSCAN
    _locations->clear();

    extractDBSCANClustering(seedString);
}