Esempio n. 1
0
		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;
		}
Esempio n. 2
0
		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;
		}
Esempio n. 3
0
		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;
		}