private PointMagnet createInterestingDistance(LineMagnet lm, GraphicView activeView, System.Windows.Forms.MouseEventArgs e)
{
if (lm == null) return null;
Vector3 pos = lm.Position;
activeView.Project(ref pos);
Vector3 reversePickPos = pos + pos - new Vector3(e.X, e.Y, 0f);
List<Item> pickedItems = Canguro.View.GraphicViewManager.Instance.PickItem((int)reversePickPos.X, (int)reversePickPos.Y);
if (pickedItems == null) return null;
foreach (Item item in pickedItems)
{
Joint j;
// Check if Joint si over line lm
if ((j = item as Joint) != null)
{
Vector3 ptInLine = Vector3.Cross(lm.Direction, j.Position - lm.Position);
if (Vector3.Dot(ptInLine, ptInLine) < float.Epsilon)
{
PointMagnet distMagnet = new PointMagnet(lm.Position + lm.Position - j.Position, PointMagnetType.SimplePoint);
distMagnet.RelatedMagnets.Add(new PointMagnet(j));
points.Add(distMagnet);
return distMagnet;
}
}
}
return null;
}