樹心幽徑

« 三角形外接圓的三尖內擺線 | Main | 20180106PC-DIY清單 »

出水山與草嶺的路
2017/12/14,16:29

typedef struct Point3D
{
    double x,y,z;
} P3D;
typedef struct Point2D
{
    double x,y;
} P2D;

 

//傳回Q在視平面的投影點座標P在視平面座標系的座標(vx,vy)
//視平面的中心點為C,法向量為N(cos(rad),sin(rad),0),原點O,y軸單位向量e2(0,0,-1),x軸單位向量e1為e2 X (-N) =(-sin(rad),cos(rad),0)
//ux為視平面x軸方向二相鄰點的距離,rx為C到y軸的水平點數
//uy為視平面y軸方向二相鄰點的距離,ry為C到x軸的垂直點數
//    O+rx*ux*e1+ry*uy*e2=C
// P=t*N+Q   t為P和Q的距
void QinView(P3D Q,P3D C,int rx,int ry,double ux,double uy,P3D N,double rad,P2D *v,double dist)
{
double t=(C.x-Q.x)*N.x+(C.y-Q.y)*N.y+(C.z-Q.z)*N.z;
P3D P;
P2D vP;
P.x=Q.x+t*N.x; P.y=Q.y+t*N.y; P.z=Q.z+t*N.z;
vP.x=rx+(t*sin(rad)+Q.y-C.y)/(ux*cos(rad));
vP.y=ry-(Q.z-C.z)/uy;
v->x=vP.x; v->y=vP.y;
dist=t;
}

 

alt

 

alt

 

alt

alt

迴響

 
Accessible and Valid XHTML 1.0 Strict and CSS Powered by LifeType