4¡¢ÍøÂç·ÖÎöÊý¾Ý²Ù×÷ »¡¶Î·ÖÅä·½°¸
ÉèÖû¡¶Î·ÖÅä·½°¸
short _SetAllocatedArcs(short ai,long *arcsLst,long len); ²ÎÊý£ºÈë¿Ú ai - ¹¤×÷ÇøºÅ
*arcsLst - »¡¶Î·ÖÅäÁбí
len -
»¡¶Î·ÖÅäÁÐ±í³¤¶È
³ö¿Ú ÎÞ
·µ»ØÖµ ³É¹¦·µ»Ø1£¬Ê§°Ü·µ»Ø0¡£
È¡ËùÓл¡¶ÎÊý
long _GetAllocatedArcsNum(short ai); ²ÎÊý£ºÈë¿Ú ai - ¹¤×÷ÇøºÅ
³ö¿Ú ÎÞ
·µ»ØÖµ ³É¹¦·µ»Ø»¡¶ÎÊý£¬Ê§°Ü·µ»Ø0¡£
È¡»¡¶Î·ÖÅä·½°¸
short _GetAllocatedArcs(short ai,long *arcsLst,long len); ²ÎÊý£ºÈë¿Ú ai - ¹¤×÷ÇøºÅ
len - »¡¶Î·ÖÅäÁÐ±í³¤¶È ³ö¿Ú *arcsLst - »¡¶Î·ÖÅäÁÐ±í ·µ»ØÖµ ³É¹¦·µ»Ø1£¬Ê§°Ü·µ»Ø0¡£
È¡»¡¶Î·ÖÅäÐÅÏ¢
short _GetArcAllocInfo(short ai,long li,ARC_ALLOC_INFO *allocInf); ²ÎÊý£ºÈë¿Ú ai - ¹¤×÷ÇøºÅ li - »¡¶ÎºÅ
³ö¿Ú *allocInf - ·µ»Ø»¡¶Î·ÖÅäÐÅÏ¢ ·µ»ØÖµ ³É¹¦=1£¬Ê§°Ü=0¡£ ÉèÖû¡¶Î·ÖÅäÐÅÏ¢
short _SetArcAllocInfo(short ai,long li,ARC_ALLOC_INFO *allocInf); ²ÎÊý£ºÈë¿Ú ai - ¹¤×÷ÇøºÅ li - »¡¶ÎºÅ
*allocInf - »¡¶Î·ÖÅäÐÅÏ¢ ³ö¿Ú
·µ»ØÖµ ³É¹¦=1£¬Ê§°Ü=0¡£
½áµãת½ÇȨֵ
ÉèÖýáµãµÄת½ÇȨֵÀàÐÍ
int WINAPI _SetLinkValType(short ai,long ni,short valType); ²ÎÊý£ºÈë¿Ú ai -¹¤×÷ÇøºÅ ni -½áµãºÅ
valtype -Á¬Í¨ÖµÊý¾ÝÀàÐÍ£¬¿ÉÒÔÊÇÏÂÁÐÖµÖ®Ò»£ºBIT_TYPE¡¢BYTE_TYPE¡¢
SHORT_TYPE¡¢LONG_TYPE¡¢FLOAT_TYPE¡¢DOUBLE_TYPE¡£
·µ»ØÖµ ·µ»Ø½áµãÊý¾ÝÀàÐÍ¡£Ïêϸ˵Ã÷Çë²ÎÔÄ_GetNodº¯Êý¡£
È¡½áµãµÄת½ÇȨֵ
int _GetNodLink(short ai,long ni,long li0,long li1, double *val,short *valtype); ²ÎÊý£ºÈë¿Ú ai -¹¤×÷ÇøºÅ ni -½áµãºÅ
li0 -ǰһÌõ»¡¶Î li1 -ºóÒ»Ìõ»¡¶Î
³ö¿Ú *val-·µ»Ø»¡¶ÎÁ¬Í¨Öµ£¬Á¬Í¨Öµ·¶Î§ÓÉÁ¬Í¨ÖµÊý¾ÝÀàÐ;ö¶¨
*valtype -·µ»ØÁ¬Í¨ÖµÊý¾ÝÀàÐÍ£¬¿ÉÒÔÊÇÏÂÁÐÖµÖ®Ò»£ºBIT_TYPE¡¢
BYTE_TYPE¡¢SHORT_TYPE¡¢LONG_TYPE¡¢FLOAT_TYPE¡¢DOUBLE_TYPE¡£
Èô²»ÐèÒª·µ»ØÁ¬Í¨ÖµÊý¾ÝÀàÐÍ£¬Ôòvaltype¿ÉÒÔΪNULL¡£
·µ»ØÖµ ·µ»Ø½áµãÊý¾ÝÀàÐÍ¡£Ïêϸ˵Ã÷Çë²ÎÔÄ_GetNodº¯Êý¡£
¸üнáµãµÄת½ÇȨֵ
int _UpdateNodLink(short ai,long ni, long li0,long li1,double *val); ²ÎÊý£ºÈë¿Ú ai -¹¤×÷ÇøºÅ ni -½áµãºÅ
li0 -ǰһÌõ»¡¶Î li1 -ºóÒ»Ìõ»¡¶Î
*val -»¡¶ÎÁ¬Í¨Öµ£¬Á¬Í¨ÖµµÄȡֵȡ¾öÓÚ_SetLinkValType ()º¯ÊýËùÉèÀà
ÐÍ£¬
³ö¿Ú ÎÞ
·µ»ØÖµ 1/0 - ³É¹¦/ʧ°Ü
˵Ã÷£ºÈç¹ûniºÅ½áµãÒѾÓÐÁ¬Í¨·½Õó£¬ÄÇô¸Ãº¯Êý¸üÐÂÔÀ´µÄÁ¬Í¨·½Õó£»·ñÔò¾Í½«Á¬Í¨·½ÕóÌí¼Óµ½niºÅ½áµã£¬²¢¸Ä±ä½áµãÊý¾ÝÀàÐÍ(λ»òNOD_LINK)¡£
ÍøÂçÖÐÐÄÊý¾Ý
È¡ÍøÂçÖÐÐĽáµãÊý¾Ý
int _GetNodCenter(short ai,long ni,NOD_CENTER_INFO *ncinf); ²ÎÊý£ºÈë¿Ú ai -¹¤×÷ÇøºÅ
ni -½áµãºÅ ³ö¿Ú *ncinf-·µ»ØÍøÂçÖÐÐĽáµãÊý¾Ý
·µ»ØÖµ ·µ»Ø½áµãÊý¾ÝÀàÐÍ£¬Ïêϸ˵Ã÷Çë²ÎÔÄ_GetNodº¯Êý¡£ ¸üÐÂÍøÂçÖÐÐĽáµãÊý¾Ý
int _UpdateNodCenter(short ai,long ni,NOD_CENTER_INFO *ncinf); ²ÎÊý£ºÈë¿Ú ai -¹¤×÷ÇøºÅ
ni -½áµãºÅ *ncinf-ÍøÂçÖÐÐĽáµãÊý¾Ý
³ö¿Ú ÎÞ
·µ»ØÖµ 1/0 - ³É¹¦/ʧ°Ü
˵Ã÷£ºÈç¹ûniºÅ½áµãÒѾÓÐÍøÂçÖÐÐĽáµãÊý¾Ý£¬ÄÇô¸Ãº¯Êý¸üÐÂÔÀ´µÄÍøÂçÖÐÐĽáµãÊý¾Ý£»·ñÔò¾Í½«ÍøÂçÖÐÐĽáµãÊý¾ÝÌí¼Óµ½niºÅ½áµã£¬²¢¸Ä±ä½áµãÊý¾ÝÀàÐÍ(λ»òNOD_CENTER)¡£
ÍøÂçÕ¾µãÊý¾Ý
È¡ÍøÂçÕ¾½áµãÊý¾Ý
int _GetNodStop(short ai,long ni,NOD_STOP_INFO *nsinf); ²ÎÊý£ºÈë¿Ú ai -¹¤×÷ÇøºÅ ni -½áµãºÅ
³ö¿Ú *nsinf-·µ»ØÍøÂçÖÕÖ¹½áµãÊý¾Ý
·µ»ØÖµ ·µ»Ø½áµãÊý¾ÝÀàÐÍ£¬Ê§°ÜÔò·µ»Ø£°£¬Çë²ÎÔÄ_GetNodº¯Êý¡£ ¸üÐÂÍøÂçÕ¾µãÊý¾Ý
int _UpdateNodStop(short ai,long ni,NOD_STOP_INFO *nsinf); ²ÎÊý£ºÈë¿Ú ai -¹¤×÷ÇøºÅ
ni -½áµãºÅ
*nsinf-ÍøÂçÖÕÖ¹½áµãÊý¾Ý
³ö¿Ú ÎÞ
·µ»ØÖµ 1/0 - ³É¹¦/ʧ°Ü
˵Ã÷£ºÈç¹ûniºÅ½áµãÒѾÓÐÍøÂçÖÕÖ¹½áµãÊý¾Ý£¬ÄÇô¸Ãº¯Êý¸üÐÂÔÀ´µÄÍøÂçÖÕÖ¹½áµãÊý¾Ý£»·ñÔò¾Í½«ÍøÂçÖÕÖ¹½áµãÊý¾ÝÌí¼Óµ½niºÅ½áµã£¬²¢¸Ä±ä½áµãÊý¾ÝÀàÐÍ(λ»òNOD_STOP)¡£
ÍøÂçÕϰÊý¾Ý
È¡ÍøÂçÕϰ½áµãÊý¾Ý
int _GetNodBarrier(short ai,long ni,NOD_BARRIER_INFO *nbinf);
²ÎÊý£ºÈë¿Ú ai -¹¤×÷ÇøºÅ
ni -½áµãºÅ ³ö¿Ú *nbinf-·µ»ØÍøÂçÕϰ½áµãÊý¾Ý
·µ»ØÖµ ·µ»Ø½áµãÊý¾ÝÀàÐÍ£¬Ê§°ÜÔò·µ»Ø£°£¬Çë²ÎÔÄ_GetNodº¯Êý¡£ ¸üÐÂÍøÂçÕϰ½áµãÊý¾Ý
int _UpdateNodBarrier(short ai,long ni,NOD_BARRIER_INFO *nbinf); ²ÎÊý£ºÈë¿Ú ai -¹¤×÷ÇøºÅ ni -½áµãºÅ
*nbinf -ÍøÂçÕϰ½áµãÊý¾Ý ³ö¿Ú ÎÞ
·µ»ØÖµ 1/0 -³É¹¦/ʧ°Ü
˵Ã÷£ºÈç¹ûniºÅ½áµãÒѾÓÐÍøÂçÕϰ½áµãÊý¾Ý£¬ÄÇô¸Ãº¯Êý¸üÐÂÔÀ´µÄÍøÂçÕϰ½áµãÊý¾Ý£¬·ñÔò¾Í½«ÍøÂçÕϰ½áµãÊý¾ÝÌí¼Óµ½niºÅ½áµã£¬²¢¸Ä±ä½áµãÊý¾ÝÀàÐÍ(λ»òNOD_BARRIER)¡£
5¡¢²éÕÒ¼ìË÷ λÖÃÅжϺ¯Êý
ÅжϵãÊÇ·ñÔÚ¾ØÐοòÄÚ
short _PntInRect(D_DOT *dot,D_RECT *rc); ²ÎÊý£ºÈë¿Ú dot - ÅжϵãλÖÃ
*rc - ¾ØÐη¶Î§
³ö¿Ú ÎÞ
·µ»ØÖµ dotµãÔÚrc¾ØÐοòÄÚ·µ»Ø2£¬ÔÚ¾ØÐοòÉÏ·µ»Ø1£¬ÔÚ¿òÍâ·µ»Ø0¡£
ÅжϵãÊÇ·ñÔÚ¶à±ßÐÎÄÚ
short _IsDotInPolygon(D_DOT *pxy,long dn,D_DOT *dot) ²ÎÊý£ºÈë¿Ú *pxy - ¶à±ßÐÎ×ø±ê´®£¬²»ÒªÇó¶à±ßÐηâ±Õ
dn - pxy°üº¬µÄµãÊý *dot - Åжϵã×ø±ê
³ö¿Ú ÎÞ
·µ»ØÖµ dotµãÔÚ¶à±ßÐÎÄÚ·µ»Ø2£¬ÔÚ±ßÏßÉÏ·µ»Ø1£¬ÔÚ¶à±ßÐÎÍâ·µ»Ø0¡£ VBº¯Êý£ºDeclare Function bIsDotInPolygon(pxy As D_DOT, ByVal dn As Long, ByVal
dot As D_DOT) As Integer
ÅжϵãÊÇ·ñÔÚÇøÓòÄÚ
short _IsDotInReg(short regNum,D_DOT *xy,long *ne,D_DOT *dot,short flg); short _IsDotInReg1(D_DOT *dot,short ai,long ri,short flg); ²ÎÊý£ºÈë¿Ú
*xy - ÇøÓò±ß½ç×ø±êÊý¾Ý´®¡£Çë²ÎÔÄ_GetRegEdgeº¯Êý˵Ã÷¡£ ai - ¹¤×÷ÇøºÅ
ri - ÇøÓòºÅ
*ne - ÇøÓò±ß½çÿһȦµãÊý¡£ *dot - Åжϵã×ø±ê¡£
Flg - ÊÇ·ñÅжÏÄÚȦ±êÖ¾£¬1/0£ºÅжÏ/²»Åжϡ£¼´flg=1ʱ£¬ÒªÑϸñÅжϵã
ÊÇ·ñÂäÔÚÇøÓòÄÚ£¬ÈôÂäÔÚÇøÓòµÄ¿Õ¶´ÄÚ£¬Ò²ÈÏΪÊÇÂäÔÚÇøÓòÍâ
±ß¡£
³ö¿Ú ÎÞ
·µ»ØÖµ dotµãÔÚÇøÓòÄÚ·µ»Ø2£¬ÔÚ±ßÏßÉÏ·µ»Ø1£¬ÔÚÇøÓòÍâ·µ»Ø0¡£
VBº¯Êý£ºDeclare Function bIsDotInReg(ByVal regNum As Integer, xy As D_DOT,
ne As Long, ByVal dot As D_DOT, ByVal flg As Integer) As Integer
ÅжÏÏßÊÇ·ñÓëÇøÓòÏཻ
short _LinInterReg(short lai,long li,short rai,long ri);
short _LinInterReg1(D_DOT *xy,long len,D_DOT *rxy,long *ne,short neLen); ²ÎÊý£ºÈë¿Ú *xy ¨C ÏßÉϵã×ø±êÊý¾Ý´®
*rxy - ÇøÓò±ß½ç×ø±êÊý¾Ý´®¡£Çë²ÎÔÄ_GetRegEdgeº¯Êý˵Ã÷¡£ lai - Ïß¹¤×÷ÇøºÅ rai - Çø¹¤×÷ÇøºÅ ri - ÇøÓòºÅ
*ne - ÇøÓò±ß½çÿһȦµãÊý neLen - neÊý×éµÄÏîÊý
³ö¿Ú ÎÞ
·µ»ØÖµ Ïཻ·µ»Ø1£¬·ñÔò·µ»Ø0
ÅжÏÁ½¸öÇøÊÇ·ñÏཻ
short _RegInterReg(short rai,long ri,short rai1,long ri1);
short _RegInterReg1(D_DOT *rxy0,long *ne0,short ne0Len,D_DOT *rxy1,long *ne1,short ne1Len);
²ÎÊý£ºÈë¿Ú rai - µÚ1¸öÇøËùÔڵŤ×÷ÇøºÅ