从 3D 平面上的 3D 点检索 2D 坐标

2023-12-29

我有一个点 (x, y, z),位于由 ax+by+cz+d=0 定义的平面上。我试图找出 (x', y') 相对于平面的关系,它的起点为 (x0, y0, z0),x' 轴由 (1,0) 和y' 轴由 (0,1) 定义。

我的主要目标是让鼠标单击表面,并了解特定表面上的 2D 坐标。我已经成功地将光线相交到一个平面上,这很简单。

顺便说一句,我使用的是 DirectX 9 - 我对矩阵/向量数学的熟悉程度受到通过 D3DX 库提供给我的 API 的限制。

我的一个想法是使用轴向量之一之间的角度并找到距原点的距离,并使用简单的三角函数计算出 x/y。但我不确定这是否真的是一个理想的解决方案,或者它是否能真正解决当前的问题。


由于您在该平面上有一个 2D 图像,因此您显然希望匹配其坐标系。为此,请确定图片的单位向量。即取3d坐标B对于任意 x>0 的图片位置 (x,0),并从中减去 3d 坐标A为图片的原点 (0,0)。所得向量B − A会描述积极的一面x你的图像的方向。对y方向。然后对这两个向量进行归一化。这意味着将它们除以长度 sqrt(x²+y²+z²),但 D3Dx 有一个函数D3DXVec3Normalize http://msdn.microsoft.com/en-us/library/bb205515%28v=vs.85%29.aspx为了这。我们将生成的 3d 向量称为X and Y。计算x and y任意 3D 点的坐标p,只需减去原点A from p,即计算向量p − A。然后计算结果和单位向量之间的点积X and Y。这将为您提供两个数字:所需的坐标。这是因为点积可用于计算正交投影。

将其翻译成D3Dx http://msdn.microsoft.com/en-us/library/bb172965%28VS.85%29.aspx,它应该类似于以下内容。由于我从未使用过它,因此可能会有错误。

D3DXVECTOR3 *p;                  // input point
D3DXVECTOR3 a, b, c, ab, ac, ap; // helper vectors
FLOAT x, y;                      // output coordinates
imagePosTo3D(&a, 0, 0);          // a = origin of image
imagePosTo3D(&b, 1, 0);          // b = anywhere on positive x axis, perhaps a corner
imagePosTo3D(&c, 0, 1);          // c = anywhere on positive y axis, perhaps a corner
D3DXVec3Subtract(&ab, &b, &a);   // ab = b - a
D3DXVec3Subtract(&ac, &c, &a);   // ac = c - a
D3DXVec3Normalize(&ab, &ab);     // ab = ab / |ab|
D3DXVec3Normalize(&ac, &ac);     // ac = ac / |ac|
// the above has to be done once for the image, the code below for every p
D3DXVec3Subtract(&ap, p, &a);    // ap = p - a
x = D3DXVec3Dot(&ab, &ap);       // x = ab∙ap
y = D3DXVec3Dot(&ac, &ap);       // y = ac∙ap
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 3D 平面上的 3D 点检索 2D 坐标 的相关文章

  • 笛卡尔坐标到极坐标

    看一下这里的例子 http www brianhare com physicals so html http www brianhare com physics so html 看一下 console log 我在其中使用了这两个主要函数
  • 我如何从 Rust 的 Vec 中获取项目?

    我正在寻找一种方法consumes a Vec并返回一个元素 无需恢复的开销Vec的不变量的方式remove and swap remove do fn take
  • Python lmfit:拟合 2D 模型

    我正在尝试将二维高斯拟合到一些灰度图像数据 该数据由一个二维数组给出 lmfit 库实现了一个易于使用的模型类 它应该能够做到这一点 不幸的是文档 http lmfit github io lmfit py model html http
  • 以有效的方式找到最近点

    我在 2d 平面上有一个点 例如 x0 y0 和一组 n 点 x1 y1 xn yn 我想在 a 中找到距离 x0 y0 最近的点比尝试所有要点要好得多 有什么解决办法吗 我还应该说我的观点是这样排序的 bool less point a
  • 为什么在用 size 声明的向量上使用 Push_back 会导致向量为零?

    我制作了一个恒定大小的向量来存储负值 然后打印我得到的所有值都是零 我只是想知道为什么它不存储负值 include
  • 自动适合衣服的算法?

    想象一下 客户要求您设计一款软件 以满足一些相当粗略的规格 如下所示 1 它将面向时尚行业营销 2 用户将是 设计衣服和东西 的人 可能有一个特定的术语 但我没有想到 3 由于各种原因 能够快速制作原型设计并查看它们在模型上的外观会很有用
  • 投影 3D 网格的 2D 轮廓算法

    给定 一个 3D 网格 由一组顶点和三角形定义 并用这些点构建网格 问题 找到任意平面上投影的任意旋转网格的二维轮廓 投影很容易 挑战在于找到平面中投影三角形边的 外壳 我需要一些有关研究该算法的输入 指针的帮助 为简单起见 我们可以假设
  • 3D 数学:根据“向上”和“向上”正交向量计算倾斜(滚动)角度

    我希望这是提出这个问题的正确位置和这个一样 https stackoverflow com questions 3035590 bank angle from up vector and look at vector 但表示为纯数学而不是图
  • 优雅的折线“左移”测试

    Given X Y 坐标 即车辆的位置 X Y 数组 它们是折线中的顶点 请注意 折线仅由直线段组成 没有圆弧 我想要的是 计算车辆是在折线的左侧还是右侧 当然还是在顶部 我的做法 迭代所有线段 并计算到每个线段的距离 然后 对于最近的段
  • 如何解码 U.P.S.来自 UPS MaxiCode 条形码的信息?

    我最近购买了一个二维条形码阅读器 扫描 U P S 时条形码 我得到了大约一半我想要的信息 其中大约一半看起来以某种方式加密了 我听说有一个 UPS DLL 示例 粗体的所有内容似乎都已加密 而非粗体文本包含有价值的合法数据 gt 0196
  • 使用比较器对向量进行排序,比较器会动态改变其行为

    我有一个自定义结构体的向量和一个属性列表 用于按优先级降序对该向量进行排序 例如 struct TheStruct artist String title String date String let order vec Vec
  • 从向量中删除向量::end

    当我使用时它工作正常吗 什么也不做 vector
  • 错误 C2039:“find”:不是“std”的成员

    我刚刚遇到一个奇怪的错误 它说 find 不是 std 的成员 错误 C2039 find 不是 std 的成员 错误 C3861 查找 未找到标识符 基本上 我想查找是否可以在向量中找到字符串 知道为什么会发生这种情况吗 代码帮助告诉我
  • Three.js :face4 生成三角形而不是正方形

    我正在尝试使用 tree js 自定义几何图形生成一个正方形 但是这段代码 var cubeGeo new THREE Geometry cubeGeo vertices push new THREE Vector3 25 25 25 cu
  • 找出圆周上像素坐标的算法

    如果我知道圆心 圆半径和垂直角的像素坐标 如何找出圆圆周上一定角度的像素值 基本上 我试图在不同的时间绘制时钟的指针 1点 2点等 Let h是浮点数形式的小时 h 2 25将是 02 15 等 在 0 到 12 之间 cX cY 是中心的
  • 确定解决迷宫问题的最小线段数

    我有一个问题 我需要定义一个具有最少数量的顶点的多边形 该多边形与不透明的图像中的每个像素相交或包含每个像素 令 N 为图像中的像素数 我唯一的假设是图像的边界 孔 内不能包含透明像素 并且至少有两个像素是不透明的 举个例子 假设我有以下图
  • 如何在 switch 语句中将向量作为参数传递

    我对问题的谷歌搜索没有返回有用的结果和文档 switch没有告诉我如何做 所以我希望我能在这里得到答案 假设我有一个向量 cases lt c one two three 我想使用 switch 语句并将这些元素作为 switch 语句的参
  • 如何推回向量的向量?

    我正在输入 20 行 我想用空格分隔每一行的内容并将其放入向量的向量中 如何制作向量的向量 我很难把它推回来 我的输入文件 Mary had a little lamb lalala up the hill the sun is up 该向
  • 二维数组的 MPI 数据类型

    我需要将一个整数数组的数组 基本上是一个二维数组 从根传递给所有处理器 我在 C 程序中使用 MPI 如何声明二维数组的 MPI 数据类型以及如何发送消息 我应该使用广播还是分散 你需要使用播送 http www netlib org ut
  • IE9-11 检测变换样式:preserve-3d

    我为一个项目制作了一个 3d 类型的菜单 自然 IE 会引起问题 因为 IE10 即使 3d 变换工作 也不支持变换样式 preserve 3d 我尝试了解决方法 通过对 3d 菜单容器的每个子元素应用变换 但至少可以说 动画看起来很糟糕

随机推荐

  • 为什么 element.click() 在 Cefsharp 中不起作用?

    我尝试执行下面的脚本Cefsharp单击 DIV 元素 但不起作用 private static string ClickUnreads function let chatsEl document querySelectorAll infi
  • 简化的行梯形形式

    R中是否有一个函数可以产生reduced row echelon form的矩阵 This http cran r project org doc contrib Hiebeler matlabR pdf参考文献说没有 你同意 I don
  • Objectify 库可以在 GAE 之外使用吗?

    我想使用 Google Cloud 数据存储区 不过 我没有使用GAE 我还可以使用 Objectify 库吗 如果是这样怎么办 该文档没有说明如何配置它以针对数据存储进行身份验证 不 你不能 这里有一个来自创作者的评论 https gro
  • 如何在 C# 中基于现有委托类型创建新的委托类型?

    有什么方法可以基于现有的委托类型创建新的委托类型吗 就我而言 我想创建一个委托MyMouseEventDelegate其功能与EventHandler
  • 如何隐藏 Mac/OSX 拖放 JTable 选择框

    在 JTable 上执行拖放操作时 拖动时会出现所选单元格 选择框 的轮廓 我怎样才能覆盖该行为并且除了特殊光标之外不显示任何内容 在 Windows 和 OSX 中运行以下代码显示了我想要覆盖的行为 import java awt Bor
  • ASP.NET 身份检查用户角色不起作用

    我有一个 ASP NET MVC 5 应用程序 我使用标准 ASP NET 身份提供程序进行用户和角色管理 重要的是我使用自己的存储库项目中的 IdentityUser 但这似乎没问题 我可以注册 登录 编辑用户并管理他们的角色 我使用以下
  • Azure Devops - 按代理池 ID 获取发布定义

    我试图使用 NET 客户端库查找配置为使用特定代理池的所有构建和版本 假设agentPoolId 我可以得到所有的构建定义 如下所示 connection is of type VssConnection using var buildCl
  • 配置 EMR 以使用 s3a 而不是 s3 进行 Spark.sql 调用

    我对 Spark sql 的所有调用都失败 并在堆栈跟踪中出现错误 1 below 更新 2我已经把注意力集中在这个问题上 它是 sts AssumeRule 的 AccessDenied 任何线索都值得赞赏 User arn aws st
  • 在 Spark 2.3.0 的结构化流中禁用 _spark_metadata

    我的结构化流应用程序正在写入镶木地板 我想摆脱它创建的 spark metadata 文件夹 我使用了下面的属性 看起来不错 conf spark hadoop parquet enable summary metadata false 当
  • 如何从 Java 中的套接字获取客户端名称?

    抱歉 简单的问题 但我无法使用谷歌或教科书在任何地方找到答案 我有一个简单的服务器 用户通过 java 中的套接字连接到该服务器 我想使用这个 Java 套接字来检索用户客户端名称 这可能吗 我知道我可以使用 getInetAddress
  • 数据绑定到以编程方式创建的数据表

    假设我有一个这样的数据表 DataTable dt new DataTable Woot dt Columns AddRange new DataColumn new DataColumn ID typeof System Guid new
  • 使用 JavaScript 对 DIV 进行动画处理会在 Chrome 上呈现工件

    作为一个实验 我尝试在 JavaScript 中复制 AS3 的 Sprite 功能 而不使用画布对象 我认为使用绝对定位的 div 并操作它们的 css 属性是理所当然的 但是在 Chrome 中 动画引入了奇怪的工件 似乎是因为重绘问题
  • 如何同时支持es模块和commonjs模块

    我们从 npm 安装的一些包同时支持 commonjs 和 es 模块 这些包可以按如下方式导入 import express from express or const express require express 我创建了一个包我已经
  • Delphi 是否提供用于表单创建通知的事件处理程序?

    Delphi 是否提供某种用于表单创建的事件或挂钩 或者更一般地说 表单生命周期事件 因此 如果在代码中的某处创建并显示表单 模态或非模态 动态或在通常的应用程序启动阶段 Delphi 会调用一个事件处理程序 该处理程序允许在显示之前记录
  • Bacon.js 超出最大调用堆栈

    我正在尝试生成类似的流Bacon fromPoll for requestAnimationFrame 为什么下面的代码会产生一个 超出最大调用堆栈 error function rafSequence var raf Bacon from
  • 如何以编程方式缓存/下载谷歌地图v2图块?

    如何以编程方式缓存 下载谷歌地图 v2 图块 可能吗 Bcos根据这个prntscr com 3cyiqf http prntscr com 3cyiqf这是不可能的 但正如我所看到的这个链接使用本地图块的 TileProvider htt
  • 删除名为 xfdf:field(带有命名空间)的 XML 标记

    我想从 XML 文件中删除 XML 元素 我要删除的标签名为 xfdf field 如何在 xslt 中指定这一点 我尝试了这个 但收到一条错误消息 org apache xpath domapi XPathStylesheetDOM3Ex
  • 如何签署 Firefox 扩展

    我想签署 Firefox 扩展 我在互联网上搜索了有关签署扩展程序的信息并找到了 URLhttps developer mozilla org en docs Signing a XPI https developer mozilla or
  • Webpack:让它忽略找不到的源文件?

    我正在使用 snabbdom js 和 webpack 构建 JS 前端应用程序 我有一个非常简单的 snabbdom 视图和将其捆绑在一起的 webpack 配置 当我在 chrome 中加载捆绑包时 我会在控制台中看到所有这些内容 我可
  • 从 3D 平面上的 3D 点检索 2D 坐标

    我有一个点 x y z 位于由 ax by cz d 0 定义的平面上 我试图找出 x y 相对于平面的关系 它的起点为 x0 y0 z0 x 轴由 1 0 和y 轴由 0 1 定义 我的主要目标是让鼠标单击表面 并了解特定表面上的 2D