Advertisement
Guest User

Untitled

a guest
May 26th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.47 KB | None | 0 0
  1. private static int[][] LineStructuralElementGenerator(int angle, int structuralElementSize)
  2. {
  3. angle %= 180;
  4. var above90Deg = angle > 90;
  5. angle %= 91;
  6.  
  7. var alpha = angle * Math.PI / 180;
  8. var columns = (int) Math.Ceiling(structuralElementSize * Math.Cos(alpha)) + 1;
  9. var rows = (int) Math.Ceiling(structuralElementSize * Math.Sin(alpha)) + 1;
  10.  
  11. columns -= columns % 2 == 0 ? 1 : 0;
  12. rows -= rows % 2 == 0 ? 1 : 0;
  13.  
  14. var structuralElement = new int[rows][];
  15. for (var i = 0; i < rows; i++) structuralElement[i] = new int[columns];
  16.  
  17. var lineGradient = ((double) rows - 1) / ((double) columns - 1);
  18.  
  19. if (!double.IsInfinity(lineGradient))
  20. for (var i = 0; i < columns; i++)
  21. {
  22. var y = rows - lineGradient * i;
  23. structuralElement[(int) y - 1][i] = 1;
  24. }
  25. else
  26. for (var i = 0; i < rows; i++)
  27. structuralElement[i][0] = 1;
  28.  
  29. for (var i = 0; i < rows; i++)
  30. {
  31. var correctLine = false;
  32.  
  33. for (var j = 0; j < columns; j++)
  34. if (structuralElement[i][j] == 1)
  35. correctLine = true;
  36.  
  37. if (correctLine) continue;
  38. var correctColumn = 0;
  39.  
  40. if (i <= rows / 2)
  41. for (var j = 0; j < columns; j++)
  42. {
  43. if (structuralElement[i - 1][j] != 1) continue;
  44. correctColumn = j;
  45. break;
  46. }
  47. else
  48. for (var j = 0; j < columns; j++)
  49. {
  50. if (structuralElement[i + 1][j] != 1) continue;
  51. correctColumn = j;
  52. break;
  53. }
  54.  
  55. structuralElement[i][correctColumn] = 1;
  56. }
  57.  
  58. if (!above90Deg) return structuralElement;
  59.  
  60. for (var i = 0; i < rows; i++)
  61. for (var j = 0; j < columns / 2; j++)
  62. {
  63. var tmp = structuralElement[i][j];
  64. structuralElement[i][j] = structuralElement[i][columns - 1 - j];
  65. structuralElement[i][columns - 1 - j] = tmp;
  66. }
  67.  
  68. return structuralElement;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement