锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
1銆?鍫嗘帓搴忓畾涔?br> 銆n涓叧閿瓧搴忓垪Kl錛孠2錛?#8230;錛孠n縐頒負鍫嗭紝褰撲笖浠呭綋璇ュ簭鍒楁弧瓚沖涓嬫ц川(綆縐頒負鍫嗘ц川)錛?br> 銆(1) ki≤K2i涓攌i≤K2i+1 鎴?2)Ki≥K2i涓攌i≥K2i+1(1≤i≤ )
銆鑻ュ皢姝ゅ簭鍒楁墍瀛樺偍鐨勫悜閲廟[1..n]鐪嬪仛鏄竴媯靛畬鍏ㄤ簩鍙夋爲鐨勫瓨鍌ㄧ粨鏋勶紝鍒欏爢瀹炶川涓婃槸婊¤凍濡備笅鎬ц川鐨勫畬鍏ㄤ簩鍙夋爲錛氭爲涓換涓闈炲彾緇撶偣鐨勫叧閿瓧鍧囦笉澶т簬(鎴栦笉灝忎簬)鍏跺乏鍙沖瀛?鑻ュ瓨鍦?緇撶偣鐨勫叧閿瓧銆?br>銆愪緥銆戝叧閿瓧搴忓垪(10錛?5錛?6錛?5錛?0錛?0)鍜?70錛?6錛?0錛?5錛?5錛?0)鍒嗗埆婊¤凍鍫嗘ц川(1)鍜?2)
2銆佸ぇ鏍瑰爢鍜屽皬鏍瑰爢
銆鏍圭粨鐐?浜︾О涓哄爢欏?鐨勫叧閿瓧鏄爢閲屾墍鏈夌粨鐐瑰叧閿瓧涓渶灝忚呯殑鍫嗙О涓哄皬鏍瑰爢銆?br> 銆鏍圭粨鐐?浜︾О涓哄爢欏?鐨勫叧閿瓧鏄爢閲屾墍鏈夌粨鐐瑰叧閿瓧涓渶澶ц咃紝縐頒負澶ф牴鍫嗐?br> 娉ㄦ剰錛?br> 銆鈶犲爢涓換涓瀛愭爲浜︽槸鍫嗐?br> 銆 鈶′互涓婅璁虹殑鍫嗗疄闄呬笂鏄簩鍙夊爢(Binary Heap)錛岀被浼煎湴鍙畾涔塳鍙夊爢銆?/p>
3銆佸爢鎺掑簭鐗圭偣
銆鍫嗘帓搴?HeapSort)鏄竴鏍戝艦閫夋嫨鎺掑簭銆?br> 銆鍫嗘帓搴忕殑鐗圭偣鏄細鍦ㄦ帓搴忚繃紼嬩腑錛屽皢R[l..n]鐪嬫垚鏄竴媯靛畬鍏ㄤ簩鍙夋爲鐨勯『搴忓瓨鍌ㄧ粨鏋勶紝鍒╃敤瀹屽叏浜屽弶鏍戜腑鍙屼翰緇撶偣鍜屽瀛愮粨鐐逛箣闂寸殑鍐呭湪鍏崇郴銆愬弬瑙佷簩鍙夋爲鐨勯『搴忓瓨鍌ㄧ粨鏋勩戯紝鍦ㄥ綋鍓嶆棤搴忓尯涓夋嫨鍏抽敭瀛楁渶澶?鎴栨渶灝?鐨勮褰曘?/p>
4銆佸爢鎺掑簭涓庣洿鎺ユ彃鍏ユ帓搴忕殑鍖哄埆
銆鐩存帴閫夋嫨鎺掑簭涓紝涓轟簡浠嶳[1..n]涓夊嚭鍏抽敭瀛楁渶灝忕殑璁板綍錛屽繀欏昏繘琛宯-1嬈℃瘮杈冿紝鐒跺悗鍦≧[2..n]涓夊嚭鍏抽敭瀛楁渶灝忕殑璁板綍錛屽張闇瑕佸仛n-2嬈?姣旇緝銆備簨瀹炰笂錛屽悗闈㈢殑n-2嬈℃瘮杈冧腑錛屾湁璁稿姣旇緝鍙兘鍦ㄥ墠闈㈢殑n-1嬈℃瘮杈冧腑宸茬粡鍋氳繃錛屼絾鐢變簬鍓嶄竴瓚熸帓搴忔椂鏈繚鐣欒繖浜涙瘮杈冪粨鏋滐紝鎵浠ュ悗涓瓚熸帓搴忔椂鍙堥噸澶嶆墽 琛屼簡榪欎簺姣旇緝鎿嶄綔銆?br> 銆鍫嗘帓搴忓彲閫氳繃鏍戝艦緇撴瀯淇濆瓨閮ㄥ垎姣旇緝緇撴灉錛屽彲鍑忓皯姣旇緝嬈℃暟銆?/p>
5銆佸爢鎺掑簭
鍫嗘帓搴忓埄鐢ㄤ簡澶ф牴鍫?鎴栧皬鏍瑰爢)鍫嗛《璁板綍鐨勫叧閿瓧鏈澶?鎴栨渶灝?榪欎竴鐗瑰緛錛屼嬌寰楀湪褰撳墠鏃犲簭鍖轟腑閫夊彇鏈澶?鎴栨渶灝?鍏抽敭瀛楃殑璁板綍鍙樺緱綆鍗曘?/p>
錛?錛夌敤澶ф牴鍫嗘帓搴忕殑鍩烘湰鎬濇兂
鈶?鍏堝皢鍒濆鏂囦歡R[1..n]寤烘垚涓涓ぇ鏍瑰爢錛屾鍫嗕負鍒濆鐨勬棤搴忓尯
鈶?鍐嶅皢鍏抽敭瀛楁渶澶х殑璁板綍R[1](鍗沖爢欏?鍜屾棤搴忓尯鐨勬渶鍚庝竴涓褰昍[n]浜ゆ崲錛岀敱姝ゅ緱鍒版柊鐨勬棤搴忓尯R[1..n-1]鍜屾湁搴忓尯R[n]錛屼笖婊¤凍R[1..n-1].keys≤R[n].key
鈶?鐢變簬浜ゆ崲鍚庢柊鐨勬牴R[1]鍙兘榪濆弽鍫嗘ц川錛屾晠搴斿皢褰撳墠鏃犲簭鍖篟[1..n-1]璋冩暣涓哄爢銆傜劧鍚庡啀嬈″皢R[1..n-1]涓叧閿瓧鏈澶х殑璁板綍R[1]鍜岃鍖?闂寸殑鏈鍚庝竴涓褰昍[n-1]浜ゆ崲錛岀敱姝ゅ緱鍒版柊鐨勬棤搴忓尯R[1..n-2]鍜屾湁搴忓尯R[n-1..n]錛屼笖浠嶆弧瓚沖叧緋籖[1..n-2].keys≤R [n-1..n].keys錛屽悓鏍瘋灝哛[1..n-2]璋冩暣涓哄爢銆?br> ……
鐩村埌鏃犲簭鍖哄彧鏈変竴涓厓绱犱負姝€?/p>
錛?錛夊ぇ鏍瑰爢鎺掑簭綆楁硶鐨勫熀鏈搷浣滐細
鈶?鍒濆鍖栨搷浣滐細灝哛[1..n]鏋勯犱負鍒濆鍫嗭紱
鈶?姣忎竴瓚熸帓搴忕殑鍩烘湰鎿嶄綔錛氬皢褰撳墠鏃犲簭鍖虹殑鍫嗛《璁板綍R[1]鍜岃鍖洪棿鐨勬渶鍚庝竴涓褰曚氦鎹紝鐒跺悗灝嗘柊鐨勬棤搴忓尯璋冩暣涓哄爢(浜︾О閲嶅緩鍫?銆?br> 娉ㄦ剰錛?br>鈶犲彧闇鍋歯-1瓚熸帓搴忥紝閫夊嚭杈冨ぇ鐨刵-1涓叧閿瓧鍗沖彲浠ヤ嬌寰楁枃浠墮掑鏈夊簭銆?br>鈶$敤灝忔牴鍫嗘帓搴忎笌鍒╃敤澶ф牴鍫嗙被浼鹼紝鍙笉榪囧叾鎺掑簭緇撴灉鏄掑噺鏈夊簭鐨勩傚爢鎺掑簭鍜岀洿鎺ラ夋嫨鎺掑簭鐩稿弽錛氬湪浠諱綍鏃跺埢錛屽爢鎺掑簭涓棤搴忓尯鎬繪槸鍦ㄦ湁搴忓尯涔嬪墠錛屼笖鏈夊簭鍖烘槸鍦ㄥ師鍚戦噺鐨勫熬閮ㄧ敱鍚庡線鍓嶉愭鎵╁ぇ鑷蟲暣涓悜閲忎負姝€?/p>
錛?錛夊爢鎺掑簭鐨勭畻娉曪細
void HeapSort(SeqIAst R)
{ //瀵筊[1..n]榪涜鍫嗘帓搴忥紝涓嶅Θ鐢≧[0]鍋氭殏瀛樺崟鍏?br> int i錛?br> BuildHeap(R)錛?//灝哛[1-n]寤烘垚鍒濆鍫?br> for(i=n;i>1錛沬--){ //瀵瑰綋鍓嶆棤搴忓尯R[1..i]榪涜鍫嗘帓搴忥紝鍏卞仛n-1瓚熴?br> R[0]=R[1]錛汻[1]=R[i];R[i]=R[0]錛?//灝嗗爢欏跺拰鍫嗕腑鏈鍚庝竴涓褰曚氦鎹?br>銆 Heapify(R錛?錛宨-1)錛?//灝哛[1..i-1]閲嶆柊璋冩暣涓哄爢錛屼粎鏈塕[1]鍙兘榪濆弽鍫嗘ц川
} //endfor
} //HeapSort
錛?錛?BuildHeap鍜孒eapify鍑芥暟鐨勫疄鐜?br>銆鍥犱負鏋勯犲垵濮嬪爢蹇呴』浣跨敤鍒拌皟鏁村爢鐨勬搷浣滐紝鍏堣璁篐eapify鐨勫疄鐜般?br>鈶?Heapify鍑芥暟鎬濇兂鏂規硶
銆 姣忚稛鎺掑簭寮濮嬪墠R[l..i]鏄互R[1]涓烘牴鐨勫爢錛屽湪R[1]涓嶳[i]浜ゆ崲鍚庯紝鏂扮殑鏃犲簭鍖篟[1..i-1]涓彧鏈塕[1]鐨勫煎彂鐢熶簡鍙樺寲錛屾晠闄 [1]鍙兘榪濆弽鍫嗘ц川澶栵紝鍏朵綑浠諱綍緇撶偣涓烘牴鐨勫瓙鏍戝潎鏄爢銆傚洜姝わ紝褰撹璋冩暣鍖洪棿鏄疪[low..high]鏃訛紝鍙』璋冩暣浠[low]涓烘牴鐨勬爲鍗沖彲銆?br>"絳涢夋硶"璋冩暣鍫?br>銆 R[low]鐨勫乏銆佸彸瀛愭爲(鑻ュ瓨鍦?鍧囧凡鏄爢錛岃繖涓ゆ5瀛愭爲鐨勬牴R[2low]鍜孯[2low+1]鍒嗗埆鏄悇鑷瓙鏍戜腑鍏抽敭瀛楁渶澶х殑緇撶偣銆傝嫢R[low]. key涓嶅皬浜庤繖涓や釜瀛╁瓙緇撶偣鐨勫叧閿瓧錛屽垯R[low]鏈繚鍙嶅爢鎬ц川錛屼互R[low]涓烘牴鐨勬爲宸叉槸鍫嗭紝鏃犻』璋冩暣錛涘惁鍒欏繀欏誨皢R[low]鍜屽畠鐨勪袱涓瀛愮粨鐐?涓叧閿瓧杈冨ぇ鑰呰繘琛屼氦鎹紝鍗砇[low]涓嶳[large](R[large].key=max(R[2low].key錛孯[2low+1]. key))浜ゆ崲銆備氦鎹㈠悗鍙堝彲鑳戒嬌緇撶偣R[large]榪濆弽鍫嗘ц川錛屽悓鏍風敱浜庤緇撶偣鐨勪袱媯靛瓙鏍?鑻ュ瓨鍦?浠嶇劧鏄爢錛屾晠鍙噸澶嶄笂榪扮殑璋冩暣榪囩▼錛屽浠 [large]涓烘牴鐨勬爲榪涜璋冩暣銆傛榪囩▼鐩磋嚦褰撳墠琚皟鏁寸殑緇撶偣宸叉弧瓚沖爢鎬ц川錛屾垨鑰呰緇撶偣宸叉槸鍙跺瓙涓烘銆備笂榪拌繃紼嬪氨璞¤繃絳涘瓙涓鏍鳳紝鎶婅緝灝忕殑鍏抽敭瀛楅愬眰絳涗笅 鍘伙紝鑰屽皢杈冨ぇ鐨勫叧閿瓧閫愬眰閫変笂鏉ャ傚洜姝わ紝鏈変漢灝嗘鏂規硶縐頒負"絳涢夋硶"銆?br> 銆 鍏蜂綋鐨勭畻娉曘愬弬瑙佹暀鏉愩?/p>
鈶uildHeap鐨勫疄鐜?br>銆銆瑕佸皢鍒濆鏂囦歡R[l..n]璋冩暣涓轟竴涓ぇ鏍瑰爢錛屽氨蹇呴』灝嗗畠鎵瀵瑰簲鐨勫畬鍏ㄤ簩鍙夋爲涓互姣忎竴緇撶偣涓烘牴鐨勫瓙鏍戦兘璋冩暣涓哄爢銆?br>銆銆鏄劇劧鍙湁涓涓粨鐐圭殑鏍戞槸鍫嗭紝鑰屽湪瀹屽叏浜屽弶鏍戜腑錛屾墍鏈夊簭鍙?鐨勭粨鐐歸兘鏄彾瀛愶紝鍥犳浠ヨ繖浜涚粨鐐逛負鏍圭殑瀛愭爲鍧囧凡鏄爢銆傝繖鏍鳳紝鎴戜滑鍙渶渚濇灝嗕互搴忓彿涓?錛?nbsp; -1錛?#8230;錛?鐨勭粨鐐逛綔涓烘牴鐨勫瓙鏍戦兘璋冩暣涓哄爢鍗沖彲銆?br> 銆 鍏蜂綋綆楁硶銆愬弬瑙佹暀鏉愩戙?/p>
5銆佸ぇ欏跺爢鎺掑簭瀹炵幇
void HeapSort ( Elem R[], int n ) ...{
// 瀵硅褰曞簭鍒桼[1..n]榪涜鍫嗘帓搴忋?br>for ( i=n/2; i>0; --i )
// 鎶奟[1..n]寤烘垚澶ч《鍫?br> HeapAdjust ( R, i, n );
for ( i=n; i>1; --i ) ...{
R[1]←→R;
// 灝嗗爢欏惰褰曞拰褰撳墠鏈粡鎺掑簭瀛愬簭鍒?br> // R[1..i]涓渶鍚庝竴涓褰曠浉浜掍氦鎹?br>HeapAdjust(R, 1, i-1);
// 灝哛[1..i-1] 閲嶆柊璋冩暣涓哄ぇ欏跺爢
}
} // HeapSort
鍏朵腑絳涢夌殑綆楁硶濡備笅鎵紺恒備負灝哛[s..m]璋冩暣涓?#8220;澶ч《鍫?#8221;錛岀畻娉曚腑“絳涢?#8221;搴旀部鍏抽敭瀛楄緝澶х殑瀛╁瓙緇撶偣鍚戜笅榪涜銆?br>void HeapAdjust (Elem R[], int s, int m) ...{
// 宸茬煡R[s..m]涓褰曠殑鍏抽敭瀛楅櫎R[s].key涔?br>// 澶栧潎婊¤凍鍫嗙殑瀹氫箟錛屾湰鍑芥暟璋冩暣R[s] 鐨勫叧
// 閿瓧錛屼嬌R[s..m]鎴愪負涓涓ぇ欏跺爢錛堝鍏朵腑
// 璁板綍鐨勫叧閿瓧鑰岃█錛?br>rc = R[s];
for ( j=2*s; j<=m; j*=2 ) ...{// 娌縦ey杈冨ぇ鐨勫瀛愮粨鐐瑰悜涓嬬瓫閫?br> if ( j<m && R[j].key<R[j+1].key) ++j;
if ( rc.key >= R[j].key ) break; // rc搴旀彃鍏ュ湪浣嶇疆s涓?br> R[s] = R[j]; s = j;
}
R[s] = rc; // 鎻掑叆
} // HeapAdjust
6銆?綆楁硶鍒嗘瀽
銆鍫嗘帓搴忕殑鏃墮棿錛屼富瑕佺敱寤虹珛鍒濆鍫嗗拰鍙嶅閲嶅緩鍫嗚繖涓ら儴鍒嗙殑鏃墮棿寮閿鏋勬垚錛屽畠浠潎鏄氳繃璋冪敤Heapify瀹炵幇鐨勩?br> 銆 鍫嗘帓搴忕殑鏈鍧忔椂闂村鏉傚害涓篛(nlgn)銆傚爢鎺掑簭鐨勫鉤鍧囨ц兘杈冩帴榪戜簬鏈鍧忔ц兘銆?br> 銆鐢變簬寤哄垵濮嬪爢鎵闇鐨勬瘮杈冩鏁拌緝澶氾紝鎵浠ュ爢鎺掑簭涓嶉傚疁浜庤褰曟暟杈冨皯鐨勬枃浠躲?br> 銆鍫嗘帓搴忔槸灝卞湴鎺掑簭錛岃緟鍔╃┖闂翠負O(1)錛?br> 銆瀹冩槸涓嶇ǔ瀹氱殑鎺掑簭鏂規硶銆?/p>
鍒ゆ柇鐐逛笌綰挎鐨勫寘鍚叧緋伙紝涔熷氨鏄垽鏂偣涓庣嚎鐨勬渶鐭窛紱繪槸鍚︿綅浜庡宸寖鍥村唴銆傞犲瀷涓父鐢ㄧ殑綰挎鏈変笁縐嶏細
錛?錛夌洿綰挎錛岋紙2錛夊渾閿ユ洸綰挎錛堜富瑕佹槸鍦嗗姬錛夛紝錛?錛夊弬鏁版洸綰匡紙涓昏鏄疊ezier錛孊鏍鋒潯涓嶯URBS鏇茬嚎錛夈傜偣涓庨潰鐨勫寘鍚垽瀹氫篃綾諱技鍦板垎涓轟笁縐嶆儏鍐點備笅闈㈠垎鍒璁恒?/font>
1銆佺偣涓庣洿綰挎鐨勫寘鍚垽瀹?/font>
鍋囪鐐瑰潗鏍囦負P(x, y, z)錛岀洿綰挎绔偣涓篜1(x1, y1, z1)錛孭2(x2,y2,z2)錛屽垯鐐筆鍒扮嚎孌礟1P2鐨勮窛紱葷殑騫蟲柟涓?/font>
d2=(x-x1)2+(y-y1)2+(z-z1)2-[(x2-x1)(x-x1)+(y2-y1)(y-y1)+(z2-z1)(z-z1)]2/[(x2-x1)2+(y2-y1)2+(z2-z1)2]
褰揹2<a2鏃訛紝璁や負鐐瑰湪綰挎錛堟垨鍏跺歡闀跨嚎錛変笂錛岃繖鏃惰繕闇榪涗竴姝ュ垽鏂偣鏄惁钀藉湪鐩寸嚎孌電殑鏈夋晥鍖洪棿鍐呫傚彧瑕佸鍧愭爣鍒嗛噺榪涜姣旇緝錛屽亣璁劇嚎孌典袱绔偣鐨剎鍒嗛噺涓嶇瓑錛堝惁鍒欐墍鏈夊垎閲忓潎鐩哥瓑錛岄偅涔堢嚎孌典袱绔偣閲嶅悎錛岀嚎孌甸鍖栦負涓鐐癸級錛岄偅涔堝綋x-x1涓巟-x2鍙嶅彿鏃訛紝鐐筆鍦ㄧ嚎孌電殑鏈夋晥鍖洪棿鍐呫?/font>
2銆佺偣涓庡渾閿ユ洸綰挎鐨勫寘鍚垽瀹?/font>
浠ュ渾寮т負渚嬶紝鍋囪鐐圭殑鍧愭爣涓?x, y, z)錛屽渾寮х殑涓績涓猴紙x0, y0, z0錛夛紝鍗婂緞涓簉錛岃搗濮嬭a1錛岀粓姝㈣a2銆傝繖浜涜搴﹂兘鏄浉瀵逛簬灞閮ㄥ潗鏍囩郴x杞磋岃█銆傚渾寮ф墍鍦ㄥ鉤闈負
銆銆銆銆ax+by+cz+d=0
鍏堝垽鏂偣鏄惁鍦ㄨ騫抽潰涓婏紝鑻ヤ笉鍦紝鍒欑偣涓嶅彲鑳借鍖呭惈銆傝嫢鍦紝鍒欓氳繃鍧愭爣鍙樻崲錛屾妸闂杞崲鍒頒簩緇寸殑闂銆?/font>
緇欏畾涓績涓猴紙x0, y0錛夛紝鍗婂緞涓簉錛岃搗濮嬭a1錛岀粓姝㈣a2鐨勫渾寮э紝瀵瑰鉤闈笂涓鐐筆錛坸, y錛夛紝鍒ゆ柇P鏄惁鍦ㄥ渾寮т笂錛屽彲鍒嗕簩姝ヨ繘琛屻傜涓姝ュ垽鏂璓鏄惁鍦ㄥ渾蹇冧負錛坸0, y0錛夛紝鍗婂緞涓簉鐨勫渾鐨勫渾鍛ㄤ笂錛屽嵆涓嬪紡鏄惁鎴愮珛錛?/font>
銆銆銆銆
絎簩姝ュ垽鏂璓鏄惁鍦ㄦ湁鏁堢殑鍦嗗姬孌靛唴銆?/font>
3銆佺偣涓庡弬鏁版洸綰跨殑鍖呭惈鍒ゅ畾
璁劇偣鍧愭爣涓篜(x, y, z)錛屽弬鏁版洸綰夸負Q(t)=(x(t), y(t), z(t))銆傜偣涔熷弬鏁版洸綰跨殑姹備氦璁$畻鍖呮嫭涓変釜姝ラ錛?/font>
錛?錛夎綆楀弬鏁皌鍊鹼紝浣縋鍒癚(t)鐨勮窛紱繪渶灝忥紱
錛?錛夊垽鏂璽鏄惁鍦ㄦ湁鏁堝弬鏁板尯闂村唴錛堥氬父涓篬0錛?]錛夛紱
錛?錛夊垽鏂璔(t)涓嶱鐨勮窛紱繪槸鍚﹀皬浜巃 銆傝嫢錛?錛夛紝錛?錛夋鐨勫垽鏂潎涓?#8220;鏄?#8221;錛屽垯鐐瑰湪鏇茬嚎涓婏紱鍚﹀垯鐐逛笉鍦ㄦ洸綰夸笂銆?/font>
絎竴姝ュ簲璁$畻t錛屼嬌寰梶P-Q(t)|鏈灝忥紝
鍗?R(t)=(P-Q(t))(P-Q(t))=|P-Q(t)|2鏈灝?/font>
鏍規嵁寰Н鍒嗙煡璇嗭紝鍦ㄨ澶凴'(t)=0鍗?/font>
Q'(t)[P-Q(t)]=0
鐢ㄦ暟鍊兼柟娉曡В鍑簍鍊鹼紝鍐嶄唬鍏ユ洸綰垮弬鏁版柟紼嬪彲姹傚嚭鏇茬嚎涓婂搴旂偣鐨勫潗鏍囥傜錛?錛夈侊紙3錛夋鐨勫鐞嗘瘮杈冪畝鍗曪紝涓嶅啀璇﹁堪銆?/font>
4銆佺偣涓庡鉤闈㈠尯鍩熺殑鍖呭惈鍒ゅ畾
璁劇偣鍧愭爣涓篜(x, y, z)錛屽鉤闈㈡柟紼嬩負ax+by+cz+d=0銆傚垯鐐瑰埌騫抽潰鐨勮窛紱諱負
銆銆銆銆d=
鑻<a 錛屽垯璁や負鐐瑰湪騫抽潰涓婏紝鍚﹀垯璁や負鐐逛笉鍦ㄥ鉤闈笂銆傚湪閫犲瀷緋葷粺涓紝閫氬父浣跨敤騫抽潰涓婄殑鏈夌晫鍖哄煙浣滀負褰綋鐨勮〃闈€傚湪榪欑鎯呭喌涓嬶紝瀵硅惤鍦ㄥ鉤闈笂鐨勭偣榪樺簲榪涗竴姝ュ垽鍒畠鏄惁钀藉湪鏈夋晥鍖哄煙鍐呫傝嫢鐐硅惤鍦ㄨ鍖哄煙鍐咃紝鍒欒涓虹偣涓庤闈㈢浉浜わ紝鍚﹀垯涓嶇浉浜ゃ備笅闈互騫抽潰鍖哄煙澶氳竟褰負渚嬶紝浠嬬粛鏈夊叧綆楁硶銆?/font>
鍒ゆ柇騫抽潰涓婁竴涓偣鏄惁鍖呭惈鍦ㄥ悓騫抽潰鐨勪竴涓杈瑰艦鍐咃紝鏈夎澶氱綆楁硶錛岃繖閲屼粎浠嬬粛甯哥敤鐨勪笁縐嶏細鍙夌Н鍒ゆ柇娉曘佸す瑙掍箣鍜屾楠屾硶浠ュ強浜ょ偣璁℃暟媯楠屾硶銆?/font>
錛?錛夊弶縐垽鏂硶
鍋囪鍒ゆ柇鐐逛負P0銆傚杈瑰艦欏剁偣鎸夐『搴忔帓鍒椾負P1P2…Pn銆傚鍥?.5.2鎵紺恒備護Vi=Pi-P0, i=1, 2, …, n, Vn+1=V1銆?/font>
閭d箞錛孭0鍦ㄥ杈瑰艦鍐呯殑鍏呰鏉′歡鏄弶縐疺iXVi+1(i=1, 2, …, n)鐨勭鍙風浉鍚屻傚弶縐垽鏂硶浠呴傜敤浜庡嚫澶氳竟褰€傚綋澶氳竟褰負鍑規椂錛屽敖綆$偣鍦ㄥ杈瑰艦鍐呬篃涓嶈兘淇濊瘉涓婅堪鍙夌Н絎﹀彿閮界浉鍚屻傝繖鏃跺彲閲囩敤鍚庨潰浠嬬粛鐨勪袱縐嶆柟娉曘?/font>
鍥?.5.2 鍙夌Н鍒ゆ柇娉?/font>
錛?錛夊す瑙掍箣鍜屾楠屾硶
鍋囪鏌愬鉤闈笂鏈夌偣P0鍜屽杈瑰艦P1P2P3P4P5錛屽鍥?.5.3鎵紺恒傚皢鐐筆0鍒嗗埆涓嶱i鐩歌繛錛屾瀯鎴愬悜閲廣i=P-P0銆傚亣璁捐 PiP0Pi+1=ai銆傚鏋?img height=45 src="file:///F:/杞歡寮鍙?娓告垙寮鍙?鏁板/2.5.3鍖呭惈鍒ゅ畾綆楁硶.files/Image101.gif" width=38>=0錛屽垯鐐筆0鍦ㄥ杈瑰艦涔嬪錛屽鍥?.5.3(a)鎵紺恒傚鏋?img height=45 src="file:///F:/杞歡寮鍙?娓告垙寮鍙?鏁板/2.5.3鍖呭惈鍒ゅ畾綆楁硶.files/Image102.gif" width=38>=2π錛屽垯鐐筆0鍦ㄥ杈瑰艦涔嬪唴錛屽鍥?.5.3(b)鎵紺恒俛i鍙氳繃涓嬪垪鍏紡璁$畻錛氫護Si=Vi? Vi+1, Ci=Vi·Vi+1錛屽垯tg(ai)=Si/Ci錛屾墍浠i=arctg(Si/Ci)涓?/font>
ai鐨勭鍙峰嵆浠h〃瑙掑害鐨勬柟鍚戙?/font>
鍥?.5.3 澶硅涔嬪拰媯楠屾硶
鍦ㄥ杈瑰艦杈規暟涓嶅お澶氾紙<44錛夌殑鎯呭喌涓嬶紝鍙互閲囩敤涓嬪垪榪戜技鍏紡璁$畻ai銆?/font>
銆銆銆銆褰?|Si|≤|Ci|
銆銆褰?|Si|>|Ci|
鍏朵腑d=0.0355573涓哄父鏁般傚綋Σαi≥π
鏃訛紝鍙垽P0鍦ㄥ杈瑰艦鍐呫傚綋Σαi錛?#960; 鏃訛紝鍙垽P0鍦ㄥ杈瑰艦澶栥傝瘉鏄庣暐銆?/font>
錛?錛変氦鐐硅鏁版楠屾硶
褰撳杈瑰艦鏄嚬澶氳竟褰紝鐢氳嚦榪樺甫瀛旀椂錛屽彲閲囩敤浜ょ偣璁℃暟娉曞垽鏂偣鏄惁鍦ㄥ杈瑰艦鍐呫傚叿浣撳仛娉曟槸錛屼粠鍒ゆ柇鐐逛綔涓灝勭嚎鑷蟲棤絀瘋繙錛?/font>
姹傚皠綰夸笌澶氳竟褰㈣竟鐨勪氦鐐逛釜鏁般傝嫢涓暟涓哄鏁幫紝鍒欑偣鍦ㄥ杈瑰艦鍐咃紝鍚﹀垯錛岀偣鍦ㄥ杈瑰艦澶栥?/font>
濡傚浘2.5.4鎵紺猴紝灝勭嚎a, c鍒嗗埆涓庡杈瑰艦浜や簬浜岀偣鍜屽洓鐐癸紝涓哄伓鏁幫紝鏁呭垽鏂偣A錛孋鍦ㄥ杈瑰艦澶栥傝屽皠綰縝, d涓庡杈瑰艦浜や笁鐐瑰拰涓鐐癸紝涓哄鏁幫紝鎵浠錛孌鍦ㄥ杈瑰艦鍐呫?/font>
褰撳皠綰跨┛榪囧杈瑰艦欏剁偣鏃訛紝蹇呴』鐗規畩瀵瑰緟銆傚鍥?.5.4鎵紺猴紝灝勭嚎f榪囬《鐐癸紝鑻ュ皢浜ょ偣璁℃暟涓?錛屽垯浼氶敊璇湴鍒ゆ柇F鍦ㄥ杈瑰艦澶栥備絾鏄紝鑻ヨ瀹氬皠綰胯繃欏剁偣鏃訛紝璁℃暟涓?錛屽垯鍙堜細閿欒鍦板垽鏂偣E鍦ㄥ杈瑰艦鍐呫傛紜殑鏂規硶鏄紝鑻ュ叡浜《鐐圭殑涓よ竟鍦ㄥ皠綰跨殑鍚屼竴渚э紝鍒欎氦鐐硅鏁板姞2錛屽惁鍒欏姞1銆傛寜榪欑鏂規硶錛孍鐐硅涓?錛屾墍浠ュ湪澶氳竟褰㈠錛汧鐐硅鏁頒負錛戯紝鎵浠ュ湪澶氳竟褰㈠唴銆傝鑰呭彲浠ヨ嚜宸卞彟鍙栦竴浜涚偣鏉ラ獙璇併?/font>
鍥?.5.4 浜ょ偣璁℃暟娉?/font>
5銆佺偣涓庝簩嬈℃洸闈?鍙傛暟鏇查潰鐨勫寘鍚垽瀹?/font>
鍋囪鐐瑰潗鏍囦負P(x0, y0, z0)錛屼簩嬈℃洸闈㈡柟紼嬩負Q(x, y, z)=0錛屽垯褰搢Q(x0, y0, z0)|<? 鏃訛紝璁や負鐐瑰湪璇ヤ簩嬈℃洸闈笂錛屽湪閫犲瀷緋葷粺涓紝閫氬父浣跨敤瑁佸壀鐨勪簩嬈℃洸闈€傚湪榪欑鎯呭喌涓嬶紝榪樿鍒ゆ柇鐐規槸鍚﹀湪鏈夋晥鑼冨洿鍐呫傝鍓殑浜屾鏇查潰閫氬父鐢ㄦ湁鐞咮ezier鎴栨湁鐞咮鏍鋒潯鐨勫弬鏁扮┖闂翠笂鐨勯棴鍚堟洸綰挎潵瀹氫箟鏇查潰鐨勬湁鏁堣寖鍥達紝鏁呰鎶婄偣鎵瀵瑰簲鐨勫弬鏁扮┖闂寸殑鍙傛暟鍧愭爣璁$畻鍑烘潵錛屽啀鍒ゆ柇璇ュ弬鏁板潗鏍囨槸鍚﹀湪鍙傛暟絀洪棿鏈夋晥鍖哄煙涓娿?/font>
6銆佺偣涓庝笁緇村艦浣撶殑鍖呭惈鍒ゅ畾
鍒ゆ柇鐐規槸鍚﹁涓夌淮褰綋鎵鍖呭惈錛屽彲鍏堢敤鍓嶉潰鐨勬柟娉曞垽鏂偣鏄惁鍦ㄤ笁緇村艦浣撶殑琛ㄩ潰涓婏紝鐒跺悗鍒ゆ柇鐐規槸鍚﹀湪褰綋鍐呴儴錛屽叾鏂規硶鍥犲艦浣撲笉鍚岃屽紓銆備笅闈互鍑稿闈綋涓轟緥璇存槑銆?/font>
璁懼嚫澶氶潰浣撴煇涓潰鐨勫鉤闈㈡柟紼嬩負ax+by+cz+d=0錛岃皟鏁存柟紼嬬郴鏁扮殑絎﹀彿錛屼嬌褰揳x+by+cz+d<0鏃訛紝鐐?x,y,z)浣嶄簬璇ュ鉤闈袱渚т腑鍖呭惈璇ュ嚫澶氶潰浣撶殑涓渚с備簬鏄媯楠屼竴涓偣鏄惁鍦ㄥ嚫澶氶潰浣撳唴閮紝鍙媯楠屾槸鍚﹀畠瀵瑰嚫澶氶潰浣撶殑姣忎竴涓潰鍧囨弧瓚充互涓婄殑涓嶇瓑寮忓嵆鍙?/font>