【发布时间】:2010-12-03 19:43:48
【问题描述】:
这个问题的图形在这里: http://dl.dropbox.com/u/13390614/Question2.jpg
取一个带有固定短轴的轴对齐椭圆,并沿其长轴拉伸椭圆,直到椭圆的周界与点重合(图中的 A)。新的长轴长度是多少?
当两个轴都要修改时我可以解决这个问题,但是当只修改一个轴时我很难过。
我们将不胜感激。
加里
【问题讨论】:
-
这和编程无关,至少不是问的方式
这个问题的图形在这里: http://dl.dropbox.com/u/13390614/Question2.jpg
取一个带有固定短轴的轴对齐椭圆,并沿其长轴拉伸椭圆,直到椭圆的周界与点重合(图中的 A)。新的长轴长度是多少?
当两个轴都要修改时我可以解决这个问题,但是当只修改一个轴时我很难过。
我们将不胜感激。
加里
【问题讨论】:
首先,让我们假设椭圆在原点以简化事情。
想象这是一个以直径为短轴的圆。沿着 y = P's y 的线的圆的宽度是多少?等效地,圆直径上 y = P 的 y 点的 x 是多少。 (对此有两种解决方案。任何一种都可以,但您可能需要稍后调整符号。)您可以使用三角函数或勾股定理来计算。
您的长轴现在是短轴 * ((P's x) / x)。
【讨论】:
非常感谢劳伦斯的帮助,这似乎确实有效。
加里
// 在代码中
由于椭圆和点是轴对齐的, 该点是一个向量。
将点 P 平移到短轴圆上 半径使用固定的短轴长度和 点的不断上升。
double y = fabs( P.y );
double x = sqrt( semiMnrAxLen * semiMnrAxLen - y * y );
// Calc the new Semi Major Axis length.
newSemiMajAxis = fabs( semiMnrAxLen * ( P.x / x ) );
【讨论】: