zoukankan      html  css  js  c++  java
  • [HOOPS]二维点向三维空间投影

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

    Taghoops                                          

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

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

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

    获取具体如下:

    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;
    }

  • 相关阅读:
    PHP中的call_user_func()与call_user_func_array()简单理解
    PHP实现多继承
    PHP实现多继承 trait 语法
    PHP几种常见魔术方法与魔术变量解析
    tp5 的nginx配置
    PHP 扩展 trie-tree, swoole过滤敏感词方案
    PHP Ajax跨域问题解决办法
    附加个人作业
    学完软工的感受
    团队介绍
  • 原文地址:https://www.cnblogs.com/aiwz/p/6333183.html
Copyright © 2011-2022 走看看