проецирование 3D в 2D
От: xmlx  
Дата: 21.09.05 16:29
Оценка:
double n_x,n_y,n_z;  //компоненты нормального вектора N к плоскости P (ед. вектор)
double x_0,y_0,z_0; // координаты точки проецируемой на плоскость P
double s_x,s_y,s_z; // координаты точки вектора N (точка S)
double l;        // расстояние от проецируемой точки до точки S
double Xp,Yp; // координаты на плоскости P
double Y_x,Y_y,Y_z; // направление оси Y на плоскости P (ед. вектор)
double vx,vy,vz,vl;
double cf_a=0.001;

// проецирование на плоскость
// точка с коорд. (x0,y0,z0) в точку на плоскости (Xp,Yp)
void 3Dto2D()
{l=fabs(n_x*(x_0-s_x)+n_y*(y_0-s_y)+n_z*(z_0-s_z));
 vx=x_0-s_x-n_x*l;
 vy=y_0-s_y-n_y*l;
 vz=z_0-s_z-n_z*l;
 vl=sqrt(vx*vx+vy*vy+vz*vz);
 vx=vx/(cf_a*l);
 vy=vy/(cf_a*l);
 vz=vz/(cf_a*l);
 Yp=vx*Y_x + vy*Y_y + vz*Y_z;
 Xp=vx*(n_y*Y_z-n_z*Y_y)+vy*(n_z*Y_x-n_x*Y_z)+vz*(n_x*Y_y-n_y*Y_x);
};


кто-нибудь знает лучший алгоритм?

мой email
xmlx2005@goolook.ru
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.