Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何找到集合中在一个点上重合的所有直线?_Matlab_Math_Geometry_Linear Algebra_Computational Geometry - Fatal编程技术网

Matlab 如何找到集合中在一个点上重合的所有直线?

Matlab 如何找到集合中在一个点上重合的所有直线?,matlab,math,geometry,linear-algebra,computational-geometry,Matlab,Math,Geometry,Linear Algebra,Computational Geometry,假设给我一组线,我如何将这组线划分成若干簇,使每个簇中的所有线在一个点上重合?如果线的数目N是合理的,那么可以使用O(N^3)算法: 对于任何一对线(形式为A*x+B*y+C=0),检查它们是否相交-排除具有行列式的平行线对和不重合线对 |A1 B1| = 0 |A2 B2| 对于每个相交对,如果另一条线共享相同的相交点,行列式为: |A1 B1 C1| |A2 B2 C2| = 0 |A3 B3 C3| 如果N太大,无法使用立方算法,则计算所有交点(最多为O(N^2),

假设给我一组线,我如何将这组线划分成若干簇,使每个簇中的所有线在一个点上重合?

如果线的数目N是合理的,那么可以使用O(N^3)算法: 对于任何一对线(形式为
A*x+B*y+C=0
),检查它们是否相交-排除具有行列式的平行线对和不重合线对

|A1 B1|
        = 0 
|A2 B2|
对于每个相交对,如果另一条线共享相同的相交点,行列式为:

|A1 B1 C1|
|A2 B2 C2| = 0 
|A3 B3 C3|

如果N太大,无法使用立方算法,则计算所有交点(最多为O(N^2),并将这些点添加到任何贴图结构(例如,哈希表)。检查匹配点。不要忘记数值误差问题。

这是一个计算问题吗?你用什么语言?不是。一个算法/分析问题。不管怎样,我用的是MATLAB。我想你需要提供更多的细节。这些是直线(即无限长)还是线段?例如,如果有3条线段,它们是三角形的边,那么簇应该是什么?谢谢。1.它们是直线(infinite),2。那是不会发生的。当你有3条非平行的无限直线时,那怎么不形成三角形呢?顺便说一句,除非我在翻译中漏掉了什么,否则最好是“相交”而不是“重合”