예제 #1
0
void OrXmlGeom::copyPrimitiveMesh(const vector<MyPoint3D>& pts, const vector<TriFaceIndex>& tis){
	TriFaceIndex ti;
//	if(dorender){
//		int baseIndex = vispoints.size();
//		for(int i = 0; i < pts.size(); i++){
//			vispoints.push_back(pts[i]);
//		}
//		for(int i = 0; i < tis.size(); i++){
//			ti.Set(tis[i].data[0]+baseIndex, tis[i].data[1]+baseIndex, tis[i].data[2]+baseIndex);
//			visindexes.push_back(ti);
//		}
//	}else{
//		int baseIndex = colpoints.size();
//		for(int i = 0; i < pts.size(); i++){
//			colpoints.push_back(pts[i]);
//		}
//		for(int i = 0; i < tis.size(); i++){
//			ti.Set(tis[i].data[0]+baseIndex, tis[i].data[1]+baseIndex, tis[i].data[2]+baseIndex);
//			colindexes.push_back(ti);
//		}
//	}
	{
		int baseIndex = vispoints.size();
		for(int i = 0; i < pts.size(); i++){
			vispoints.push_back(pts[i]);
		}
		for(int i = 0; i < tis.size(); i++){
			ti.Set(tis[i].data[0]+baseIndex, tis[i].data[1]+baseIndex, tis[i].data[2]+baseIndex);
			visindexes.push_back(ti);
		}
	}
	{
		int baseIndex = colpoints.size();
		for(int i = 0; i < pts.size(); i++){
			colpoints.push_back(pts[i]);
		}
		for(int i = 0; i < tis.size(); i++){
			ti.Set(tis[i].data[0]+baseIndex, tis[i].data[1]+baseIndex, tis[i].data[2]+baseIndex);
			colindexes.push_back(ti);
		}
	}
}
예제 #2
0
Cylinder::Cylinder(double _radius, double _height, int _n){
	radius = _radius;
	half_height = _height/2.0;
	n = _n;
	double theta = 2*PI / (double)n;
	MyPoint3D p;
	for(int i = 0; i < n; i++){
		double angle = theta * i;
		p.Set(radius*cos(angle), 0-half_height, radius*sin(angle));
		points.push_back(p);
	}
	for(int i = 0; i < n; i++){
		double angle = theta*i;
		MyPoint3D p(radius*cos(angle), 0+half_height, radius*sin(angle));
		points.push_back(p);
	}
	TriFaceIndex fi;
	for(int i = 0 ; i < n - 2 ; i++){
		fi.Set(0,i+1,i+2);
		indexes.push_back(fi);
	}
	for(int i = 0 ; i < n - 2 ; i++){
		fi.Set(n+i+2,n+i+1,n);
		indexes.push_back(fi);
	}
	for(int i = 0; i < n-1; i++){
		fi.Set(i+n,i+1,i);
		indexes.push_back(fi);
		fi.Set(n+i,n+i+1,i+1);
		indexes.push_back(fi);
	}
	fi.Set(n+n-1,0,n-1);
	indexes.push_back(fi);
	fi.Set(n+n-1,n,0);
	indexes.push_back(fi);
}