【发布时间】:2021-03-22 22:56:20
【问题描述】:
问题如下:
给定两个不同的点 P1 = (x1,y1), P2 = (x2,y2) 和点 G=(a,b),求 c 和 d 使得 G'=(c,d) 是 G 关于直线 P 的反射1P2
我正在寻找一种快速的方法。由于我正在研究浮点数,因此我还想使用一种方法来最小化科学计数法中指数的绝对值,但这是第二要务。
我尝试过的:设 R 是向量 (GP1) 到向量 (P2-P1 的投影的向量子>)。然后,通过取 Q = P1 + R 来实现反射,这是 G 到线上的投影,然后 G' = 2Q-G。现在这一切都很酷而且花花公子,但计算投影是这里的难点。
我如何计算向量 A 在 B 上的投影:
A和B的标量积是|A|*|B|*cos(theta),其中theta是A到B的有向角。取xA可以得到标量积的值sub>xB + yAyB。但是投影的长度是 |A|*cos(theta),所以我们必须将标量积除以 |B|。现在,我们有长度,但没有方向。方向是沿向量 B,所以我们必须乘以沿 B 的单位向量,即 B/|B|。最终,我们得到公式 (xAxB + yAyB)*B/|B |2.
实际问题:
这是一种迂回的方法,我正在从坐标中寻找更直接的公式。此外(虽然不太重要),当我正在处理的数字很大时,我在计算投影和标量积时需要计算向量的长度是有问题的,因为我可能会遇到浮点溢出或类似的情况.
如果这有任何意义,我在 OCaml 工作。
提前致谢
【问题讨论】:
-
最小化指数的绝对值有什么好处?
标签: algorithm floating-point geometry formula