public override bool HitTest(HitLine hit) { if (Points.Count == 0) return false; for (int i = 0; i < Points.Count - 1; i++) { HitLine line = new HitLine() { Front = Points[i].ToVector(), Back = Points[i+1].ToVector(), Camera = hit.Camera }; if (line.ShortestDistance(hit) < HitTol * hit.Camera.SceneToWorldScaling) { lastHit = hit.GetIntersection((ParentEntity as Sketch).Plane); return true; } } return false; }
public override bool HitTest(HitLine hit) { if (Anchor2 == null) return false; for (int i = 0; i < solidPoints.Length - 1; i++) { HitLine line = new HitLine() { Front = solidPoints[i], Back = solidPoints[i + 1], Camera = hit.Camera }; if (line.ShortestDistance(hit) < HitTol * hit.Camera.SceneToWorldScaling) { lastHit = hit.GetIntersection((ParentEntity as Sketch).Plane); return true; } } return false; }
public override bool HitTest(HitLine hitLine) { if (start == null || stop == null) return false; HitLine line = new HitLine(); line.Front = start; line.Back = stop; double dist = line.ShortestDistance(hitLine); lastHit = (start + stop) / 2; // HACK: need actual hit position return dist < Reference.HitTol * hitLine.Camera.SceneToWorldScaling; }