Your IP : 216.73.216.40


Current Path : /var/www/html/venkat/check3/file/cg2013/pawan/
Upload File :
Current File : /var/www/html/venkat/check3/file/cg2013/pawan/iit2013067.cpp

#include <bits/stdc++.h>

using namespace std;

double final_points[3][3];
int n = 4;
double verticex[1000][5];
double ref_vertx_s[20][4];
double ref_vertx_e[20][4];
double line1[20][4];
double line1_end[20][4];

double newvertx[1000][4];
double rot_vers[20][4];
double rot_vere[20][4];
double line2[20][4];
double line2_end[20][4];

void percept(double final_points[4], double matx[][4], double point[4]){
	for(int i = 0; i < 4; i++){
		double d = 0.0;
		for(int j = 0; j < 4; j++){
			d += (matx[i][j]*point[j]);
		}
		final_points[i] = d;
	}
}


int main (){

	verticex[0][0] = -100, verticex[0][1] = 700, verticex[0][2] = 0, verticex[0][3] = 1;;
	verticex[1][0] = -100, verticex[1][1] = 500, verticex[1][2] = 0, verticex[1][3] = 1;
	verticex[2][0] = 100, verticex[2][1] = 500, verticex[2][2] = 0, verticex[2][3] = 1;
	verticex[3][0] = 100, verticex[3][1] = 700, verticex[3][2] = 0, verticex[3][3] = 1;

	ref_vertx_s[5][0] =50  , ref_vertx_s[5][1] = 0;
	ref_vertx_e[5][0] = 50 , ref_vertx_e[5][1] = 500;

	ref_vertx_s[6][0] =150  , ref_vertx_s[6][1] = 0;
	ref_vertx_e[6][0] = 500 , ref_vertx_e[6][1] = 400;

	ref_vertx_s[7][0] =500  , ref_vertx_s[7][1] = 400;
	ref_vertx_e[7][0] = 100 , ref_vertx_e[7][1] = 700;

	ref_vertx_s[8][0] = 50  , ref_vertx_s[8][1] = 0;
	ref_vertx_e[8][0] = 400 , ref_vertx_e[8][1] = 400;

	ref_vertx_s[9][0] = 400  , ref_vertx_s[9][1] = 400;
	ref_vertx_e[9][0] = 100 , ref_vertx_e[9][1] = 600;

    ref_vertx_s[0][0] = -50  , ref_vertx_s[0][1] = 0;
	ref_vertx_e[0][0] = -50 , ref_vertx_e[0][1] = 500;

	ref_vertx_s[1][0] = -150  , ref_vertx_s[1][1] = 0;
	ref_vertx_e[1][0] = -500 , ref_vertx_e[1][1] = 400;

	ref_vertx_s[2][0] = -500  , ref_vertx_s[2][1] = 400;
	ref_vertx_e[2][0] = -100 , ref_vertx_e[2][1] = 700;

	ref_vertx_s[3][0] = -50  , ref_vertx_s[3][1] = 0;
	ref_vertx_e[3][0] = -400 , ref_vertx_e[3][1] = 400;

	ref_vertx_s[4][0] = -400  , ref_vertx_s[4][1] = 400;
	ref_vertx_e[4][0] = -100 , ref_vertx_e[4][1] = 600;

        for(int i = 0; i < 10; i++){
            ref_vertx_s[i][2] = 0;
            ref_vertx_e[i][2] = 0;
            ref_vertx_s[i][3] = 1;
            ref_vertx_e[i][3] = 1;
        }

	double mat_rot[4][4];
	double mat_tran[4][4];
	for(int i = 0; i < 4; i++){
		for(int j = 0; j < 4; j++){
			if(i == j){
				mat_rot[i][j] = 1;
				mat_tran[i][j] = 1;
			}else{
				mat_rot[i][j] = 0;
				mat_tran[i][j] = 0;
			}
		}
	}
	double angle = -1.0*(asin(1)-atan(.1));
	mat_rot[1][1] = cos(angle);
	mat_rot[1][2] = -sin(angle);
	mat_rot[2][1] = sin(angle);
	mat_rot[2][2] = cos(angle);

	percept(newvertx[0], mat_rot, verticex[0]);
	percept(newvertx[1], mat_rot, verticex[1]);
	percept(newvertx[2], mat_rot, verticex[2]);
	percept(newvertx[3], mat_rot, verticex[3]);

	for(int i = 0; i < 10; i++){
		percept(rot_vers[i], mat_rot, ref_vertx_s[i]);
		percept(rot_vere[i], mat_rot, ref_vertx_e[i]);
	}

 	double t = sqrt(10100.0);
	mat_tran[2][3] = t;
	percept(verticex[0], mat_tran, newvertx[0]);
	percept(verticex[1], mat_tran, newvertx[1]);
	percept(verticex[2], mat_tran, newvertx[2]);
	percept(verticex[3], mat_tran, newvertx[3]);

	for(int i = 0; i < 10; i++){
		percept(ref_vertx_s[i], mat_tran, rot_vers[i]);
		percept(ref_vertx_e[i], mat_tran, rot_vere[i]);
	}

	for(int i = 0; i < 10; i++){
        for(int j = 0; j <= 2; j++){
            ref_vertx_s[i][j] = (ref_vertx_s[i][j]*10.0)/ref_vertx_s[i][2];
            ref_vertx_e[i][j] = (ref_vertx_e[i][j]*10.0)/ref_vertx_e[i][2];
        }
	}

	for(int i = 0; i <= 3; i++){
        for(int j = 0; j <=2; j++){
            verticex[i][j] = (verticex[i][j]*10.0)/verticex[i][2];
        }
	}

	for(int i = 0; i <= 3; i++){
        cout << int(verticex[i][0]+.5) << " "<< int(verticex[i][1]+.5) << " "<<int(verticex[i][2]+.5);
        cout << endl;
	}
		for(int i = 0; i < 10; i++){
            cout << int(ref_vertx_s[i][0]+.5) << " "<<int(ref_vertx_s[i][1]+.5) << " " <<int(ref_vertx_s[i][2]+.5);
            cout << endl;
            cout << int(ref_vertx_e[i][0]+.5) << " "<<int(ref_vertx_e[i][1]+.5) << " "<<int(ref_vertx_e[i][2]+.5);
            cout << endl;
	}

        return 0;
}