Как подключить GPU к WPF C#

У меня есть алгоритм который высчитывает столкновения двух частиц, хотелось бы найти способ ускорить его ускорение и перенести на исполнение в видеокарту

public (double, Vector2d) hitSandSand(Sand sand2)
    {
        double O1 = Vector2d.Angle(direction, new Vector2d(0, 0)),
            O2 = Vector2d.Angle(sand2.direction, new Vector2d(0, 0)),
            Ux1, Uy1, Ux2, Uy2,
            Angl1 = Vector2d.Angle(direction, sand2.direction),
            Angl2 = Vector2d.Angle(sand2.direction, direction),
            M1plusM2 = mass + sand2.mass;
        {
            double 
            arg1 = (pulse * Math.Cos(O1 - Angl1) * (mass - sand2.mass) + 2 * sand2.mass * sand2.pulse * Math.Cos(O2 - Angl1)) / M1plusM2,
            arg2 = pulse * Math.Sin(O1 - Angl1),
            arg3 = Angl1 + Math.PI / 2;
            Ux1 = (arg1) * Math.Cos(Angl1)
                + arg2 * Math.Cos(arg3);
            Uy1 = (arg1) * Math.Sin(Angl1)
                + arg2 * Math.Sin(arg3);
        }
        //второй объект
        {
            double 
            arg1 = (sand2.pulse * Math.Cos(O2- Angl2) * (sand2.mass - mass) + 2 * mass * pulse * Math.Cos(O1 - Angl2)) / M1plusM2,
            arg2 = sand2.pulse * Math.Sin(O2 - Angl2),
            arg3 = Angl2 + Math.PI / 2;
            Ux2 = (arg1) * Math.Cos(Angl2)
                + arg2 * Math.Cos(arg3);
            Uy2 = (arg1) * Math.Sin(Angl2)
                + arg2 * Math.Sin(arg3);
        }
        Vector2d vec1 = new Vector2d(Ux2, Uy2);
        base.pulse = vec1.normal();
        direction.x = vec1.x;
        Vector2d vec2 = new Vector2d(Ux1, Uy1);
        sand2.pulse = vec2.normal();
        sand2.direction = vec2;
        return (sand2.pulse, sand2.direction);
    }
}

Возможно ли такой алгоритм перенести на выполнение в видеокарту и как это сделать на C#? По факту данная функция выполняется за один проход несколько десятков тысяч раз. И будет ли ускорение от видеокарты на данном алгоритме или просто пустая трата времени?


Ответы (0 шт):