问题标签 [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.
matlab - 在 Matlab 中用球坐标写方程
我想在matlab中实现这个球坐标方程,但我真的很困惑如何从中获取j1的值。我应该定义 phie1 和 theeta1 的哪些值?
虽然我是这样实现的,但它给出了错误:
rotation - 将欧拉角转换为球角
现在我正在使用四元数在 3D 空间中获得 2D 平面的旋转(偏航俯仰滚动)。我的问题是如何将笛卡尔坐标系的这三个角度(α、β、γ)转换为球面角 θ 和 φ。非常感谢。
干杯
loops - 为什么 Vector3 不更新 Unity3d
一段时间以来,我一直在这方面失去理智。只需忽略被注释掉的部分(不是问题)。我正在尝试进行 360 度经度和 180 度经度扫描,然后进行射线投射。但显然方向向量(在本例中为 Dir)停留在 (0, 0, -1)。我检查了 xy 和 z 值,它们工作正常。我现在不知道出了什么问题。在我自杀之前请回答。叹
fft - Healpix / Healpy:我如何使用 healpy 对天空进行 SHT 处理?
Healpix 是一个非常有用的软件,可以对球体进行球面分析。例如,我们可以map2alm
用来分析 Healpix RING 有序映射并返回球谐函数。这里的参数map
应该是一个数组$Npix = 12*Nside^2$
。如果我只想对一个补丁进行分析,而不是对一个完整的天空进行分析。一些环权重可用于在 Healpix 中屏蔽地图。但如果Npix
很大,实际上数组map
会太大而无法分配到内存中。因此,如何在天空补丁上进行球谐函数变换?
area - 计算一个多边形在地球表面的面积
出于教育目的,我正在尝试编写一个 TS 函数,该函数将接受坐标数组并计算多边形的面积。
我正在使用鞋带算法成功计算多边形的面积。在运行算法之前,我将纬度/经度坐标转换为它们的笛卡尔格式。
我将此与https://www.mathopenref.com/coordpolygonareacalc.html的结果进行了比较,该结果输出:774321690.7119141。
但是,当我将此与谷歌地图等工具进行比较时,它是不正确的(答案是 1513405095.71 平方米)。我应该应用地球的球形特性来获得准确的答案,但我不确定如何。我试过 S = [θ - (n - 2)π]R^2 其中 θ 是角度的总和,n 是角的数量。
任何帮助将不胜感激,谢谢!
polygon - 在以点为界的球体上查找多边形区域
我正在尝试在球体上找到多边形的面积。我有方位角和仰角(纬度/经度)。有没有一种算法可以做到这一点。如果它在平面上,我可以使用凸包进行近似,但这些点占据了球体的很大一部分。
python - 将 3D 笛卡尔数据插值到球面
我有一个形状为 f[nz,ny,nx] 的某个数量 f 的 3D 数据集,其中 nz,ny,nx 是对应的笛卡尔网格 z[nz]、y[ny]、x[nx] 的索引。在我的特殊情况下,nz=ny=nz=256。这个笛卡尔盒子的中心是(0,0,0)。在空间的同一点,我想在笛卡尔盒子内放置一个半径为 r=1 的球体。现在,我想在球体表面对 f 进行插值,最终得到 f(phi,theta,r=1),其中 phi 是经度,theta 是纬度。
我已经看到了许多不同的方法来解决与此类似的问题(主要是在 Python 和 Matlab 中),但还没有能够做到。有人做过这个或知道如何做吗?谢谢!
python - 在 3D 球体上插值非均匀分布的点
根据https://www.cmu.edu/biolphys/deserno/pdf/sphere_equi.pdf中描述的算法(并在下面的代码中实现),我在单位球面上有几个点。在每一点上,我都有一个值,在我的特定情况下,它代表 1 减去一个小错误。如果这很重要,错误就在其中[0, 0.1]
,所以我的值在[0.9, 1]
.
可悲的是,计算错误是一个代价高昂的过程,我无法根据需要计算尽可能多的点。不过,我希望我的情节看起来像是在策划一些“连续”的事情。所以我想为我的数据拟合一个插值函数,以便能够采样尽可能多的点。
经过一点研究,我发现scipy.interpolate.SmoothSphereBivariateSpline似乎完全符合我的要求。但我不能让它正常工作。
问题:我可以用什么来插值(样条、线性插值,目前任何东西都可以)我在单位球体上的数据?答案可以是“您误用scipy.interpolation
了,这是执行此操作的正确方法”或“此其他功能更适合您的问题”。
应该可以执行numpy
和scipy
安装的示例代码:
上面代码的问题:
- 使用原样的代码,我有一个 code>interpolator初始化实例 时引发。
- 上面的问题似乎是说我应该在scipy.interpolate.SmoothSphereBivariateSpline
s
的参数上更改 that is one 的值。我测试了从到的不同值,上面的代码总是引发上述异常或:s
0.0001
100000
编辑:我在这里包括我的发现。它们不能真正被视为解决方案,这就是我正在编辑而不是作为答案发布的原因。
通过更多研究,我发现了这个问题Using Radial Basis Functions to Interpolate a Function on a Sphere。作者和我有完全相同的问题,并使用了不同的插值器:scipy.interpolate.Rbf。我通过替换插值器和绘图来更改上面的代码:
插值似乎没问题,除了一条不连续的线,就像引导我上这堂课的问题一样。答案之一给出了使用不同距离的想法,更适应球坐标:Haversine 距离。
执行时会发出警告:
并且结果完全不是预期的:插值函数的值可能会上升到-1
明显错误的值。
opencv-python - 将立方体平面切片上的点投影到球坐标
我正在将我的 equi-rectangular 图像转换为立方体贴图,并获得六个不同边的切片,每边为 1024px。我想知道如何在任何这些切片上选择一个点并将其投影回球坐标。请帮忙