Guest User

Untitled

a guest
Apr 16th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.58 KB | None | 0 0
  1. public void union(Range r){
  2. int count = 0;
  3. int secondIndex = 0;
  4. int overlapIndex = 0;
  5. int containment = 0;
  6. int reverseContain = 0;
  7. int containIndex=0;
  8. for (int i=0; i<newRange.size(); i++) {
  9. if (r.overlaps(newRange.get(i))) {
  10. count=count+1;
  11. if (count==1) {
  12. overlapIndex=overlapIndex+i;
  13. }
  14. if (count==2) {
  15. secondIndex=secondIndex+i;
  16. }
  17. }
  18. }
  19. for (int j=0; j<newRange.size(); j++) {
  20. if (newRange.get(j).contains(r)) {
  21. containment=containment+1;
  22. }
  23. }
  24. for (int k=0; k<newRange.size(); k++) {
  25. if (r.contains(newRange.get(k))) {
  26. reverseContain=reverseContain+1;
  27. containIndex=containIndex+k;
  28. }
  29. }
  30. if (count==0) {
  31. newRange.add(r);
  32. }
  33. else if (containment!=0) {
  34. }
  35. else if (count==1) {
  36. Range minRange = new Range(r.getMinimum(),newRange.get(overlapIndex).getMaximum());
  37. Range maxRange = new Range(newRange.get(overlapIndex).getMinimum(),r.getMaximum());
  38. if (newRange.get(overlapIndex).contains(r.getMaximum())) {
  39. newRange.remove(overlapIndex);
  40. newRange.add(overlapIndex,minRange);
  41. }
  42. else {
  43. newRange.remove(overlapIndex);
  44. newRange.add(overlapIndex,maxRange);
  45. }
  46. }
  47. else if (count==2) {
  48. float firstIndexMin=newRange.get(overlapIndex).getMinimum();
  49. float firstIndexMax=newRange.get(overlapIndex).getMaximum();
  50. float secondIndexMin=newRange.get(secondIndex).getMinimum();
  51. float secondIndexMax=newRange.get(secondIndex).getMaximum();
  52. if (firstIndexMin<secondIndexMin && firstIndexMax>secondIndexMax) {
  53. newRange.remove(secondIndex);
  54. newRange.add(secondIndex, newRange.get(overlapIndex));
  55. }
  56. else if (firstIndexMin>secondIndexMin && firstIndexMax<secondIndexMax){
  57. newRange.remove(overlapIndex);
  58. newRange.add(overlapIndex, newRange.get(secondIndex));
  59. }
  60. else if (firstIndexMin>secondIndexMin && firstIndexMax>secondIndexMax){
  61. newRange.remove(overlapIndex);
  62. newRange.remove(secondIndex);
  63. Range combined = new Range(newRange.get(secondIndex).getMinimum(),newRange.get(overlapIndex).getMaximum());
  64. newRange.add(overlapIndex,combined);
  65. newRange.add(secondIndex,combined);
  66. }
  67. else if (firstIndexMin<secondIndexMin && firstIndexMax<secondIndexMax){
  68. newRange.remove(overlapIndex);
  69. newRange.remove(secondIndex);
  70. Range combined = new Range(newRange.get(overlapIndex).getMinimum(),newRange.get(secondIndex).getMaximum());
  71. newRange.add(overlapIndex,combined);
  72. newRange.add(secondIndex,combined);
  73. }
  74. }
  75. else if (reverseContain==1) {
  76. newRange.remove(containIndex);
  77. }
  78. }
Add Comment
Please, Sign In to add comment