Добрый вечер! Не понимаю, в чем заключается ошибка при повороте прямой на систему координат. Даны 2 точки прямой, нашел, что угол наклона прямой вычисляется по формуле: (y2-y1) / (x2-x1). По получившемуся значению беру tg и перевожу в радианы.
private static double GetAngleOfInclination(Point a, Point b)
{
var angleOfInclination = (double)(b.Y - a.Y) / (b.X - a.X);
angleOfInclination = Math.Tan(angleOfInclination);
return GetRadiance(angleOfInclination);
}
Так же посмотрел, что можно повернуть точки на ось по формулам:
x'=x*cosA + y*sinA
y'=y*cosA - x*sinA
private static double GetXPointWithInclination(double pointX, double pointY, double angleOfInclination)
{
var x = pointX * Math.Cos(angleOfInclination) + pointY * Math.Sin(angleOfInclination);
return Math.Round(x, 1);
}
private static double GetYPointWithInclination(double pointX, double pointY, double angleOfInclination)
{
var y = -pointX * Math.Sin(angleOfInclination) + pointY * Math.Cos(angleOfInclination);
return Math.Round(y, 1);
}
В итоге результат практически ничем не отличается от начального.
Ожидаемый результат: чтобы заданная точками прямая лежала на одной из осей, следовательно, X или Y должен стать нулем для точек.