Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

难道不是直接带公式计算? sample都过不了

Posted by javaman at 2005-06-12 14:56:20 on Problem 2107
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;

double x[52][52],y[52][52],z[52][52];


int main() {
double ax,bx,cx,dx,ex,fx,gx,hx,ix,ay,by,cy,dy,ey,fy,gy,hy,iy,az,bz,cz,dz,ez,fz,gz,hz,iz;
double vtx,vty,vtz,hu,vu,hfx,hfy,hfz,vfx,vfy,vfz,htx,hty,htz,nx,ny,nz,factor;
int xx,yy,i,j;

	while (scanf("%d%d",&xx,&yy)!=EOF) {
		for (j=0;j<yy;++j)
			for (i=0;i<xx;++i) 
				scanf("%lf%lf%lf",&x[i][j],&y[i][j],&z[i][j]);
		printf("%d\n",xx*yy);
		xx-=3;
		yy-=3;
		for (j=0;j<=yy;++j)
			for (i=0;i<=xx;++i) {
				ax=x[i][j];
				bx=x[i][j+1];
				cx=x[i][j+2];
				dx=x[i+1][j];
				ex=x[i+1][j+1];
				fx=x[i+1][j+2];
				gx=x[i+2][j];
				hx=x[i+2][j+1];
				ix=x[i+2][j+2];

				ay=y[i][j];
				by=y[i][j+1];
				cy=y[i][j+2];
				dy=y[i+1][j];
				ey=y[i+1][j+1];
				fy=y[i+1][j+2];
				gy=y[i+2][j];
				hy=y[i+2][j+1];
				iy=y[i+2][j+2];


				az=z[i][j];
				bz=z[i][j+1];
				cz=z[i][j+2];
				dz=z[i+1][j];
				ez=z[i+1][j+1];
				fz=z[i+1][j+2];
				gz=z[i+2][j];
				hz=z[i+2][j+1];
				iz=z[i+2][j+2];

				hu=(ex-dx)*(dx-fx)+(ey-dy)*(dy-fy)+(ez-dz)*(dz-fz);
				vu=(ex-bx)*(bx-hx)+(ey-by)*(by-hy)+(ez-bz)*(bz-hz);

				hfx=(dy-fy)*(ez-dz)-(dz-fz)*(ey-dy);
				hfy=(dz-fz)*(ex-dx)-(dx-fx)*(ez-dz);
				hfz=(dx-fx)*(ey-dy)-(dy-fy)*(ex-dx);

				vfx=(by-hy)*(ez-bz)-(bz-hz)*(ey-by);
				vfy=(bz-hz)*(ex-bx)-(bx-hx)*(ez-bz);
				vfz=(bx-hx)*(ey-by)-(by-hy)*(ex-bx);

				vtx=(hy-ey)*vfz-(hz-ez)*vfy-(hx-ex)*vu;
				vty=(hz-ez)*vfx-(hx-ex)*vfz-(hy-ey)*vu;
				vtz=(hx-ex)*vfz-(hy-ey)*vfx-(hz-ez)*vu;

				htx=(fy-ey)*hfz-(fz-ez)*hfy-(fx-ex)*hu;
				hty=(fz-ez)*hfx-(fx-ex)*hfz-(fy-ey)*hu;
				htz=(fx-ex)*hfy-(fy-ey)*hfx-(fz-ez)*hu;

				nx=hty*vtz-htz*vty;
				ny=htz*vtx-htx*vtz;
				nz=htx*vty-hty*vtx;

				factor=1./sqrt(nx*nx+ny*ny+nz*nz);

				printf("%.4f %.4f %.4f\n",nx*factor,ny*factor,nz*factor);
			}
	}
	return 0;
}







				
				

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator