線段 矩形 矩形與矩形 相交

2021-06-21 07:01:40 字數 1911 閱讀 6766

[csharp]view plain

copy

print?

/*功能:判斷線段和矩形是否相交 

先判斷線段的倆個端點是否在矩形的內部,在就必然相交

其次判斷線段的包圍盒是否和矩形相交,不相交的話線段和矩形肯定也不相交   

最後判斷,矩形的四個頂點是否位於線段的兩側,是則必然相交,否則就不相交*/

[csharp]view plain

copy

print?

[csharp]view plain

copy

print?

[csharp]view plain

copy

print?

using

system;  

using

system.collections.generic;  

using

system.linq;  

using

system.text;  

namespace

public

float

x,y;  

}  public

class

line  

public

point p1;  

public

point p2;  

}  public

class

rectangle  

public

point p1;  

public

point p2;  

public

float

minx  }  

public

float

maxx  }  

public

float

miny  }  

public

float

maxy  }  

};  

public

static

bool

pointinsiderectangle(point point,rectangle rect)  

// -1 點位於線段的左側,0 點位於線段上面 ,1 點位於線段右側

public

static

intpointatlineleftright(point point,line line)  

public

static

bool

istwolineintersect(line line1,line line2)  

public

static

bool

islineintersectrect(line line,rectangle rect)  

public

static

bool

lineconverttorectangle(line line,rectangle rect)  

public

static

void

main()  

}  }  

[csharp]view plain

copy

print?

"code"

class

="csharp"

>    

public

bool

rectcrossrect(rect r1, rect r2, 

refvector2 start, 

refvector2 end)  

矩形重疊(矩形相交,dp)

平面有n個矩形,第乙個矩形左下標為 x1 1 y1 1 右上標為 x2 1 y2 1 如果有2個或多個矩形有公共區域則認為他們相互重疊 計算平面內重疊矩形數量最多的地方有幾個矩形相互重疊 輸入第一行n 2 n 50 表示矩形的個數 第二行n個整數x1 i 10 9 x1 i 10 9 表示左下角的橫...

演算法5 8 矩形相交

在70年代,計算機已經發展了一段時間,晶元的規模也越來越複雜。因此人們不得不發明一些晶元設計的軟體。在軟體中完畢晶元的設計 除錯工作。當時。模擬執行的時候依據電路的設計,模擬的過程中須要不斷地推斷矩陣是否相交。那時候還沒有非常好的演算法。人們僅僅能通過暴力手段逐個推斷矩陣是否相交。在今天看來,這樣的...

使用Python判斷線段是否與矩形相交

我們在初等幾何中學過如何判斷兩條直線是否相交。在歐幾里得平面上,兩條直線要麼平行,要麼相交,要麼重合。這是歐幾里得第五公設的推論。相交的兩條直線恰好有乙個交點,而重合的兩條直線有無數個交點。判斷兩條直線位置關係的代數方法是 聯立兩條之直線方程,無解,則兩條直線平行,存在唯一解則兩條直線相交,存在兩個...