Это может быть реализовано с намагниченными точками . Точка JSXGraph может получить атрибут массива attractors
. Это делает точку планером, если она достаточно близка к одному из элементов аттрактора. «Достаточно близко» определяется атрибутом attractorDistance
. Точку можно снова сделать «свободной», перетащив ее из объекта. Количество перетаскивания определяется атрибутом snatchDistance
. Вот пример с snatchDistance, который делает невозможным перетаскивание точки за пределы линий:
var line1 = board.create('line', [[-4,4], [4,1]]);
var line2 = board.create('line', [[-4,1], [4,2]]);
var p = board.create('point', [4,1], {
attractors: [line1, line2],
attractorDistance: 0.5,
snatchDistance: 1000
});
Смотрите его вживую на https://jsfiddle.net/dcf2o85j/2/. Другой пример: https://jsxgraph.org/wiki/index.php/Magnetized_points.