Browse Source

do all calculations in radians.

pull/3909/head
Dan Walmsley 6 years ago
parent
commit
5eba04f06c
  1. 4
      samples/ControlCatalog/MainWindow.xaml.cs
  2. 16
      src/Avalonia.Visuals/Rendering/SceneGraph/LineBoundsHelper.cs

4
samples/ControlCatalog/MainWindow.xaml.cs

@ -12,7 +12,7 @@ namespace ControlCatalog
{
private Random _r = new Random();
private double angle = 45;
private double angle = Math.PI / 8;
public TestControl()
{
DispatcherTimer t = new DispatcherTimer();
@ -20,7 +20,7 @@ namespace ControlCatalog
t.Tick += (sender, e) =>
{
angle += 1;
angle += Math.PI / 360;
Dispatcher.UIThread.Post(InvalidateVisual, DispatcherPriority.Background);
};

16
src/Avalonia.Visuals/Rendering/SceneGraph/LineBoundsHelper.cs

@ -12,17 +12,17 @@ namespace Avalonia.Rendering.SceneGraph
var xDiff = p2.X - p1.X;
var yDiff = p2.Y - p1.Y;
return Math.Atan2(yDiff, xDiff) * 180.0 / Math.PI;
return Math.Atan2(yDiff, xDiff);
}
public static double CalculateOppSide(double angle, double hyp)
{
return Math.Sin(angle * degreeToRadians) * hyp;
return Math.Sin(angle) * hyp;
}
public static double CalculateAdjSide(double angle, double hyp)
{
return Math.Cos(angle * degreeToRadians) * hyp;
return Math.Cos(angle) * hyp;
}
private static (Point p1, Point p2) TranslatePointsAlongTangent(Point p1, Point p2, double angle, double distance)
@ -53,19 +53,19 @@ namespace Avalonia.Rendering.SceneGraph
public static Rect CalculateBounds(Point p1, Point p2, IPen p)
{
var angle = CalculateAngle(p1, p2);
var radians = CalculateAngle(p1, p2);
var angleToCorner = angle;
var angleToCorner = radians;
if (p.LineCap != PenLineCap.Flat)
{
var pts = TranslatePointsAlongTangent(p1, p2, angle - 90, p.Thickness / 2);
var pts = TranslatePointsAlongTangent(p1, p2, radians - Math.PI / 2, p.Thickness / 2);
return CalculateBounds(pts.p1, pts.p2, p.Thickness, angle);
return CalculateBounds(pts.p1, pts.p2, p.Thickness, radians);
}
else
{
return CalculateBounds(p1, p2, p.Thickness, angle);
return CalculateBounds(p1, p2, p.Thickness, radians);
}
}
}

Loading…
Cancel
Save