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

  • 相关阅读:
    mogodb学习
    rman list incarnation
    Java创建对象的四种方式
    JAVA 8 函数式接口--Consumer
    Linux中VIM的使用
    JRE 和 JDK 的区别
    tengine-2.3.1 增加ngx_http_upstream_check_module 模块
    k8s的coredns 增加外部dns解析记录
    Dockerfile的CMD总结
    redis数据转移随笔
  • 原文地址:https://www.cnblogs.com/aiwz/p/6333183.html
Copyright © 2011-2022 走看看