问题标签 [spherical-coordinate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
145 浏览

eigen3 - 在球坐标中定义单位向量以与 Eigen3 一起使用

我在这里发帖是因为我有点茫然

我正在尝试实现麦克斯韦方程组的解决方案(p47 2-2)

公式链接乳胶,

在 C++ 中以球坐标给出,因此可以在更大的建模项目中使用。我使用 Eigen3 作为线性代数的基础,据我所知,它没有明确支持球坐标(我愿意接受替代方案)

为了实现我需要(或至少我认为我需要)将球面单位向量定义为球面坐标的解决方案,因为它们不是笛卡尔坐标中的常数,我不明白如何做到这一点。

我很犹豫将解决方案转换为笛卡尔坐标,因为我认为我不理解这样做的含义(它甚至有效吗?)

感谢任何和所有输入和建议

0 投票
0 回答
96 浏览

latitude-longitude - 从球面角转换为经度和纬度

我有一些从奥地利的雷达中提取的图像和一个投影公式(练习说投影公式将像素位置映射到地理坐标),它将像素转换成(phi, lambda)练习状态为球角的像素。

但这给出了非常小的值,这是不可能(latitude, longitude)的,所以我正在寻找球面角之间的(phi,lambda)转换(latitude,longitude)

对于我需要提供的结果(latitude, longitude),如何进行这种转换?该练习还为我提供了一些我不理解的数据,这可能是必要的:

此变量用于转换公式,但也可用于获得(latitude, longitude)


编辑

我试图直接将我从转换中获得的值视为(纬度,经度),*180/pi但我得到的坐标不在奥地利

0 投票
1 回答
292 浏览

python - 计算具有 3D 和 2D 点对应关系的旋转和平移矩阵

我有一组 3D 点和来自不同位置的 2D 对应点。
2D 点位于 360° 全景图上。所以我可以在没有关于 r 的信息的情况下将它们转换为极坐标 -> (r,theta, phi)。

但 r 只是转换后的 3D 点的距离:

[R|t]*xyz = xyz'
r = sqrt(xyz')

然后使用球坐标中的 3D 点,我现在可以使用此线性方程组搜索 R 和 t:

x' = sin(theta) * cos(phi) * r
y' = sin(theta) * cos(phi) * r
z' = sin(theta) * cos(phi) * r

对于 t=[0,0,0.5] 且没有任何旋转的测试,我得到了很好的结果。但如果有轮换,结果很糟糕。

这是解决我的问题的正确方法吗?

如何在没有相机矩阵的情况下使用 solvepnp()(它是没有失真的全景图)?

我正在使用 opt.least_squares 来计算 R 和 t。

0 投票
1 回答
161 浏览

math - How to convert coordinates from one Spherical system to another rotated by 90 degrees without going to Cartesian

I need to convert a set of points from one spherical system to another rotated by 90 along the axis in the equatorial plane. I want to rotate the points in this system, then return them to the previous one.I do not want to use the Cartesian system as an intermediary, so can this be done without leaving the conception of spherical coordinates? The image shows the same point in different spherical coordinates, are there any conversion formulas for this case?

enter image description here

0 投票
1 回答
77 浏览

3d - 将 2 个角度(球面旋转)转换为单个角度(四元数)

我有 2 个角度,phi(左右旋转)和psi(上下旋转)。我想将它们转换为单个角度,这相当于四元数(=围绕单位向量的最小旋转)。

从这篇文章:https ://stackoverflow.com/a/47277997/113718 我们得到球面->四元数转换会给出: quat = (cos(phi/2)cos(psi/2), -sin(phi/2)sin(psi/2), cos(phi/2)sin(psi/2), sin(phi/2)cos(psi/2))

现在,从另一篇文章:https ://stackoverflow.com/a/3825595/113718 四元数的角度是

角度 = 2 * cos -1 (w) = 2 * cos -1 ( sin(phi/2)cos(psi/2) )

然而这似乎不对。我希望当

phi = 0 => angle = psi, 反之亦然psi = 0 => angle = phi

但上面的公式似乎并非如此。我理解错了什么?

0 投票
1 回答
51 浏览

java - 给定两个点 A(x1,y1) 和 B(x2,y2),我想找到第三个点 C(x3,y3) 与 AB 线之间的距离以及球面上 AD 的长度

我有两点,我需要线 AB 和点 C 之间的距离。除此之外,我还需要 AD 的长度,其中 D 是 AB 上 C 的投影/交点。在二维中,我可以得到这里提到的投影点,但是::

但是考虑到球体上的坐标而不是二维表面上的坐标,我想做同样的事情。提前致谢! 在此处输入图像描述

0 投票
1 回答
196 浏览

coordinate-transformation - 将 XYZ 球坐标重新映射到纬度/经度坐标

我在 XYZ 中有一个点的表面(所有 Z 都是 0),我将这些点映射到一个球体上。所以我对球体上的每个点都有一个 XYZ 坐标。

我想要实现的是将此 XYZ 球体坐标转换为其纬度/经度平行线,就地理位置而言。因此,例如,如果我有点 (0,0,0),我想看看如何将其表示为纬度/经度的南极点(90.0000° S,45.0000° E)。

我在网上搜索了无数网页来解释其中的部分内容,但其中很多都在谈论将 Lat/Long 转换为 XYZ 而不是相反。我不确定是否有一个简单的公式可以将一个转换为另一个。

希望有人能指出我正确的方向。

谢谢

0 投票
0 回答
245 浏览

python - 使用 Python 进行 HelmHoltz 分解并避免球谐计算

我正在尝试将风场 (u,v) 分解为无旋和非发散场 (uchi, vchi, upsi, vpsi)。该字段是全局的,格式为(时间、级别、纬度、经度),并且当我使用 pyspharm python 模块中的 HelmHoltz 分解和一个没有任何缺失值的字段时有效 - 这是公开的情况可用数据(已插值到表面的再分析数据)。Pyspharm 使用球谐函数计算来计算。

但是,当我尝试使用从我自己的个人模型中获得的数据时,问题就出现了,由于山脉或高地,我无法在表面上进行插值。一旦给定级别上有一个 NaN,整个级别都会返回一个 NaN。

我最初考虑水平插值以平滑这些 NaN,但这些区域通常太大,所以我认为也许有一种不同的方法来进行亥姆霍兹分解,它只会在初始 NaN 附近返回 NaN(而不是整个级别),比如有限差分?

有谁知道我如何或是否可以为 HelmHoltz 执行有限差分,如果可以,我可以在哪里获得代码?THX

0 投票
1 回答
91 浏览

python - 找到三个最近的点,其中三角形包含球体上的给定点

我有一个表面上有点的 3D 球体。这些点以球坐标表示,如方位角、仰角和 r。

例如,我的数据集是一个矩阵,其中包含给定球体上的所有可用点:

注意:我故意省略了完整的数据矩阵,因为它包含大量数据。如果需要/要求使问题完全可重现,我将提供完整数据。

该矩阵表示如下图像:

球体点

给定一个任意点,我想计算数据集中“包含”输入点的 3 个最近点。

到目前为止,我的代码如下:

基本上,我从矩阵数据集中的所有点中减去所请求的方位角和仰角self.sourcePositions

代码工作正常,问题是有时我得到 3 个不包含请求点的最近点。

例子:

错误一:

好一个:

我该如何解决这个问题?我想获得“三角形”(我在球面上,所以它不是真正的三角形)包含我请求的点的 3 个最近点。

0 投票
1 回答
64 浏览

rotation - 沿带有四元数的球体表面的运动方向性

我正在使用配备陀螺仪/加速度计/磁力计的运动跟踪设备。该设备在任何时间点将其旋转方向作为四元数输出。

当我从原始方向旋转设备时,我试图计算两件事:(1)球体表面与其原始方向的距离(我实际上已经完成了这一步),以及(2)方向方向 - 但方向需要是简单的 1 或 -1,而不是向量。

让我进一步解释一下关于方向的含义:假设设备以初始旋转状态开始,然后我将其沿一个方向旋转。在完成一定量的旋转后,我将它旋转回原来的位置,然后我继续沿着相同的轨迹旋转它——基本上是在与我原来的旋转方向相反的方向旋转它。

所以,如果我有一个原始四元数 Q0,然后我有另一个四元数代表我的第一次旋转 Q1,那么我想对任何未来的四元数Qn 说:

  1. Qn 到 Q0 的距离是多少?
  2. Qn 从 Q0 的方向是什么(有效值为 1 或 -1)?其中“1”是“与从 Q0 到 Q1 的旋转方向相同”,“-1”是“与从 Q0 到 Q1 的旋转方向相反”。

就像我说的,由于找到了这个有用的帖子,我已经解决了“距离”部分:https ://math.stackexchange.com/questions/90081/quaternion-distance?newreg=f0fcab1eca8d4a4faaad1ea555d1cdf7

我还没有解决方向部分。以下帖子使我成为了其中的一部分:

  1. 两个四元数的区别
  2. 两个四元数之间的“差异”

但我的理解仍然不完整。谁能帮助阐明我如何做到这一点?谢谢!