Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.08 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Drawing;
  7. //using System.Windows.Forms;
  8.  
  9. namespace modelowanie
  10. {
  11. class Program
  12. {
  13. static void Main(string[] args)
  14. {
  15. int prec = 0;
  16. const int N = 500;
  17. double V = 1000;
  18.  
  19. double[,] s = new double[N, N];
  20. double[,] pp = new double[N, N];
  21. double[,] p = new double[N, N];
  22. double[,] pm = new double[N, N];
  23. //double cmax = 1000;
  24. double ds = 1;
  25. double dtr = ds / (2 * V);
  26.  
  27. for (int i = 0; i < N; i++)
  28. for (int j = 0; j < N; j++)
  29. {
  30. pp[i, j] = 0;
  31. p[i, j] = 0;
  32. pm[i, j] = 0;
  33. s[i, j] = 0;
  34. }
  35.  
  36. int k = 0;
  37. double x, xx = 0;
  38. float fpeak = 30.0f;
  39. double t = 0.0;
  40. using (Bitmap b = new Bitmap(N, N))
  41. {
  42. using (Graphics g = Graphics.FromImage(b))
  43. {
  44. g.Clear(Color.White);
  45. while (true)
  46. {
  47. k++;
  48. t = k * dtr;
  49. x = Math.PI * fpeak * (t - (1.0 / fpeak));
  50. xx = x * x;
  51.  
  52. s[N / 2, N / 2] = Math.Exp(-xx) * (1.0f - 2.0f * xx);
  53. //s[N / 2, N / 2] = t;
  54. //s[N / 2, N / 2] = Math.Sin(Math.PI* t );
  55. pp = new double[N, N];
  56. if (prec == 0)//2th order
  57. {
  58. for (int i = 2; i <= N - 2; i++)
  59. {
  60. for (int j = 2; j <= N - 2; j++)
  61. {
  62. //System.Console.WriteLine(p[i, j] + " : " + pm[i, j] + " : " + pp[i, j]);
  63. pp[i, j] = 2.0 * p[i, j] - pm[i, j] + ((dtr * dtr) / (ds * ds)) * V * V *
  64. (p[i + 1, j] + p[i - 1, j] + p[i, j + 1] + p[i, j - 1] - 4.0 * p[i, j]) + s[i, j];
  65.  
  66. // b.SetPixel(j, i, Color.FromArgb(Convert.ToInt32(pp[i, j] + 3), Convert.ToInt32(pp[i, j] + 3), Convert.ToInt32(pp[i, j] + 3)));
  67.  
  68. }
  69. }
  70. pm = p;
  71. p = pp;
  72.  
  73. if (t >= 0.2) break;
  74.  
  75. }
  76. }
  77. //System.Console.WriteLine("Koniec");
  78. double max = 0;
  79. double min = 1000;
  80. for (int i = 0; i < N; i++)
  81. for (int j = 0; j < N; j++)
  82. {
  83. // jeżeli element jest większy od dotychczasowego maksimum to on staje się maksimum
  84. if (pp[i, j] > max)
  85. max = pp[i, j];
  86. if (pp[i, j] < min)
  87. min = pp[i, j];
  88. }
  89. //System.Console.WriteLine(max + " " + min);
  90. for (int i = 2; i <= N - 2; i++)
  91. {
  92. for (int j = 2; j <= N - 2; j++)
  93. {
  94. int value = (int)((255 / (max - min)) * (pp[i, j] - min));
  95. b.SetPixel(j, i, Color.FromArgb(value, value, value));
  96. }
  97. }
  98. b.Save(@"D:\fala\blank.jpeg");
  99. }
  100. //System.Console.ReadLine();
  101. //Form form = new Form() { Width = 500, Height = 500 };
  102. //form.Controls.Add(new PictureBox(){Image = b,Width=500,Height=500});
  103. //form.Show();
  104. //Application.Run(form);
  105. }
  106. }
  107. }
  108.  
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement