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/RIT2013012_1.cpp

#include<iostream>
#include<cstdio>
#include<limits.h>
#include<math.h>
#include<cmath>
#include<algorithm>
#include<utility>
#include<set>
#include<bits/stdc++.h>

#define pi 3.14159265
using namespace std;
int len = 0;
double arr2[100][100]={0};
double arr1[100][100]={0};
double ans[100][100]={0};
double result[100][3],res1[100][3];
void perProj(double x,double y,double z,double d);
void matMultiply(int n1,int n2,int n3);


void perProj(double x,double y,double z,double d){
	memset(arr2,0,sizeof(arr2));
	arr2[0][0] = 1;
	arr2[1][1] = 1;
	arr2[2][2] = 1;
	arr2[3][2] = 1/d;
	arr1[0][0] = x;
	arr1[1][0] = y;
	arr1[2][0] = z;
	arr1[3][0] = 1;
	
	matMultiply(4,4,1);
	
	double a1 = ans[0][0];
	double a2 = ans[1][0];
	double a3 = ans[2][0];
	if(ans[3][0]!=0)
	{
	 a1 =  ans[3][0]!=0?ans[0][0]/ans[3][0]:ans[0][0];
	 a2 = ans[3][0]!=0?ans[1][0]/ans[3][0]:ans[1][0];
	 a3 = ans[3][0]!=0?ans[2][0]/ans[3][0]:ans[2][0];
	}
	printf("%d %d %d\n",(int)(a1 + 0.5),(int)(a2+0.5),(int)(a3+0.5));
}

void matMultiply(int n1,int n2,int n3){ 
memset(ans,0,sizeof(ans));
for(int i = 0; i < n1; i++){
	for(int j = 0; j < n3; j++){
		for(int k = 0; k < n2; k++){
			ans[i][j] += arr2[i][k]*arr1[k][j];
		}
	}
}
 
}

void rotate3D(double x,double y,double z,double te){
double cosine = cos(te);
double sine = sin(te);
memset(arr2,0,sizeof(arr2));
arr2[0][0] = 1;
arr2[1][1] = cosine;
arr2[1][2] = (-1)*sine;
arr2[2][1] = sine;
arr2[2][2] = cosine;
arr2[3][3] = 1;
arr1[0][0] = x;
arr1[1][0] = y;
arr1[2][0] = z;
arr1[3][0] = 1;
matMultiply(4,4,1);
result[len][0] = ans[0][0];
result[len][1] = ans[1][0];
result[len][2] = ans[2][0];
len++;
}
 
int main() {
double xCoord[24] = {-100,-100,100,100,-50,-50,-150,-500,-500,-100,-50,-400,-400,-100,50,50,150,500,500,100,50,400,400,100};
double yCoord[24] = {700,500,700,500,0,500,0,400,400,700,0,400,400,600,0,500,0,400,400,700,0,400,400,600};
double zCoord[24] = {0.0};
for(int i = 0 ; i < 24; i++) {
	yCoord[i] =  yCoord[i] + 100;
	zCoord[i] = zCoord[i] -10;
}
for(int i = 0; i < 24; i++) {
	rotate3D(xCoord[i],yCoord[i],zCoord[i],(3.14159/2)-atan(0.1));
	perProj(result[i][0],result[i][1],result[i][2],10);
}
return 0;

}