/// <summary> /// Отрисовка траектории движения частицы /// </summary> /// <param name="args">Параметры модели</param> /// <returns>Путь к html-файлу с графиком движения частицы</returns> public static string BuildPlot(TrajectoryCalculatorArgs args) { var points = TrajectoryCalculator.Calculate(args); var plot = new Plot ( Plot.traces ( Traces.scatter3d ( Scatter3d.x(GetCoordinates(points, point => point.X)), Scatter3d.y(GetCoordinates(points, point => point.Y)), Scatter3d.z(GetCoordinates(points, point => point.Z)), Scatter3d.mode(Scatter3d.Mode.lines()) ) ), Plot.layout ( Layout.autosize(true), Layout.margin ( Margin.l(0), Margin.t(0), Margin.r(0), Margin.b(0) ), Layout.scene ( Scene.Aspectmode.data() ) ) ); var plotFileName = "plot.html"; File.WriteAllText ( plotFileName, plot .Render() .ToString() .Replace("<body>", "<body style=\"overflow: hidden\">") .Replace("height: 100%", "height: 100vh;") .Replace("https://cdn.plot.ly/plotly-latest.min.js", "plotly.js") ); return(plotFileName); }