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

网站搭建在线支付/关联词有哪些小学

网站搭建在线支付,关联词有哪些小学,php网站开发是学什么的,三级分销佣金分配表本文主要介绍将屏幕上的二维坐标转换为三维空间中的一个点,该点位于 近 平面上(即 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.whsansanxincailiao.cn/news/30243360.html

相关文章:

  • 平面设计网站大全有哪些/seo搜索优化待遇
  • win8.1 wordpress/鹤壁seo公司
  • 网站建设分几模块/微软bing搜索引擎
  • 赤峰网站建设培训/西安网络公司
  • 免费个人网站怎么做/重庆seo排名优化
  • 做单位网站/长春网站建设开发
  • 快速网站seo效果/网络推广公司网站
  • wordpress 导入文章/整站优化系统
  • 保定建设工程信息网站/搜索推广是什么意思
  • 网站界面需求/江北seo
  • wordpress软件站/seo诊断分析在线工具
  • 广州外贸网站建站/西安seo代运营
  • 佛山做外贸网站的/百度网盘资源搜索引擎入口
  • 温州网站建设推广专家/最新推广方法
  • 网站底部友情链接怎么做的/seo在线培训课程
  • 哈尔滨优化seo外包公司/青岛网站seo服务
  • 销售网站制作怎么做/百度竞价广告的位置
  • 网站开发打开世界之窗默认内核/网站alexa排名
  • wordpress插件whmcs/优化营商环境指什么
  • 长春火车站是哪个区/微信营销方法
  • 万网域名注册号后怎么做网站/百度关键字搜索排名
  • wordpress 设置404页面模板/北京seo代理商
  • 陕西科强建设工程有限公司官方网站/二十条优化疫情措施
  • 如何建设局域网内部网站/手机百度搜索引擎
  • 做阿胶上什么网站比较好/seo查询 站长工具
  • 虚拟主机网站建设步骤?/网络营销策划书8000字
  • 六安市住房和城乡建设委员会网站/长尾词挖掘工具爱站网
  • 做视频赚钱的网站/seo排名公司
  • 微信h5的制作方法/百度seo关键词优化推荐
  • 空间坐标系做图网站/关键词都有哪些