sphere.cpp vector3.h vector3.cpp(暂存)
#include <iostream.h>
#include <math.h>
#include "vector3.h"
#define PI 3.1415926
int main()
{
return 1;
}
vector3 b0,b2,b1;
void GetXZY(float t0,float x,float y,float z)
{
const double angle00=0.0;
const double angle01=0.0;
const double angle10=PI/6;
const double angle11=PI/3;
b0.x=cos(angle00);
b0.y=sin(angle00) * cos(angle01);
b0.z=sin(angle00) * sin(angle01);
b2.x=cos(angle10);
b2.y=sin(angle10) * cos(angle11);
b2.z=sin(angle10) * sin(angle11);
cout<<b0.x<<" "<<b0.y<<" "<<b0.z<<" "<<endl;
cout<<b2.x<<" "<<b2.y<<" "<<b2.z<<" "<<endl;
float ccos,ssin,ssin2,ttg;
ccos=vector3::Magnitude(b0+b2)/2;
ssin=sqrt(1.0-ccos);
ssin2=2.0*ccos*ssin;
cout<<ccos<<endl;
ttg=ssin/ccos;
float k=0;
float t=3*PI/2;
k=ttg*sin(t)/cos(t);
vector3 b11,b22,b33;
b11=(b0+b2)/(2.0*ccos*ccos);
b22=vector3::cross(b0,b2);
b33=b22*k;
b1=b11+b33/(ssin2);
float w;
// w=ssin/(sqrt(k*k+ttg*ttg));
w=ccos*cos(t);
float xt,yt,zt;
xt=(b0.x*(1-t0)*(1-t0)+b1.x*w*2.0*t0*(1-t0)+b2.x*t0*t0)/(t0*t0+w*2.0*t0*(1-t0)+(1-t0)*(1-t0));
yt=(b0.y*(1-t0)*(1-t0)+b1.y*w*2.0*t0*(1-t0)+b2.y*t0*t0)/(t0*t0+w*2.0*t0*(1-t0)+(1-t0)*(1-t0));
zt=(b0.z*(1-t0)*(1-t0)+b1.z*w*2.0*t0*(1-t0)+b2.z*t0*t0)/(t0*t0+w*2.0*t0*(1-t0)+(1-t0)*(1-t0));
float xtDao,ytDao,ztDao;
xtDao=((t0*t0+w*2.0*t0*(1-t0)+(1-t0)*(1-t0)) * (-2.0*(1-t0)*b0.x+2.0*b1.x*w*(1.0-2*t)+2.0*t0*b2.x)-(b0.x*(1-t0)*(1-t0)+b1.x*w*2.0*t0*(1-t0)+b2.x*t0*t0)*(-2.0*(1-t0)+2.0*w*(1.0-2.0*t0)+2.0*t0))/(t0*t0+w*2.0*t0*(1-t0)+(1-t0)*(1-t0))*(t0*t0+w*2.0*t0*(1-t0)+(1-t0)*(1-t0));
ytDao=((t0*t0+w*2.0*t0*(1-t0)+(1-t0)*(1-t0)) * (-2.0*(1-t0)*b0.y+2.0*b1.y*w*(1.0-2*t)+2.0*t0*b2.y)-(b0.y*(1-t0)*(1-t0)+b1.y*w*2.0*t0*(1-t0)+b2.y*t0*t0)*(-2.0*(1-t0)+2.0*w*(1.0-2.0*t0)+2.0*t0))/(t0*t0+w*2.0*t0*(1-t0)+(1-t0)*(1-t0))*(t0*t0+w*2.0*t0*(1-t0)+(1-t0)*(1-t0));
ztDao=((t0*t0+w*2.0*t0*(1-t0)+(1-t0)*(1-t0)) * (-2.0*(1-t0)*b0.z+2.0*b1.z*w*(1.0-2*t)+2.0*t0*b2.z)-(b0.z*(1-t0)*(1-t0)+b1.z*w*2.0*t0*(1-t0)+b2.z*t0*t0)*(-2.0*(1-t0)+2.0*w*(1.0-2.0*t0)+2.0*t0))/(t0*t0+w*2.0*t0*(1-t0)+(1-t0)*(1-t0))*(t0*t0+w*2.0*t0*(1-t0)+(1-t0)*(1-t0));
float u,v;
u=cos(d);
v=xt*xtDao+yt*ytDao+zt*ztDao;
float a0,a1,a2;
a0=yt*xtDao-ytDao*xt;
a1=zt*xtDao-ztDao*xt;
a3=u*xtDao-v*xt;
}
// vector3.cpp: implementation of the vector3 class.
//
//////////////////////////////////////////////////////////////////////
#include "vector3.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
vector3::vector3()
{
}
vector3::~vector3()
{
}
vector3::vector3(float X,float Y,float Z)
{
x=X;
y=Y;
z=Z;
}
vector3 vector3::operator+(vector3 vec)
{
return vector3(vec.x+x,vec.y+y,vec.z+z);
}
vector3 vector3::operator/(float num)
{
return vector3(x/num,y/num,z/num);
}
vector3 vector3::operator *(float num)
{
return vector3(x*num,y*num,z*num);
}
vector3 vector3::operator -(vector3 vec)
{
return vector3(x-vec.x,y-vec.y,z-vec.z);
}
// vector3.h: interface for the vector3 class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_VECTOR3_H__9D307D56_CFF5_4D76_9106_196D2ACCE855__INCLUDED_)
#define AFX_VECTOR3_H__9D307D56_CFF5_4D76_9106_196D2ACCE855__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <math.h>
class vector3
{
public:
vector3();
virtual ~vector3();
vector3(float X,float Y,float Z);
vector3 operator+(vector3 vec);
vector3 operator/(float num);
vector3 operator*(float num);
vector3 operator-(vector3 vec);
static inline float Magnitude(vector3 vNormal)
{
return (float)sqrt((vNormal.x*vNormal.x)+(vNormal.y*vNormal.y)+(vNormal.z*vNormal.z));
}
static inline vector3 cross(vector3 vec1,vector3 vec2)
{
vector3 vNormal;
vNormal.x=vec1.y*vec2.z-vec1.z*vec2.y;
vNormal.y=vec1.z*vec2.x-vec1.x*vec2.z;
vNormal.z=vec1.x*vec2.y-vec1.y*vec2.x;
return vNormal;
}
public:
float x,y,z;
};
#endif // !defined(AFX_VECTOR3_H__9D307D56_CFF5_4D76_9106_196D2ACCE855__INCLUDED_)
浙公网安备 33010602011771号