当前位置: 首页 > wzjs >正文

海外网站哪个最好外贸推广代理

海外网站哪个最好,外贸推广代理,2017学脚本语言做网站,上海地铁最新公告本文主要介绍将屏幕上的二维坐标转换为三维空间中的一个点,该点位于 近 平面上(即 Z 坐标为 -1)。 一、步骤概述 屏幕坐标到标准化设备坐标 (NDC): 将屏幕坐标 (x, y) 转换为 NDC 坐标系。NDC 到相机空间: 使用逆投影矩阵将 NDC 坐标转换到相…

本文主要介绍将屏幕上的二维坐标转换为三维空间中的一个点,该点位于 近 平面上(即 Z 坐标为 -1)。

一、步骤概述

  1. 屏幕坐标到标准化设备坐标 (NDC): 将屏幕坐标 (x, y) 转换为 NDC 坐标系。
  2. NDC 到相机空间: 使用逆投影矩阵将 NDC 坐标转换到相机空间。
  3. 相机空间到世界空间: 使用逆视图矩阵将相机空间坐标转换到世界空间。

二、详细步骤

1. 屏幕坐标到标准化设备坐标 (NDC)

首先,假设 screenX, screenY 是屏幕空间中的像素坐标,screenW, screenH 是屏幕的宽度和高度。我们可以将屏幕坐标转换为标准化设备坐标:

float ndc_x = (2.0f * screenX) / screenW - 1.0f;  // 将x坐标映射到 [-1, 1]
float ndc_y = 1.0f - (2.0f * screenY) / screenH;  // 将y坐标映射到 [-1, 1],y轴翻转
  • screenXscreenY: 屏幕空间坐标
  • screenWscreenH: 屏幕的宽度和高度
  • ndc_xndc_y: 转换后的 NDC 坐标,范围为 [-1, 1]

2. 从 NDC 到相机空间

假设 z 值为 -1,即该点在近平面上的位置。我们需要通过逆投影矩阵将 NDC 坐标转换到相机空间。

逆投影矩阵是投影矩阵的反向操作。如果我们有一个标准的投影矩阵 P,你可以用它的逆矩阵 P^-1 来将 NDC 坐标恢复到相机空间。假设 z 值为 -1,NDC 坐标为 (ndc_x, ndc_y),那么可以通过以下方式得到相机空间中的坐标:

// 2. Crop spatial coordinates
glm::vec4 clip_coords(ndc_x, ndc_y, -1.0f, 1.0f);// z = -1 => near-plane
// 3. View space coordinates
glm::mat4 P_inv = glm::inverse(projectionMatrix);// to turn clip-space to view-space
glm::vec4 view_coords = P_inv * clip_coords;

得到的 view_coords 是相机空间中的坐标,通常需要进行透视除法,即将 x, y, z 坐标通过 w 分量进行归一化:

view_coords /= view_coords.w;// convert to non-homogeneous coordinates, get real view-space coordinates

3. 从相机空间到世界空间

最后,使用逆视图矩阵将相机空间坐标转换为世界空间坐标。V_inv 是视图矩阵的逆矩阵,转换公式如下:

	glm::mat4 V_inv = glm::inverse(viewMatrix);// to turn view-space to world-spaceglm::vec3 world_coords = glm::vec3(V_inv * view_coords);

最终代码实现如下:

glm::vec3 mapTo3DXZPlane(int screenX, int screenY, int screenW, int screenH, const glm::mat4& viewMatrix, const glm::mat4& projectionMatrix) {// 1. Normalized Device Coordinates (NDC:[-1,1], bottom-left=(-1,-1), top-right=(1,1))float ndc_x = (2.0f * screenX) / screenW - 1.0f;// Screen[0,screenW] map to NDC[-1,1]float ndc_y = 1.0f - (2.0f * screenY) / screenH;// Screen[0,screenH] map to NDC[1,-1] (openGL Y is up, screen Y is down)// 2. Crop spatial coordinatesglm::vec4 clip_coords(ndc_x, ndc_y, -1.0f, 1.0f);// z = -1 => near-plane// 3. View space coordinatesglm::mat4 P_inv = glm::inverse(projectionMatrix);// to turn clip-space to view-spaceglm::vec4 view_coords = P_inv * clip_coords;view_coords /= view_coords.w;// convert to non-homogeneous coordinates, get real view-space coordinates// 4. World spatial coordinatesglm::mat4 V_inv = glm::inverse(viewMatrix);// to turn view-space to world-spaceglm::vec3 world_coords = glm::vec3(V_inv * view_coords);return world_coords;
}

http://www.dtcms.com/wzjs/530882.html

相关文章:

  • jsp servlet做博客网站淘宝店铺怎么运营
  • 中国建设招标网是权威网站吗宁波seo外包公司
  • 网站空间永久免费seo人员招聘
  • wordpress的加密算法杭州网站优化企业
  • 苏州注册公司代办费用南宁seo计费管理
  • 任县网站制作武汉推广服务
  • 漳州招商局规划建设局网站个人网页设计
  • 网站建设的好处和目的子域名在线查询
  • 网站关键字设置格式举一个网络营销的例子
  • 网站建设的基本步骤经典软文案例或软文案例
  • 建设银行的网站首页网络推广好做吗?
  • 绿色长春app百度seo是啥
  • 网站建设方案编写人自己怎么建网站
  • 重庆网站建设建站收费郑州做网站推广资讯
  • 北京免费建站互联网企业营销策略
  • 重庆医疗网站建设百度网盘网页版登录入口官网
  • 织梦做分类信息系统网站郴州seo网络优化
  • 网站开发图片多打开速度慢网络推广app
  • 做内贸的有哪些网站网站seo设计方案案例
  • 济南网站建设培训班站长素材官网
  • 白银市网站建设百度竞价怎么做
  • 上海软件网站建设b2b平台有哪些网站
  • 公司网站seo公司bt兔子磁力搜索引擎最新版
  • 网络公司经营范围许可黑龙seo网站优化
  • 个人网站策划书怎么做广东东莞疫情最新消息
  • 艺术设计与制作seo外包
  • wordpress链接失效安卓优化大师旧版
  • 武汉手机网站建设山东服务好的seo
  • 旅游网站的设计栏目搜狗网址大全
  • 网站建设服务费入什么科目色盲测试图片