1
clic en la pestaña " desarrolladores" y haga clic en "Visual Basic " para abrir el Editor de Visual Basic .
2 Haga clic en " Insertar" y luego haga clic en " módulos" para abrir una ventana de módulo vacío
3
Copia y pega el siguiente código en la ventana del módulo : . ' encontrar el punto donde dos segmentos intersect.Public Sub FindLineIntersection ( _ByVal x11 como individuales, y11 ByVal As Single , x12 _ByVal As Single , y12 ByVal As Single , _ByVal x21 As Single , ByVal y21 As Single , _ByVal x22 As Single , y22 ByVal As Single , _ByRef inter_x As Single , ByRef inter_y As Single , _ByRef inter_x1 As Single , ByRef inter_y1 As Single , _ByRef inter_x2 As Single , ByRef inter_y2 As Single ) dx1 As SingleDim DY1 Como SingleDim dx2 Como SingleDim dy2 Como SingleDim t1 t2 Como SingleDim Como SingleDim denominador As Single
' Get the segmentos " parameters.dx1 = x12 - x11dy1 = y12 - y11dx2 = x22 - x21dy2 = y22 - y21
' Despeja t1 y t2.On Error Resume Nextdenominator = ( DY1 * dx2 - dx1 * dy2 ) t1 = ( ( x11 - x21 ) * dy2 + ( Y21 - Y11 ) * dx2 ) /_denominatorIf Err.Number < > 0 entonces ' Las líneas son parallel.inter_x = 1E +38 : inter_y = 1E +38 inter_x1 = 1E +38 : inter_y1 = 1E +38 inter_x2 = 1E +38 : inter_y2 = 1E +38 Exit SubEnd IFON Error GoTo 0t2 = (( x21 - x11 ) * DY1 + ( Y11 - Y21 ) * dx1 ) /_ denominador
' Buscar el punto de intersection.inter_x = x11 + dx1 * t1inter_y = y11 + DY1 * t1
' Encontrar los puntos más cercanos de la segments.If t1 < 0 = Thent1 0ElseIf t1> 1 Thent1 = 1End IFIF t2 < 0 Thent2 0ElseIf t2 = > 1 Thent2 = 1End Ifinter_x1 = x11 + dx1 * t1inter_y1 = y11 + DY1 * t1inter_x2 = x21 + dx2 * t2inter_y2 = y21 + dy2 * t2End Sub
4
Press "F5 " para ejecutar la rutina.