コード例 #1
0
ファイル: main.cpp プロジェクト: BeatTheBuzzer/CS5237
void readFile(){

	string line_noStr;

	string line;   // each line of the file
	string command;// the command of each line
	string numberStr; // for single LongInt operation
	string outputAns = "Answer of your computation"; // the answer you computed

	ifstream inputFile("input.txt",ios::in);

	int delay=0;
	const int largeCoor=5000;

	myPointSet.eraseAllPoints();
	myTrist.eraseAllTris();
	noIPTrist.eraseAllTris();

	myPointSet.addPoint(-largeCoor,largeCoor/2);
	myPointSet.addPoint(largeCoor,largeCoor/2);
	myPointSet.addPoint(0,-largeCoor/2);
	myTrist.makeTri(1,2,3);
	if(inputFile.fail()){
		cerr << "Error: Cannot read input file \"" << "input.txt" << "\"";
		return;
	}

	while(inputFile.good()){

		getline(inputFile,line);
		if(line.empty()) {
			command = "";
			continue; 
		}// in case the line has nothing in it

		stringstream linestream(line);

		linestream >> line_noStr;
		linestream >> command;         // get the command
		if (delay>0)
			Sleep(delay);

		if(!command.compare("AP")){
			linestream >> numberStr;
			LongInt p1 = LongInt::LongInt(numberStr.c_str());

			linestream >> numberStr;
			LongInt p2 = LongInt::LongInt(numberStr.c_str());

			int output = myPointSet.addPoint(p1, p2);
		}
		else if(!command.compare("OT")){
コード例 #2
0
TEST(PointSetTest, InCircleTrivialOutside) {
	PointSetArray pointSet;

	int p1 = pointSet.addPoint(0,   0);
	int p2 = pointSet.addPoint(100, 0);
	// int p3 = pointSet.addPoint(100, 100);
	int p4 = pointSet.addPoint(0, 100);

	// int p5 = pointSet.addPoint(50, 50);
	int p6 = pointSet.addPoint(2000, 2000);

	// (200,200) is *outside* the circum-circle of <p1,p2,p4>
	EXPECT_EQ(-1, pointSet.inCircle(p1, p2, p4, p6));
}
コード例 #3
0
TEST(PointSetTest, InCircleTrivialWithin) {
	PointSetArray pointSet;

	int p1 = pointSet.addPoint(0,   0);
	int p2 = pointSet.addPoint(100, 0);
	// int p3 = pointSet.addPoint(100, 100);
	int p4 = pointSet.addPoint(0, 100);

	int p5 = pointSet.addPoint(50, 50);
	// int p6 = pointSet.addPoint(2000, 2000);

	// (50,50) is *within* the circum-circle of <p1,p2,p4>
	EXPECT_EQ(1, pointSet.inCircle(p1, p2, p4, p5));
}
コード例 #4
0
// Delaunay algorithm breaking, e.g. of invalid:
//  1. (374,112)
//  2. (-6514,-2005)
//  3. (128,6768)
//  4. (147,376)
TEST(PointSetTest, InCircleOutsideDelaunayLegal) {
	PointSetArray pointSet;

	// abd is a tri, as is dbc.
	// abd doesn't contain c,
	// dbc doesn't contain a
	int p1 = pointSet.addPoint(374, 112);
	int p2 = pointSet.addPoint(-6514, -2005);
	int p3 = pointSet.addPoint(128, 6768);
	int p4 = pointSet.addPoint(147, 376);

	// Both triangles legal.
	EXPECT_EQ(-1, pointSet.inCircle(p1, p2, p4, p3));
	EXPECT_EQ(-1, pointSet.inCircle(p4, p2, p3, p1));
}
コード例 #5
0
// Delaunay algorithm breaking, e.g. of invalid:
//  1. (425,342)
//  2. (306,57)
//  3. (120,31)
//  4. (396,483)
//  *both* abd, dbc are illegal
TEST(PointSetTest, InCircleOutsideDelaunayIllegal) {
	PointSetArray pointSet;

	// abd is a tri, as is dbc.
	// abd doesn't contain c,
	// dbc doesn't contain a
	int p1 = pointSet.addPoint(425, 342);
	int p2 = pointSet.addPoint(306, 57);
	int p3 = pointSet.addPoint(120, 31);
	int p4 = pointSet.addPoint(396, 483);

	// Both triangles illegal. (i.e. contains point)
	EXPECT_EQ(1, pointSet.inCircle(p1, p2, p4, p3));
	EXPECT_EQ(1, pointSet.inCircle(p4, p2, p3, p1));
}
コード例 #6
0
ファイル: main.cpp プロジェクト: BeatTheBuzzer/CS5237
bool IPhelper(Trist &tri1, int x, int y, bool readfile){
	int i,a,b,c,d, triangleIdx1, triangleIdx2, triangleIdx3;
	MyPoint pd;
	//cout<<x<<endl;cout<<y<<endl;
	x=x/scale[nowS];
	y=y/scale[nowS];
	pd.x=LongInt(x);
	pd.y=LongInt(y);
	d=myPointSet.addPoint(LongInt(x),LongInt(y));

	for (i=1;i<=tri1.noTri();i++){
		tri1.getVertexIdx(i<<3,a,b,c);
		if (myPointSet.inTri(a,b,c,pd)>0){				
			vec.push_back(d);
			if(readfile){
				tri1.delTri(i<<3);
				triangleIdx1 = tri1.makeTri(a,b,d);
				triangleIdx2 = tri1.makeTri(b,c,d);
				triangleIdx3 = tri1.makeTri(a,c,d);
				legalizeEdge(tri1,d,a,b, triangleIdx1);			
				legalizeEdge(tri1,d,b,c, triangleIdx2);
				legalizeEdge(tri1,d,a,c, triangleIdx3);
			}
			return 1;
		}
	}
	return 0;
}
コード例 #7
0
TEST(PointSetTest, PointSetInTriSimple) {
	PointSetArray ps;

	int p1 = ps.addPoint(0, 0);   // 1
	int p2 = ps.addPoint(0, 4);   // 2
	int p3 = ps.addPoint(4, 0);   // 3
	int p4 = ps.addPoint(4, 4);   // 4
	int p5 = ps.addPoint(1, 1);   // 5

	// (1, 1) IS in tri 123
	EXPECT_EQ(1, ps.inTri(p1, p2, p3, p5));

	// (1, 1) IS in tri 124
	EXPECT_EQ(0, ps.inTri(p1, p2, p4, p5));

	// (1, 1) IS NOT in tri 234
	EXPECT_EQ(-1, ps.inTri(p2, p3, p4, p5));
}