我正在尝试将球坐标转换为笛卡尔坐标,以绘制一个简单的三维金字塔。
下面是获取金字塔四个主要角的代码,具体取决于极角yrad和方位角xrad以及顶点坐标x和y:
xpos1 = x+25*( sin(yrad+pi/2+pi/4)*cos(-xrad+pi/2+pi/4));
zpos1 = y-35+25*( cos(yrad+pi/2+pi/4));
xpos2 = x+25*( sin(yrad+pi/2-pi/4)*cos(-xrad+pi/2+pi/4));
zpos2 = y-35+25*( cos(yrad+pi/2-pi/4));
xpos3 = x+25*( sin(yrad+pi/2-pi/4)*cos(-xrad+pi/2-pi/4));
zpos3 = y-35+25*( cos(yrad+pi/2-pi/4));
xpos4 = x+25*( sin(yrad+pi/2+pi/4)*cos(-xrad+pi/2-pi/4));
zpos4 = y-35+25*( cos(yrad+pi/2+pi/4));
方位角轴似乎工作正常,但问题是,在操纵极轴角时,当它们越过天顶或底部时,左右会互换,如图所示(选择顶部的mp4以更平滑地播放):http://gyazo.com/4a245713c232893960863cf4ea4186f6
怎么了?
呵呵,这个bug确实有一个漂亮的结果:)让我们解决它。
对于极坐标,我们定义了两个角度:
yrad)–绕极旋转的角度
如果我们尝试将其可视化,它看起来是这样的:
Look from above | Look from side
(Z goes positive towards you) | (Y goes negative towards you)
|
Y- Z- | Z- Y+
| / | | /
| / "far" | | / "far"
|/ | |/
X- ------+-------> X+ | X- ------+-------> X+
/| yrad | | /| xrad ^
"near" / |<-----+ | "near" / |------+
/ | "polar angle" | / | "azimuth angle"
Z+ Y+ | Y- Z+
使用这些角度,我们可以通过以下方式计算坐标:
Point := radius * (x = sin(xrad) * cos(yrad)
y = sin(xrad) * sin(yrad)
z = cos(xrad))
这些是常规符号(见球面坐标系)。绘制点的笛卡尔表示时,通常使用X和Y坐标,但选择了X和Z,这仍然是完全正确的。
然而,你犯的错误是,你交换了角度!
Your computation | x := sin( yrad ) * cos ( xrad ) | z := cos( yrad )
------------------+-----------------------------------+------------------
Should have been | x := sin( xrad ) * cos ( yrad ) | z := cos( xrad )
因此,当您更改方位角(
xrad
)时,您只受到X坐标的影响,这实际上效果很好(因为cos(xrad)=sin(90-xrad)
,所以您有一个窦的行为(如xrad
所需要的)。当您旋转极角(yrad
)时,事情开始变得丑陋,因为两个坐标的变化不协调(没有双关语)。
我试图将图像从极坐标转换为笛卡尔坐标,但在应用公式后,我得到了浮点坐标(r和teta),我不知道如何使用x和y的浮点来表示空间中的点。可能有一种方法可以将它们转换为整数,并仍然保留分布,但我不知道如何。我知道OpenCV中有像warpPolar这样的函数,但我想自己实现它。任何想法都会有帮助:) 这是我的代码:
我正在尝试将极坐标的图像转换为笛卡尔坐标。 将图像转换为极坐标的示例显式执行-想要一个光滑的矩阵方法 我原以为使用上述方法是小菜一碟,但事实并非如此!!如果有人发现我的代码有错误,请告诉我! 我发现非常奇怪的是,当我改变phi时,它会做出根本性的改变,而不是以我期望的方式! 干杯
我想知道是否有人帮助我理解如何将顶部图像转换为底部图像。以下链接中提供了这些图像。顶部图像采用笛卡尔坐标。底部图像是极坐标中的转换图像
对于我的游戏,我需要在两个坐标系之间转换函数。这主要是一道数学题,但我需要的是C代码,以及一些解释如何解决我的问题。 屏幕坐标: a)左上角是0,0 b)无负值 c) 右=x(x值越大,右侧点越多) d) 底部=y 笛卡尔二维坐标: a) 中点为(0,0) b)减去值确实存在 c)右=x d)底部-=y(y越少,底部越点) 我需要一种简单的方法从一个系统转换到另一个系统,反之亦然。要做到这一点,(
遵循笛卡尔网格的轴被称为“笛卡尔轴”。直角坐标轴用于折线图、条形图和气泡图。 Chart.js 中默认包含四个笛卡尔坐标轴。 linear logarithmic category time 所有包含笛卡尔轴的图表都支持多种通用选项。 名称 类型 默认值 描述 type String 图表类型 position String 轴在图表中的位置。可用的值有: 'top', 'left', 'bott
我试图对下面的第一幅图像进行极坐标变换,最后得到第二幅。然而,我的结果是第三张图片。我有一种感觉,这与我选择的“原产地”有关,但我不确定。