问题标签 [coordinate-transformation]
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.
python - (Alt, Az) 到 (Ra, Dec) 的 pyephem 转换并返回内部不一致
我发现当我将 (Alt, Az) 转换为 (Ra, Dec) 然后再使用 PyEphem 时,我没有得到我开始的内容。下面是一个简单的例子。
正如评论中所指出的,虽然 30 英寸超过了维基百科规定的 20 英寸的最大效果,但没有准确地找到北极可能只是恒星像差。
当我做反向计算时,我没有得到同样的结果,这让我很困惑。有什么建议么?
3d - 从地球到太阳的坐标转换
我正在构建太阳系的 3D 模型,需要弄清楚每个行星的极星的位置,以便将行星向正确的方向倾斜正确的量。我已经找到了极星位置的信息,问题是它们在地球相对坐标中。例如,火星的极星是天鹅座伽玛,位于 RA 20h 22m 13.70184s,Dec +40° 15' 24.0450"。
赤经 (RA) 位于本初子午线以东几个小时的位置。赤纬 (Dec) 是赤道以北 (+) 或南 (-) 度数。这些共同定义了一个假想天球上的一个位置,在这个天球的表面上,人们可以想象所有的星星吗?
那么我如何从这些坐标转到一个向量,该向量定义了天球上远处某处恒星的位置?
我正在使用 ThreeJS。这个问题指出了在定义球体原点或至少其纹理方面的部分解决方案。
编辑我已经在physics.stackexchange.com
这里发布了同样的问题
javascript - three.js:将坐标从相机空间转换到场景空间
我试图相对于相机放置一个立方体,而不是相对于场景。问题是,要将它放置在场景中(我必须让它显示),我必须知道对应于立方体相机空间坐标的场景坐标。我在 THREE.Camera 中找到了这个函数“projectionMatrixInverse”。它有一个很好的函数,叫做“multiplyVector3”,我希望它能让我将向量 (1,1,1) 转换回场景空间,如下所示:
问题是,在控制台上我得到:
multiplyVector3 根本不接受 my myvec
,或者说它是未定义的,即使控制台说它是一个对象。我不明白。
ios - 转换为节点/世界空间
我在 cocos2d 中有一个 CCLayer,我正在尝试放置一个 CCSprite 来填充背景。在我的场景中有这个 CCLayer 的两个实例,其中一个,背景显示在正确的位置,有一点偏移,但另一个我无法让图层显示。我有一种感觉,这归结为没有使用 self/self.parent/self.parent.parent 和 convertTo/Node/World/AR/Space 的正确组合。
这是我的代码,适用于该层的一个实例:
为了尝试查看另一层的绊脚石(由isThumbnail
属性确定,我添加了一些日志记录:
导致:
有人可以解释在这种情况下需要哪一个,也许怎么知道?
编辑:背景精灵被添加到层次结构中:
层次结构看起来像这样(括号显示添加元素的顺序)
visual-c++ - opengl中的复合旋转和平移问题,围绕其自己的局部轴移动对象不起作用
我正在用 openGL 构建一个机器人,它应该可以移动和旋转。当我按下机器人应该向前移动,如果我按下 t 那么他应该围绕它自己的局部轴旋转 15*,然后如果我按下 f 他会再次行走。我已经完成了,机器人行走和旋转,但问题是他没有相对于他的局部轴旋转,他正在跟随 (0,0,0)。我想我不明白必须如何制作平移和旋转的组合才能获得我想要的效果。
我现在正在尝试仅使用缩放球体。我在这里添加显示功能,以便你们更清楚:
opencv - opencv给出相机姿势 - rvec和tvec - 坐标系不匹配
我需要找到相机的姿势(旋转矩阵+平移向量),为此我正在使用cv2.solvePnP()
,但我从照片中得到的结果不匹配。
为了调试,我(使用 numpy)创建了一个“调试 3d 场景”,由一些对象点(正方形的四个角)、一些相机点(焦点、主点和虚拟投影平面的四个角)和参数组成(焦距,初始方向)。
然后,我通过乘以三个轴旋转矩阵来构造一个通用旋转矩阵,将这个通用旋转应用于相机(numpy.dot()
),将对象点投影到虚拟投影平面(线平面相交算法),并计算平面内二维坐标(点线距离)到投影平面轴。
这样做之后(通过旋转矩阵将对象点指向图像点),我将图像点和对象点输入cv2.Rodrigues(cv2.solvePnP(...))
并得到一个与我使用的矩阵“不太相同”的矩阵,只是因为转置和一些具有相反信号的元素(负与正) ,尊重这种关系:
虽然旋转矩阵不匹配是“可解决的”这个黑客,但翻译向量给出的坐标对我来说没有意义。
我怀疑我的 3D 模型(惯用手、轴方向、旋转顺序)与 opencv 使用的模型不匹配:
- 我使用类似OpenGL的坐标系(X向右增加,Y向上增加,Z向观察者增加;
- 我以对我更有意义的顺序应用了旋转(所有右手,首先围绕全局 Z,然后围绕全局 X,然后围绕全局 Y);
- 图像平面位于物体和相机焦点之间(虚拟投影平面,而不是真实/CCD);
- 我的图像平面(虚拟 CCD)的原点是左下角(Xpix 向右增加,Ypx 向上增加。
我的问题是:
鉴于旋转矩阵的项是相同的,只是转置并且在某些术语中具有不同的信号,我是否可能混淆了一些openCV
约定(用手习惯、旋转顺序、轴方向)?我怎样才能发现是哪一个?
另外,有没有办法将我的手工翻译向量与返回的 tvec 联系起来solvePnP
?(当然,理想情况下,最好首先使坐标系匹配)。
任何帮助都将受到欢迎!
python - 如何从python中的二面角计算笛卡尔坐标
我在笛卡尔空间中有一组点。我可以使用 python 和 numpy 计算由四个点(a、b、c、d)的给定子集合定义的二面角。以下是我的功能:
我只想旋转一个二面角,如何使用带有 numpy 和 scipy 的 python 计算子集合的新坐标?
javascript - 将 3D 世界空间坐标转换为 SVG 视口坐标
我一直在尝试从俯视图的角度(如小地图)在网页上显示 3D 游戏中玩家的位置。我只是将标记(通过 SVG)叠加在游戏关卡的 1024x1024 图像上(俯视图,取自游戏本身)。我只关心x
,y
坐标,因为我没有z
在俯视图中使用。
游戏的世界具有相同的最小/最大坐标x
和y
:-4096
到4096
。0, 0
坐标是世界的中心。
更有趣的是,游戏关卡在游戏世界中的初始位置是任意的。因此,例如,我一直在测试的特定关卡的左上角世界坐标是-2440, 3383
.
我最初的困惑来自0,0
网页中的坐标是左上角,而不是世界空间的中心。
如何正确转换 3D 世界空间坐标以正确显示在任何维度的网页视口中?
这是我尝试过的(我一直在尝试使用 svg 中的 viewbox 属性来处理左上角世界坐标偏移)
opengl - OpenGL中2D鼠标点击的3D坐标不正确?
我想在 3D 中获得鼠标点击位置。下面是我的代码,很简单,有什么问题。我在哪里做错了..?为什么我没有得到 x 和 y 的确切值?任何的想法 ?
algorithm - 随时间旋转的坐标系
我不确定这是否是我的问题的正确位置,但我会试一试。我猜它介于 CS 和物理之间,但由于我是用 C++ 编程的,所以我会在这里发布。
我正在查看 3D 中的粒子,由于施加在其上的力,它正在 (x, y) 平面中弯曲,如图所示。力是从 NE 进入的粗体箭头。y 轴与力之间的角度为“a”。
粒子以速度矢量 (v_x, v_y, v_z) 从左侧进入并在拐角处弯曲。牛顿第二定律很好地描述了这一点,没有问题。这很容易在数值上求解,例如通过欧拉方法。这我已经成功实施,到目前为止一切顺利。
然而,如图所示,粒子在恒定直径 h 的圆柱形管中移动,我希望在某个时间 t 找到 x 和 z 方向(指向屏幕外)到壁的法线距离。“正常距离”是指如果坐标系随粒子旋转,那么我想知道粒子沿 y 和 z 到管边缘的距离(如指向管边缘的 3 个小箭头所示) )。最终目标是以某种方式确定粒子是否撞到了墙上。
对于 z 方向,它是微不足道的,因为它的轴在轨迹期间不会改变。然而,y 方向给我带来了巨大的问题。这是我的问题:有没有办法让我找到在轨迹期间沿 y 到管边缘的距离?请注意,我是以数字方式执行此操作的,因此我不一定需要解析表达式。
最好的,奈尔斯。