public IHitTestObject HitTest(HitTestPointData hitData, bool testTickLines) { if (!testTickLines) { var mainAxisPoints = _cachedMainLinePointsUsedForHitTesting; if (null != mainAxisPoints) { if (hitData.IsHit(mainAxisPoints, _axisPen.Thickness1, _axisPen.Thickness2)) { return(new HitTestObject( new PolylineObjectOutline(_axisPen.Thickness1, _axisPen.Thickness2, mainAxisPoints, hitData.WorldTransformation), this, hitData.WorldTransformation)); } } } else // Test Tick lines { // test major ticks for hit if (null != _cachedMajorTickLinesUsedForHitTesting) { foreach (var line in _cachedMajorTickLinesUsedForHitTesting) { if (hitData.IsHit(line, _majorTickPen.Thickness1, _majorTickPen.Thickness2)) { return(new HitTestObject( new MultipleSingleLinesObjectOutline(_majorTickPen.Thickness1, _majorTickPen.Thickness2, _cachedMajorTickLinesUsedForHitTesting, hitData.WorldTransformation), this, hitData.WorldTransformation)); } } } // test minor ticks for hit if (null != _cachedMinorTickLinesUsedForHitTesting) { foreach (var line in _cachedMinorTickLinesUsedForHitTesting) { if (hitData.IsHit(line, _minorTickPen.Thickness1, _majorTickPen.Thickness2)) { return(new HitTestObject( new MultipleSingleLinesObjectOutline(_minorTickPen.Thickness1, _minorTickPen.Thickness2, _cachedMinorTickLinesUsedForHitTesting, hitData.WorldTransformation), this, hitData.WorldTransformation)); } } } } return(null); }
/// <summary> /// Determines whether the grip is hit by the current mouse position. /// </summary> /// <param name="mousePosition">The mouse position (hit ray).</param> /// <returns></returns> public bool IsGripHit(HitTestPointData mousePosition) { var vec = new VectorD3D(_gripRadius, _gripRadius, _gripRadius); var rect = new RectangleD3D(_gripCenter - vec, 2 * vec); return(mousePosition.IsHit(rect, out var z)); }
/// <summary> /// Determines whether the grip is hit by the current mouse position. /// </summary> /// <param name="mousePosition">The mouse position (hit ray).</param> /// <returns></returns> public bool IsGripHit(HitTestPointData mousePosition) { var vec = new VectorD3D(_gripRadius, _gripRadius, _gripRadius); var rect = new RectangleD3D(_gripCenter - vec, 2 * vec); double z; return mousePosition.IsHit(rect, out z); }
public IHitTestObject HitTest(HitTestPointData hitData, bool testTickLines) { if (!testTickLines) { var mainAxisPoints = _cachedMainLinePointsUsedForHitTesting; if (null != mainAxisPoints) { if (hitData.IsHit(mainAxisPoints, _axisPen.Thickness1, _axisPen.Thickness2)) return new HitTestObject( new PolylineObjectOutline(_axisPen.Thickness1, _axisPen.Thickness2, mainAxisPoints, hitData.WorldTransformation), this, hitData.WorldTransformation); } } else // Test Tick lines { // test major ticks for hit if (null != _cachedMajorTickLinesUsedForHitTesting) { foreach (var line in _cachedMajorTickLinesUsedForHitTesting) { if (hitData.IsHit(line, _majorTickPen.Thickness1, _majorTickPen.Thickness2)) return new HitTestObject( new MultipleSingleLinesObjectOutline(_majorTickPen.Thickness1, _majorTickPen.Thickness2, _cachedMajorTickLinesUsedForHitTesting, hitData.WorldTransformation), this, hitData.WorldTransformation); } } // test minor ticks for hit if (null != _cachedMinorTickLinesUsedForHitTesting) { foreach (var line in _cachedMinorTickLinesUsedForHitTesting) { if (hitData.IsHit(line, _minorTickPen.Thickness1, _majorTickPen.Thickness2)) return new HitTestObject( new MultipleSingleLinesObjectOutline(_minorTickPen.Thickness1, _minorTickPen.Thickness2, _cachedMinorTickLinesUsedForHitTesting, hitData.WorldTransformation), this, hitData.WorldTransformation); } } } return null; }