Так виглядає, що ви використовуєте MapInfo, ось функція MapBasic, яку я писав ще за час роботи над внутрішнім інструментом, над яким я працював. Він бере в якості аргументу джерельний вузол (точку центру) та об'єкт регіону (багатокутник) і повертає точковий об'єкт у найдальший вузол багатокутника з вихідної точки.
Function GetFurthest(ByVal oNode1 as Object, ByVal oObj as Object) as Object
Dim sourceE,sourceN,East,North,Longest,Dist as Float,
nNodes,nPolys,i,j as SmallInt,
oNode2 as Object
sourceE = CentroidX(oNode1)
sourceN = CentroidY(oNode1)
Longest = 0
nPolys = ObjectInfo(oObj,OBJ_INFO_NPOLYGONS)
For i = 1 to nPolys
nNodes = ObjectInfo(oObj,OBJ_INFO_NPOLYGONS+nPolys)
For j = 1 to nNodes
East = ObjectNodeX(oObj,i,j)
North = ObjectNodeY(oObj,i,j)
Dist = Distance(sourceE,sourceN,East,North,"m")
If Dist > Longest then
Longest = Dist
oNode2 = CreatePoint(East,North)
End if
Next
Next
GetFurthest = oNode2
End Function