[HOOPS]二维点向三维空间投影

王朝other·作者佚名  2006-01-10
宽屏版  字体: |||超大  

[HOOPS]二维点向三维空间投影Tag: hoops

当鼠标移动的时候,产生的是屏幕坐标的变化。

若是要使得三维空间选中的某个体/面/线也随着移动,就需要将二维点向三维空间投影。

投影时候需要被投向的面的信息:点+面法线

获取具体如下:

HPoint _Compute_Proj_Point(const SPAposition& plane_pt,

const SPAunit_vector& plane_v,HEventInfo& event)

{

HC_KEY key = event.GetView()->GetSceneKey();

HPoint new_pos = event.GetMouseWorldPos();

float x,y,z;

float tx,ty,tz;

HC_Open_Segment_By_Key(key);

{

HC_Show_Net_Camera_Position(&x,&y,&z);

HC_Show_Net_Camera_Target(&tx,&ty,&tz);

}

HC_Close_Segment();

//获取camera的方向 ,即射线的方向

SPAposition line_point(new_pos.x,new_pos.y,new_pos.z);

SPAvector line_vector(tx-x,ty-y,tz-z);

SPAposition intersect;

double line_param;

HPoint result(0,0,0);

//线面交点

if (intersect_line_plane(line_point,line_vector,plane_pt,plane_v,

line_param,intersect)==1)

{

result.x = (float)intersect.x();

result.y = (float)intersect.y();

result.z = (float)intersect.z();

}

return result;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有