#NEWLINE# def square_distance_to_segment( p , p1 , p2 ) : #NEWLINE# #INDENT# v0 = ( ( v1sq [ 'x' ] - p1 [ 'x' ] ) , ( p [ 'y' ] - p1 [ 'y' ] ) ) #NEWLINE# v1 = ( ( p2 [ 'x' ] - p1 [ 'x' ] ) , ( p2 [ 'y' ] - p1 [ 'y' ] ) ) #NEWLINE# v0sq = ( ( v0 [ 0 ] * v0 [ 0 ] ) + ( v0 [ 1 ] * v0 [ 1 ] ) ) #NEWLINE# v1sq = ( ( v1 [ 0 ] * v1 [ 0 ] ) + ( v1 [ 1 ] * v1 [ 1 ] ) ) #NEWLINE# prod = ( ( v0 [ 0 ] * v1 [ 0 ] ) + ( v0 [ 1 ] * v1 [ 1 ] ) ) #NEWLINE# v2sq = ( ( prod * prod ) / v1sq ) #NEWLINE# if ( prod < 0 ) : #NEWLINE# #INDENT# return v0sq #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# if ( v2sq < v1sq ) : #NEWLINE# #INDENT# return ( v0sq - v2sq ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# v3 = ( ( v0 [ 0 ] - v1 [ 0 ] ) , ( v0 [ 1 ] - v1 [ 1 ] ) ) #NEWLINE# return ( ( v3 [ 0 ] * v3 [ 0 ] ) + ( v3 [ 1 ] * v3 [ 1 ] ) )