читал, не помогло то что читал )Вот была тема про это
можно примитивный пример - как найти пересечение двух кругов?
читал, не помогло то что читал )Вот была тема про это
Возможности для оптимизации просто огромны. Во первых, вовсе необязательно добавлять узлы в кривую - есть замечательный метод GetPointPositionAt, который возвращает координаты точки на сегменте в зависимости от положенияконечно можно оптимизировать
узлы в кривую я добавляю при простом переборе точек.Во первых, вовсе необязательно добавлять узлы в кривую
В данном примере заданная точка имеет координаты (0, 0)есть некая точка с координатами x y
есть шейп.
нужно найти ближайшую точку к заданной.
Sub ClosestPoint()
x# = 0
y# = 0
Dim po#
Set a = ActiveShape.DisplayCurve.FindClosestSegment(x, y, po).GetPointAt(po)
MsgBox "x = " & a.x & vbCr & "y = " & a.y
End Sub
Это с какой версии такое?FindClosestSegment
просто нет слов ))В данном примере заданная точка имеет координаты (0, 0)
это безусловно. но мне сверх точность и не нужна была.Главный плюс все таки в точности. Чтото мне подсказывает, что прямая функция точнее будет считать чем перебор произвольных точек.
Главный минус - ниже X7 работать не будетв любом случае останусь с этой функцией - она меньше
Sub ClosestPoint()
x# = 0
y# = 0
Dim po#
Set a = ActiveShape.DisplayCurve.FindClosestSegment(x, y, po).GetPointPositionAt(po, x, y)
MsgBox "x = " & x & vbCr & "y = " & y
End Sub
Нету, я тебе здесь весь список курвовых методов процитировалFindClosestSegment есть уже в X3
У меня ругнулось во всяком случаев объектной модели есть.