資源描述:
《多邊形位置關(guān)系判斷程序.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、多邊形位置關(guān)系判斷程序作業(yè)簡(jiǎn)介一.需求說明對(duì)軟件需求完全理解對(duì)于軟件開發(fā)工作的成功是至關(guān)重要的,需求說明的任務(wù)是發(fā)現(xiàn)、規(guī)范的過程,有益于提高軟件開發(fā)過程中的能見度,便于對(duì)軟件開發(fā)過程中的控制與管理,便于采用工程方法開發(fā)軟件,提高軟件的質(zhì)量,便于開發(fā)人員、維護(hù)人員、管理人員之間的交流、協(xié)作,并作為工作成果的原始依據(jù),并且在向潛在用戶傳遞軟件功能、性能需求,使其能夠判斷該軟件是否與自己的需求相關(guān)。我們的程序的功能是可以判斷在同一平面內(nèi)任意兩個(gè)多邊形之間的位置關(guān)系,其位置關(guān)系分為:相交,相離,包含3種情況。輸入條件是兩個(gè)多邊形各自的邊數(shù)及每個(gè)多邊形各自頂點(diǎn)的坐標(biāo),輸
2、入多邊形坐標(biāo)時(shí)要注意按逆時(shí)針或順時(shí)針的順序輸入,不然程序?qū)o(wú)法構(gòu)成多邊形,出現(xiàn)錯(cuò)誤。輸出是兩個(gè)多邊形的位置關(guān)系結(jié)果,是相交,相離,包含(能反應(yīng)哪個(gè)多邊形包含另外一個(gè)多邊形)之間的一種情況。二.作業(yè)目的秉承著實(shí)踐出真知的思想,為了讓我們更好的理解和運(yùn)用所學(xué)的C語(yǔ)言及CAD技術(shù)知識(shí),老師布置了這次團(tuán)隊(duì)合作項(xiàng)目。本項(xiàng)目不僅能提高我們對(duì)C言語(yǔ)和CAD技術(shù)的理解掌握,更可以培養(yǎng)我們的團(tuán)隊(duì)合作精神,在完成項(xiàng)目的過程中,我們會(huì)遇到種種困難,而當(dāng)我們并肩作戰(zhàn),克服困難后,我們會(huì)發(fā)現(xiàn)彼此間更加信任,友誼更加深厚。我們體會(huì)到團(tuán)隊(duì)合作的意義,而團(tuán)隊(duì)合作精神是以后步入社會(huì)必不可少的。
3、三.成果描述本產(chǎn)品是一個(gè)具有判斷任意兩個(gè)在同一平面內(nèi)多邊形之間的位置關(guān)系的程序,其核心開發(fā)語(yǔ)言是C語(yǔ)言,具體有C語(yǔ)言技術(shù)和CAD技術(shù)結(jié)合實(shí)現(xiàn)。本產(chǎn)品通俗易懂,即使沒有C語(yǔ)言和CAD技術(shù)基礎(chǔ)知識(shí)的人也能熟練使用,本產(chǎn)品本身不是一個(gè)具有完善功能的軟件,只是其中一個(gè)具有獨(dú)立功能的程序。如結(jié)合其他程序一起使用,將具有完整的功能。四.應(yīng)用目標(biāo)當(dāng)今社會(huì),制造業(yè)正處于高速發(fā)展中,競(jìng)爭(zhēng)異常激烈,在激烈的的競(jìng)爭(zhēng)中時(shí)間顯得尤為寶貴,本程序的應(yīng)用目標(biāo)就是在產(chǎn)品設(shè)計(jì)和制造過程等中迅速判斷空間位置關(guān)系,可以判斷是否發(fā)生干涉等問題,比如在機(jī)械制造中利用本程序迅速判斷待加工體機(jī)床是否發(fā)生干
4、涉,在零件裝配時(shí),裝配件間是否發(fā)生干涉等等。利用本程序,可以節(jié)約大量時(shí)間,為使用者減輕工作量讓其擁有更強(qiáng)的競(jìng)爭(zhēng)力。五.參考資料《C程序設(shè)計(jì)(第二版)》譚浩強(qiáng)編著清華大學(xué)出版社《計(jì)算機(jī)圖形學(xué)(第三版)》孫家廣等編著清華大學(xué)出版社《程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)第二版》鄭平安曾大亮編著清華大學(xué)出版社《VisualC++開發(fā)入門與編程實(shí)踐》屈磊李媛媛編著電子工業(yè)出版社六.算法說明這個(gè)算法的核心為參數(shù)法的應(yīng)用:參數(shù)法:已知第一條線段兩點(diǎn):(X0,Y0),(X1,Y1)參數(shù)方程為:X=(X1-X0)*T1+X0;(0<=T1<=1)Y=(Y1-Y0)*T1+Y0;(0<=T1<
5、=1)同理:第二條線段參數(shù)方程((X2,Y2),(X3,Y3) )X=(X3-X2)*T2+X2;(0<=T2<=1)Y=(Y3-Y2)*T2+Y2;(0<=T2<=1)聯(lián)立方程得:X=(X1-X0)*T1+X0=(X3-X2)*T2+X2Y=(Y1-Y0)*T1+Y0=(Y3-Y2)*T2+Y2即(X1-X0)*T1+(X0-X2)=(X3-X2)*T2(Y1-Y0)*T1+(Y0-Y2)=(Y3-Y2)*T2其中0<=T1<=1,0<=T2<=1令X1-X0=E,X0-X2=F,X3-X2=GY1-Y0=H,Y0-Y2=M,Y3-Y2=N即E*T1+F=G
6、*T2H*T2+M=N*T2解得:T1=(M*G-F*N)/(E*N-H*G)T2=(M*E-F*H)/(E*N-H*G)下面進(jìn)行分類討論:E*N-H*G!=0時(shí)T1和T2均有確定解這時(shí)如果0<=T1,T2<=1則交點(diǎn)落在兩線段之間,兩線段相交E*N-H*G=0時(shí),即(X1-X0)*(Y3-Y2)=(Y1-Y0)*(X3-X2)1).X1-X0!=0且X3-X2!=0推得K1=(Y1-Y0)/(X1-X0)=(Y3-Y2)/(X3-X2)=K2即兩線段平行(兩線段均存在斜率)2).X1-X0=0且X3-X2=0此時(shí)由于兩線段兩端點(diǎn)不重合,即Y1-Y0!=0且Y
7、3-Y2!=0即兩線段均不存在斜率,均垂直于X軸,兩線段平行3).X1-X0=E和X0-X2=F中有一個(gè)為0,假設(shè)X1-X0!=0且X3-X2=0,由于(X1-X0)*(Y3-Y2)=(Y1-Y0)*(X3-X2),推得Y3-Y2=0,從而(X2,Y2),(X3,Y3)兩點(diǎn)重合,舍去。同理,也不可能X1-X0=0且X3-X2!=0所以由以上可得E*N-H*G=0是兩線段平行的充要條件。(1-1)當(dāng)E*N-H*G=0時(shí),做近一步討論:I)M*G-F*N!=0且M*E-F*H!=0時(shí)由T1,T2的表達(dá)式可得T1,T2均無(wú)解,即由幾何關(guān)系可得此時(shí)兩條線段平行且相距一
8、定距離。所以此時(shí)兩線段無(wú)交點(diǎn)。II)M