#include	<stdio.h>
#include	<strings.h>
#include	<math.h>

#define PAI	3.14159265358979323844
#define RAG	PAI/180.0

main()
{
	double	x,y,z;

	printf("\n angle x (0`360) = ");
	scanf("%f",&x);
	printf("\n angle y (0`360) = ");
	scanf("%f",&y);
	printf("\n angle z (0`360) = ");
	scanf("%f",&z);

	zxy_matrix(x,y,z);

}



zxy_matrix(x,y,z)
double	x,y,z;
{
	double	m[3][3],cx,cy,cz,sx,sy,sz,nx,ny,nz,d;
	unsigned short	NX,NY,NZ;

	cx = cos(x);
	cy = cos(y);
	cz = cos(z);
	sx = sin(x);
	sy = sin(y);
	sz = sin(z);

	m[0][0] = cy * cz + sx * sy * sz;
	m[0][1] = (-cy) * sz + sx * sy * cz;
	m[0][2] = cx * sy;
	m[1][0] = cx * sz;
	m[1][1] = cx * cz;
	m[1][2] = (-sx);
	m[2][0] = (-sy) * cz + sx * cy * sz;
	m[2][1] = sy * sz + sx * cy * cz;
	m[2][2] = cx * cy;

	nx = m[0][0] + m[1][0] + m[2][0];
	ny = m[0][1] + m[1][1] + m[2][1];
	nz = m[0][2] + m[1][2] + m[2][2];

	d = nx * nx + ny * ny + nz * nz;
	d = sqrt(d);

	nx = nx / d;
	ny = ny / d;

	nz = 1 - (nx * nx + ny * ny);
	nz = sqrt(nz);

	printf("\n x = %f\n",nx);
	printf(" y = %f\n",ny);
	printf(" z = %f\n",nz);

	NX = nx * 0x100;
	NY = ny * 0x100;
	NZ = nz * 0x100;

	printf("\n NX,NY,NZ = %05XH,%05XH,%05XH\n",NX,NY,NZ);
}
