| Current Path : /var/www/html/venkat/check3/file/cg2013/pawan/ |
| 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;
}