| Current Path : /var/www/html/venkat/check3/file/cg2013/pawan/ |
| Current File : /var/www/html/venkat/check3/file/cg2013/pawan/iit2013183.cpp |
#include <iostream>
#include<cmath>
//#include <GL/glut.h>
//#include <cmath>
//#include<GL/gl.h>
//#include<GL/glu.h>
//#include<GL/glut.h>
#define Np 1000
using namespace std;
double ans[3][3];
int n = 4;
double polygon[1000][4];
double line_s[20][4];
double line_e[20][4];
double line2_s[20][4];
double line2_e[20][4];
double polygon1[1000][4];
double line_s1[20][4];
double line_e1[20][4];
double line2_s1[20][4];
double line2_e1[20][4];
void func(double ans[4], double matrix[][4], double p[4]){
for(int i = 0; i < 4; i++){
double a = 0.0;
for(int j = 0; j < 4; j++){
a += (matrix[i][j]*p[j]);
}
ans[i] = a;
}
}
int main (){
polygon[0][0] = -100, polygon[0][1] = 700, polygon[0][2] = 0, polygon[0][3] = 1;;
polygon[1][0] = -100, polygon[1][1] = 500, polygon[1][2] = 0, polygon[1][3] = 1;
polygon[2][0] = 100, polygon[2][1] = 500, polygon[2][2] = 0, polygon[2][3] = 1;
polygon[3][0] = 100, polygon[3][1] = 700, polygon[3][2] = 0, polygon[3][3] = 1;
line_s[0][0] =-50 , line_s[0][1] = 0;
line_e[0][0] = -50 , line_e[0][1] = 500;
line_s[1][0] =-150 , line_s[1][1] = 0;
line_e[1][0] = -500 , line_e[1][1] = 400;
line_s[2][0] =-500 , line_s[2][1] = 400;
line_e[2][0] = -100 , line_e[2][1] = 700;
line_s[3][0] =-50 , line_s[3][1] = 0;
line_e[3][0] = -400 , line_e[3][1] = 400;
int as,df,gf;
line_s[4][0] =-400 , line_s[4][1] = 400;
line_e[4][0] = -100 , line_e[4][1] = 600;
for(int i = 0; i < 10; i++){
line_s[i][2] = 0;
line_e[i][2] = 0;
line_s[i][3] = 1;
line_e[i][3] = 1;
}
double rotate[4][4];
double tran[4][4];
for(int i = 0; i < 4; i++){
for(int j = 0; j < 4; j++){
if(i == j){
rotate[i][j] = 1;
tran[i][j] = 1;
}else{
rotate[i][j] = 0;
tran[i][j] = 0;
}
}
}
double ang = -1.0*(asin(1)-atan(.1));
rotate[1][1] = cos(ang);
rotate[1][2] = -sin(ang);
rotate[2][1] = sin(ang);
rotate[2][2] = cos(ang);
func(polygon1[0], rotate, polygon[0]);
func(polygon1[1], rotate, polygon[1]);
func(polygon1[2], rotate, polygon[2]);
func(polygon1[3], rotate, polygon[3]);
for(int i = 0; i < 5; i++){
func(line_s1[i], rotate, line_s[i]);
func(line_e1[i], rotate, line_e[i]);
}
double t = sqrt(10100.0);
tran[2][3] = t;
func(polygon[0], tran, polygon1[0]);
func(polygon[1], tran, polygon1[1]);
func(polygon[2], tran, polygon1[2]);
func(polygon[3], tran, polygon1[3]);
for(int i = 0; i < 5; i++){
func(line_s[i], tran, line_s1[i]);
func(line_e[i], tran, line_e1[i]);
}
for(int i = 0; i < 5; i++){
for(int j = 0; j <= 2; j++){
line_s[i][j] = (line_s[i][j]*10.0)/line_s[i][2];
line_e[i][j] = (line_e[i][j]*10.0)/line_e[i][2];
}
}
for(int i = 0; i <= 3; i++){
for(int j = 0; j <=2; j++){
polygon[i][j] = (polygon[i][j]*10.0)/polygon[i][2];
}
}
for(int i = 0; i <= 3; i++){
cout << int(polygon[i][0]+.5) << " "<< int(polygon[i][1]+.5) << " "<<int(polygon[i][2]+.5);
cout << endl;
}
for(int i = 0; i < 5; i++){
cout << int(line_s[i][0]+.5) << " "<<int(line_s[i][1]+.5) << " " <<int(line_s[i][2]+.5);
cout << endl;
cout << int(line_e[i][0]+.5) << " "<<int(line_e[i][1]+.5) << " "<<int(line_e[i][2]+.5);
cout << endl;
}
return 0;
}