コード例 #1
0
ファイル: trace.c プロジェクト: jmscott/blobio
void
trace4(char *msg1, char *msg2, char *msg3, char *msg4)
{
	if (msg1) {
		char buf[PIPE_MAX];

		buf[0] = 0;
		bufcat(buf, sizeof buf, msg1);
		if (msg2)
			buf2cat(buf, sizeof buf, ": ", msg2);
		trace3(buf, msg3, msg4);
	} else 
		trace3(msg2, msg3, msg4);
}
コード例 #2
0
ファイル: draw.hpp プロジェクト: gargraghav/AlgoLucidator
void onClick2(int button, int state, int mx, int my)
{
	if(button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
	{
		int CurrWindowWidth=glutGet(GLUT_WINDOW_WIDTH);
		int CurrWindowHeight=glutGet(GLUT_WINDOW_HEIGHT);
		switch(pointer)
		{
			case 0:
			base_radius = 20;
			xi = mx;  
			yi = CurrWindowHeight - my;
			drawFilledBlob(xi, yi, base_radius);
			b1.pushreq=true;
			pointer = 1;
			break;
			default:
			xf = mx;  
			yf = CurrWindowHeight - my;
			if(xf == xi && yf == yi)
			{
				base_radius += 1;
				drawFilledBlob(xi, yi, base_radius);
				b1.pushreq=true;
			}
			else
			{
				blobs b;
				b.radius = base_radius;

				if(base_radius > b1.max)
					b1.max=base_radius;
				if(base_radius < b1.min)
					b1.min=base_radius;

				trace3(base_radius, b1.min, b1.max);
				b1.bv.push_back(b);
				b1.pushreq=false;
				pointer = 0;
			}
			break;
		}  
	}
}
コード例 #3
0
ファイル: bmd.cpp プロジェクト: freetdi/tdlib
int main(int argc, char** argv)
{
	size_t size=1<<5;
	if(argc>1) size=1<<atoi(argv[1]);
	size_t ne=size*size/8 + 1;

	boost::mt19937 rng;
	if(argc>2){
		rng.seed(atoi(argv[2]));
	}

	typedef bald_t G;
	bald_t g;
	boost::generate_random_graph(g, size, ne, rng);
	size_t e=boost::num_edges(g);
	size_t n=boost::num_vertices(g);
	std::cout << "generated " << e << " edges, " << n << " vertices\n";

	BOOST_AUTO(EE, boost::edges(g));
	for(;EE.first!=EE.second; ++EE.first){
		auto s=boost::source(*EE.first, g);
		auto t=boost::target(*EE.first, g);
		if(!boost::edge(t, s, g).second){
			boost::add_edge(t, s, g);
		}
	}

	// boost::add_edge(0,1,g);
	e=boost::num_edges(g);

	std::cout << "symmetric " << e << " edges\n";

	unsigned i=0;
	BOOST_AUTO(E, boost::edges(g));
	for(;E.first!=E.second; ++E.first){
		++i;

		std::cout << boost::source(*E.first, g) << " -- " <<
			boost::target(*E.first, g) << "\n";

		if(i==5) break;

	}

	std::deque<unsigned long > iso;
	BOOST_AUTO(V, boost::vertices(g));
	for(;V.first!=V.second; ++V.first){
			if(boost::out_degree(*V.first, g)){

			}else{
				iso.push_back(*V.first);
			}
	}

#ifdef REMOVE_ISOLATED
	// no longer necessary.
	for(auto i: iso){
		boost::remove_vertex(i, g);
	}
#endif

	n = boost::num_vertices(g);

	V=boost::vertices(g);
	for(;V.first!=V.second; ++V.first){
		assert(*V.first<n);
//		assert(boost::out_degree(*V.first,g));
	}

	std::cout << "tagged " << iso.size() <<"\n";

	i = 0;
	// boost md does not like cliques.
	trace3("clique check", n, e, size);
	if((n*(n-1u)) == boost::num_edges(g)){ untested();
		exit(0);
	}else{
		itested();
	}

	std::vector<int> inverse_perm(n, 0);
	std::vector<int> supernode_sizes(n, 1);
	BOOST_AUTO(id, boost::get(boost::vertex_index, g));
	std::vector<int> degree(n, 0);
	std::vector<int> io(n, 0);
	std::vector<int> o(n, 0);

	G h(g);
	assert(boost::num_edges(g)==boost::num_edges(g));

//	assert(n + iso.size() == size);

	/*
	 * (Graph& g,
	 *  DegreeMap degree,
	 *  InversePermutationMap inverse_perm,
	 *  PermutationMap perm,
	 *  SuperNodeMap supernode_size,
	 *  int delta,
	 *  VertexIndexMap vertex_index_map)
	 */

	unsigned ub=-1;

	unsigned w =
#ifndef HAVE_MINDEGREE_FORK
		0;
	itested();
#endif
	boost::minimum_degree_ordering
		(g,
		 boost::make_iterator_property_map(&degree[0], id, degree[0]),
		 &io[0],
		 &o[0],
		 boost::make_iterator_property_map(&supernode_sizes[0], id, supernode_sizes[0]),
		 0,
		 id
#ifdef HAVE_MINDEGREE_FORK
		 , ub
#endif
		);
	typename treedec::graph_traits<G>::treedec_type t;
	g = h; // restore

	int status;
#ifdef TRY_INEFFICIENT_VARIANT
	treedec::ordering_to_treedec(g, o, t ); // can kill g!
   h=g; // restore

	status = treedec::check_treedec(g,t);
	std::cout << "bagsize " << treedec::get_bagsize(t) << " status " << status <<"\n";
	std::cout << "same as bagsize! " << w <<"\n";
	assert(w == treedec::get_bagsize(t)); /// checks if BMD works!
#endif

	treedec::draft::vec_ordering_to_tree(g, o, t );

	status=treedec::check_treedec(g, t);
	if (!status) std::cout << "treedec is valid!!\n";
	std::cout << "bagsize " << treedec::get_bagsize(t) << " status " << status <<"\n";
	std::cout << "boost_minDegree_ordering said " << w << "\n";
	assert(!status);

	if(w != treedec::get_bagsize(t)){
	}
	assert(w == treedec::get_bagsize(t));


}
コード例 #4
0
ファイル: main2.cpp プロジェクト: chengkehan/lab
VOID parseXFileData(ID3DXFileData* lpXFileData, INT depth)
{
	if(lpXFileData == NULL || lpXFileData->IsReference())
	{
		return;
	}

	SIZE_T nameSize;
	CHAR* lpName;
	if(FAILED(lpXFileData->GetName(NULL, &nameSize)))
	{
		return;
	}
	lpName = new CHAR[nameSize];
	if(FAILED(lpXFileData->GetName(lpName, &nameSize)))
	{
		delete []lpName;
		return;
	}

	CHAR* lpTab = NULL;
	if(depth > 0)
	{
		lpTab = new CHAR[depth + 1];
		for (INT depthIndex = 0; depthIndex < depth; ++depthIndex)
		{
			lpTab[depthIndex] = '	';
		}
		lpTab[depth] = '\0';
	}

	GUID guid;
	if(FAILED(lpXFileData->GetType(&guid)))
	{
		delete []lpName;
		delete []lpTab;
		return;
	}

	char* tmpl = 
		guid == TID_D3DRMFrame ? "Frame" : 
		guid == TID_D3DRMFrameTransformMatrix ? "FrameTransformMatrix" : 
		guid == TID_D3DRMMeshMaterialList ? "MeshMaterialList" : 
		guid == TID_D3DRMMeshTextureCoords ? "MeshTextureCoords" : 
		guid == TID_D3DRMMeshNormals ? "MeshNormal" : 
		guid == TID_D3DRMMesh ? "Mesh" : 
		guid == TID_D3DRMMaterial ? "Material" : 
		guid == TID_D3DRMTextureFilename ? "TextureFilename" : NULL;

	trace2("%s%s", lpTab == NULL ? "" : lpTab,"---------------------------------------------------\n");
	trace3("%sname:%s, tmpl:%s\n", lpTab == NULL ? "" : lpTab, lpName, tmpl == NULL ? "" : tmpl);
	delete []lpName;
	delete []lpTab;

	SIZE_T numChildren;
	if(FAILED(lpXFileData->GetChildren(&numChildren)))
	{
		return;
	}
	for (SIZE_T i = 0; i < numChildren; ++i)
	{
		ID3DXFileData* lpXFileSubData;
		if(FAILED(lpXFileData->GetChild(i, &lpXFileSubData)))
		{
			return;
		}
		parseXFileData(lpXFileSubData, depth + 1);
		lpXFileSubData->Release();
	}
}
コード例 #5
0
ファイル: test_small_matrix.c プロジェクト: JohsBL/MobRob
	
	matrix_3x3_t m3i=inv3(m3);
	print_util_print_matrix(print_util_get_debug_stream(), m3i.v[0], 3, 3, 2); print_util_dbg_print("\n");
	
	matrix_3x3_t m3_=mmul3(m3, m3i);
	m3_=mmul3(m3, inv3(m3));
	print_util_print_matrix(print_util_get_debug_stream(), m3_.v[0], 3, 3, 2); print_util_dbg_print("\n");
	
	
	matrix_4x4_t m4={.v={{1, 2, 3, 4},{2,4,2, 4},{4,3,2,1}, {5,6,7,5}}};
	print_util_print_matrix(print_util_get_debug_stream(), m4.v[0], 4, 4, 2); print_util_dbg_print("\n");
	
	matrix_4x4_t m4t=trans4(m4);
	print_util_print_matrix(print_util_get_debug_stream(), m4t.v[0], 4, 4, 2); print_util_dbg_print("\n");
	
	matrix_4x4_t m4i=inv4(m4);
	print_util_print_matrix(print_util_get_debug_stream(), m4i.v[0], 4, 4, 2); print_util_dbg_print("\n");
	
	matrix_4x4_t m4_=mmul4(m4, m4i);
	print_util_print_matrix(print_util_get_debug_stream(), m4_.v[0], 4, 4, 2); print_util_dbg_print("\n");
	
	
	vector_3_t v1={.v={2,4,7}};
	print_util_print_matrix(print_util_get_debug_stream(), v1.v, 1, 3, 2); print_util_dbg_print("\n");
	
	print_util_dbg_print("squared Norm m3:  "); print_util_dbg_putfloat(sqr_f_norm3(m3), 4);print_util_dbg_print("\n");
	print_util_dbg_print("trace m3:         "); print_util_dbg_putfloat(trace3(m3), 4);print_util_dbg_print("\n");
	print_util_dbg_print("residual |MxM^{-1} - I| "); print_util_dbg_putfloat(sqr_f_norm3(msub3(mmul3(m3, inv3(m3)), ident_3x3)), 10);print_util_dbg_print("\n");
	
	return true;
}