道歉,如果这被认为是一个重复的问题,但我在这里看到的答案对我的需求来说太复杂了。
我只需要找出一个线段是否与圆相交。我不需要从圆心找到距离线的距离,我不需要求解交点。
我需要简单的原因是我必须在SQL中编写代码并且无法调用外部库,并且需要在WHERE子句中编写此公式...基本上它必须在单个中完成声明我可以将值插入。
假设有2个点A(Ax,Ay)和B(Bx,By)来描述线段,以及一个带有中心点C(Cx,Cy)和半径R的圆,我正在使用的公式是:< / p>
(R R ((Ax-Bx)(Ax-Bx)+(Ay-By)(Ay-By))) - (((Ax-Cx)(By-Cy)) - ((Bx-Cx)(Ay-Cy)))&gt; 0
此公式取自link text,基于0,0居中圈。
我发帖的原因是我得到了奇怪的结果,我想知道我是否做了一些愚蠢的事情。 :(
答案 0 :(得分:0)
虽然这并没有完全回答你的问题:你真的必须在SQL-Select上动态计算吗?这意味着DB系统必须计算表中每一行的公式(或者分别保留条件的剩余条件的每一行),这可能会导致性能不佳。
相反,您可以考虑创建一个单独的布尔列,在插入/更新后触发器中计算其值。反过来,您甚至不需要将测试放在单行公式中。使用单独的列还有另一个优点:您可以在该列上创建索引,以便您可以非常快速地获取交叉/非交叉记录集。