| Current Path : /var/www/html/venkat/check3/file/cg2013/pawan/ |
| Current File : /var/www/html/venkat/check3/file/cg2013/pawan/ISM2013004_1.cpp |
#include <iostream>
#include<cmath>
#define Np 1000
using namespace std;
double ans[3][3];
int n = 4;
double square[1000][4];
double ray_s[20][4];
double ray_e[20][4];
double ray2_s[20][4];
double ray2_e[20][4];
double square1[1000][4];
double ray_s1[20][4];
double ray_e1[20][4];
double ray2_s1[20][4];
double ray2_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 (){
square[0][0] = -100, square[0][1] = 700, square[0][2] = 0, square[0][3] = 1;;
square[1][0] = -100, square[1][1] = 500, square[1][2] = 0, square[1][3] = 1;
square[2][0] = 100, square[2][1] = 500, square[2][2] = 0, square[2][3] = 1;
square[3][0] = 100, square[3][1] = 700, square[3][2] = 0, square[3][3] = 1;
ray_s[0][0] =-50 , ray_s[0][1] = 0;
ray_e[0][0] = -50 , ray_e[0][1] = 500;
ray_s[1][0] =-150 , ray_s[1][1] = 0;
ray_e[1][0] = -500 , ray_e[1][1] = 400;
ray_s[2][0] =-500 , ray_s[2][1] = 400;
ray_e[2][0] = -100 , ray_e[2][1] = 700;
ray_s[3][0] =-50 , ray_s[3][1] = 0;
ray_e[3][0] = -400 , ray_e[3][1] = 400;
ray_s[4][0] =-400 , ray_s[4][1] = 400;
ray_e[4][0] = -100 , ray_e[4][1] = 600;
for(int i = 0; i < 10; i++){
ray_s[i][2] = 0;
ray_e[i][2] = 0;
ray_s[i][3] = 1;
ray_e[i][3] = 1;
}
double doRotate[4][4];
double tran[4][4];
for(int i = 0; i < 4; i++){
for(int j = 0; j < 4; j++){
if(i == j){
doRotate[i][j] = 1;
tran[i][j] = 1;
}else{
doRotate[i][j] = 0;
tran[i][j] = 0;
}
}
}
double ang = -1.0*(asin(1)-atan(.1));
doRotate[1][1] = cos(ang);
doRotate[1][2] = -sin(ang);
doRotate[2][1] = sin(ang);
doRotate[2][2] = cos(ang);
func(square1[0], doRotate, square[0]);
func(square1[1], doRotate, square[1]);
func(square1[2], doRotate, square[2]);
func(square1[3], doRotate, square[3]);
for(int i = 0; i < 5; i++){
func(ray_s1[i], doRotate, ray_s[i]);
func(ray_e1[i], doRotate, ray_e[i]);
}
double t = sqrt(10100.0);
tran[2][3] = t;
func(square[0], tran, square1[0]);
func(square[1], tran, square1[1]);
func(square[2], tran, square1[2]);
func(square[3], tran, square1[3]);
for(int i = 0; i < 5; i++){
func(ray_s[i], tran, ray_s1[i]);
func(ray_e[i], tran, ray_e1[i]);
}
for(int i = 0; i < 5; i++){
for(int j = 0; j <= 2; j++){
ray_s[i][j] = (ray_s[i][j]*10.0)/ray_s[i][2];
ray_e[i][j] = (ray_e[i][j]*10.0)/ray_e[i][2];
}
}
for(int i = 0; i <= 3; i++){
for(int j = 0; j <=2; j++){
square[i][j] = (square[i][j]*10.0)/square[i][2];
}
}
for(int i = 0; i <= 3; i++){
cout << int(square[i][0]+.5) << " "<< int(square[i][1]+.5) << " "<<int(square[i][2]+.5);
cout << endl;
}
for(int i = 0; i < 5; i++){
cout << int(ray_s[i][0]+.5) << " "<<int(ray_s[i][1]+.5) << " " <<int(ray_s[i][2]+.5);
cout << endl;
cout << int(ray_e[i][0]+.5) << " "<<int(ray_e[i][1]+.5) << " "<<int(ray_e[i][2]+.5);
cout << endl;
}
return 0;
}