『壹』 多邊形的布爾運算有幾種方式,並說明如何計算
種布爾運算方式:Union(並集)、Intersection(交集)和Subtraction(差集,包括A-B和B-A兩種)。數字元號化的邏輯推演法,包括聯合、相交、相減。在圖形處理操作中引用了這種邏輯運算方法以使簡單的基本圖形組合產生新的形體。並由二維布爾運算發展到三維圖形的布爾運算。
舉例:
組合結果運算符.....And.......Or.........Xor。
0......0.......................0..........0............0。
1......0.......................0..........1............1。
0......1.......................0..........1............1。
1......1.......................1..........1............0。
簡單的說:And:同為真時為真、Or:同為假時為假、Xor:相同為假。
表示方法
"∨" 表示"或"。
"∧" 表示"且"。
"┐"表示"非"。
"=" 表示"等價"。
1和0表示"真"和"假"
(還有一種表示,"+"表示"或", "·"表示"與")。
『貳』 判斷兩個多邊形是否相交
看看這個辦法行不行,
設這兩個多邊形為A和B,
你把A,B中的頂點的橫縱坐標值分別整理出來,
分步,
1,先看A,B的橫坐標的最大值與最小值,判斷兩多邊形的左右位置,列出A的橫坐標區間
2,再看A,B的縱坐標的最大值與最小值,判斷兩多邊形的上下位置,列出B的橫坐標區間
3,判斷關系
(1)在A,B的橫、縱坐標區間中,同時出現交集時,視為相交
(2)在A,B的橫、縱坐標區間中,同時出現包含關系時,視為包含
(3)其他情況視為隔離
『叄』 C#,求判斷線與多邊形、多邊形與多邊形是否相交的演算法
首先我得知道你的多邊形是不是凸多邊形(高中書里的多邊形默認都是指凸多邊形)
假設,這個多邊形的頂點是
N個按順時針或逆時針順序排列的點的
集合
如果是凸多邊形就簡單了,
線與多邊形相交,就只要判斷
這條線
是否與線段L1,2(第一和第二個頂點組成的線段)、L2,3、...LN,1這些線段相交就行了。
凹多邊形就判斷是不是和所有的頂點組合成的線段中存在相交的情況。
多邊形與多邊形相交
也轉換成線段和線段相交的問題來做吧。
『肆』 判斷兩個多邊形是否相交
看看這個辦法行不行,
設這兩個多邊形為A和B,
你把A,B中的頂點的橫縱坐標值分別整理出來,
分步,
1,先看A,B的橫坐標的最大值與最小值,判斷兩多邊形的左右位置,列出A的橫坐標區間
2,再看A,B的縱坐標的最大值與最小值,判斷兩多邊形的上下位置,列出B的橫坐標區間
3,判斷關系
(1)在A,B的橫、縱坐標區間中,同時出現交集時,視為相交
(2)在A,B的橫、縱坐標區間中,同時出現包含關系時,視為包含
(3)其他情況視為隔離
『伍』 請教檢測2個多邊形相交的演算法
設A多邊形點子:
int npol;
float xp[npol],yp[npol];
設B多邊形點子 NN 個,坐標:
float x[NN],y[NN];
做循環,判斷B多邊形有無任何一點落在A多邊形中,有則相交或重疊:
for (i=0;i<NN;i++) {
調用pnpoly( npol, &xp[0], &yp[0],x[i],y[i]);
}
判斷一點落在多邊形中的子程序:
int pnpoly(int npol, float *xp, float *yp, float x, float y)
{
int i, j, c = 0;
for (i = 0, j = npol-1; i < npol; j = i++) {
if ((((yp[i]<=y) && (y<yp[j])) ||
((yp[j]<=y) && (y<yp[i]))) &&
(x < (xp[j] - xp[i]) * (y - yp[i]) / (yp[j] - yp[i]) + xp[i]))
c = !c;
}
return c;
}
『陸』 C#,求判斷線與多邊形、多邊形與多邊形是否相交的演算法
首先我得知道你的多邊形是不是凸多邊形(高中書里的多邊形默認都是指凸多邊形)
假設,這個多邊形的頂點是 N個按順時針或逆時針順序排列的點的 集合
如果是凸多邊形就簡單了,
線與多邊形相交,就只要判斷 這條線 是否與線段L1,2(第一和第二個頂點組成的線段)、L2,3、...LN,1這些線段相交就行了。
凹多邊形就判斷是不是和所有的頂點組合成的線段中存在相交的情況。
多邊形與多邊形相交 也轉換成線段和線段相交的問題來做吧。
『柒』 計算機制圖怎樣求倆多邊形的交點,已知其拓撲結構
在數據結構中,弧段或鏈段是數據組織的基本對象。弧段文件由弧段記錄組成, 每個弧段記錄包括弧段標識碼、FN、TN、LP 和 RP。結點文件由結點記錄組成,包括每個 結點的結點號、結點坐標及與該結點連接的弧段標識碼等。多邊形文件由多邊形記錄組成, 包括多邊形標識碼、組成該多邊形的弧段標識碼以及相關屬性等。現以圖 2-11 為例,列出 拓撲數據結構的弧段文件格式(表 2-5): 3 表2-5 拓撲數據結構的弧段文件構成 拓撲數據結構最重要的技術特徵和貢獻是具有拓撲編輯功能。這種拓撲編輯功能,不 但保證數字化原始數據的自動查錯編輯, 而且可以自動形成封閉的多邊形邊界, 為由各個單 獨存儲的弧段組成所需要的各類多邊形及建立空間資料庫奠定基礎。 拓撲編輯功能包括多邊形連接編輯和結點連接編輯,前者指順序連接組成封閉多邊形 一組線段的編輯,後者指順序連接環繞某個結點所有多邊形的編輯。具體的編輯演算法如下: (1)多邊形連接編輯。例如,設需要對多邊形 P1 進行編輯,其演算法過程為: ①從表 2-5 所示的弧段文件中,檢出與當前編輯的多邊形 P1 相關的所有記錄: ②在檢出的記錄中,計算機檢查當前編輯的多邊形 P1 所處的位置: 如果 P1 位在左多邊形位置,將之與位於右多邊形位置的多邊形號相交換,同時 也將該記錄的結點號位置作相應的交換;反之,如果當前編輯的多邊形 P1 位於右多邊形位 置,則該記錄的所有數據項順序不作改變。 按照上述規則,檢出的記錄變為以下形式: ③從經過代碼位置轉換的記錄中, 任取一個起結點作為起點, 順序連接各個結點, 必要時可對記錄的前後順序作調整,使得連接的結點能自行封閉,如圖 2-12 所示。 如果依照上述順序連接的結點不能自行閉合,或者出現記錄缺損或記錄多餘等情 況,則表示弧段文件有錯,必須改正出錯的記錄。直到所有多邊形都經過編輯和改正,再轉 入結點連接編輯。 (2)結點連接編輯。例如,設需要對結點 N2 進行編輯,其演算法過程為: 4 ①從表 2-5 所示的弧段文件中,檢出與當前編輯的結點 N2 相關的所有記錄: ②在檢出的記錄中,計算機檢查當前編輯的結點 N2 所處的位置: 如果 N2 位在起結點位置,將之與位於終結點位置的結點號相交換,同時也符該 記錄的多邊形號位置作相應的交換;反之, 如果當前編輯的結點 N2 位於終結點位置, 則該記 錄所有數據項順序不作改變。 按照上述規則,檢出的記錄變為以下形式: ③從經過代碼位置轉換的記錄中,任取一個左多邊形作為起點,順序連接各個多 邊形,同樣,必要時可對記錄的前後順序作調整,使得連接的多邊形能首尾呼應,如圖 2-13 所示。 如果依照上述序連接的多邊形不能首尾呼應,或者出現記錄缺損或記錄多餘等情 況,同樣也表示弧段文件有錯,必須改正出錯的記錄。直到所有結點都經過編輯和改正,才 能將該弧段文件用於結點文件和多邊形文件的自動生成以及資料庫的建立。
『捌』 如何判斷2個多邊形相交
設這兩個多邊形為A和B,
你把A,B中的頂點的橫縱坐標值分別整理出來,
分步,
1,先看A,B的橫坐標的最大值與最小值,判斷兩多邊形的左右位置,列出A的橫坐標區間
2,再看A,B的縱坐標的最大值與最小值,判斷兩多邊形的上下位置,列出B的橫坐標區間
3,判斷關系
(1)在A,B的橫、縱坐標區間中,同時出現交集時,視為相交
(2)在A,B的橫、縱坐標區間中,同時出現包含關系時,視為包含
(3)其他情況視為隔離
『玖』 CAD中交集,差集,並集的操作應用以及原理
正常啟動auto cad2013軟體,選擇「文件|保存」菜單命令,將其保存為「差集運算.dwg」;
執行「圓」命令(c)和執行「多邊形」命令(pol),隨意繪制一個圓圖形和一個多邊形圖形相交;
執行「繪圖|面域」菜單命令,根據命令行提示,將二個圖形轉換為面域;
執行「修改|實體編輯|差集」菜單命令,根據命令行提示「subtract選擇要從中減去的實體、曲面和面域:」,選擇「圓」對象,按空格鍵確定,命令行提示「選擇要減去的實體、曲面和面域:」,再選擇多邊形對象,並按空格鍵確定,從而完成圖形的差集運算。
用同樣的方法,還可以對圖形對象進行「並集」和「交集」操作。
布爾運算是針對兩個或者兩個以上實體或者面域來說的概念。交集的結果就是共有部分,差集的結果是從一個實體裡面 去掉共有部分,並集的結果是所有的部分加在一起。
『拾』 在CAD的布爾運算中交集與差集怎麼操作
1、正常啟動auto cad2013軟體,選擇「文件|保存」菜單命令,將其保存為「差集運算.dwg」。