Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void union(Range r){
- int count = 0;
- int secondIndex = 0;
- int overlapIndex = 0;
- int containment = 0;
- int reverseContain = 0;
- int containIndex=0;
- for (int i=0; i<newRange.size(); i++) {
- if (r.overlaps(newRange.get(i))) {
- count=count+1;
- if (count==1) {
- overlapIndex=overlapIndex+i;
- }
- if (count==2) {
- secondIndex=secondIndex+i;
- }
- }
- }
- for (int j=0; j<newRange.size(); j++) {
- if (newRange.get(j).contains(r)) {
- containment=containment+1;
- }
- }
- for (int k=0; k<newRange.size(); k++) {
- if (r.contains(newRange.get(k))) {
- reverseContain=reverseContain+1;
- containIndex=containIndex+k;
- }
- }
- if (count==0) {
- newRange.add(r);
- }
- else if (containment!=0) {
- }
- else if (count==1) {
- Range minRange = new Range(r.getMinimum(),newRange.get(overlapIndex).getMaximum());
- Range maxRange = new Range(newRange.get(overlapIndex).getMinimum(),r.getMaximum());
- if (newRange.get(overlapIndex).contains(r.getMaximum())) {
- newRange.remove(overlapIndex);
- newRange.add(overlapIndex,minRange);
- }
- else {
- newRange.remove(overlapIndex);
- newRange.add(overlapIndex,maxRange);
- }
- }
- else if (count==2) {
- float firstIndexMin=newRange.get(overlapIndex).getMinimum();
- float firstIndexMax=newRange.get(overlapIndex).getMaximum();
- float secondIndexMin=newRange.get(secondIndex).getMinimum();
- float secondIndexMax=newRange.get(secondIndex).getMaximum();
- if (firstIndexMin<secondIndexMin && firstIndexMax>secondIndexMax) {
- newRange.remove(secondIndex);
- newRange.add(secondIndex, newRange.get(overlapIndex));
- }
- else if (firstIndexMin>secondIndexMin && firstIndexMax<secondIndexMax){
- newRange.remove(overlapIndex);
- newRange.add(overlapIndex, newRange.get(secondIndex));
- }
- else if (firstIndexMin>secondIndexMin && firstIndexMax>secondIndexMax){
- newRange.remove(overlapIndex);
- newRange.remove(secondIndex);
- Range combined = new Range(newRange.get(secondIndex).getMinimum(),newRange.get(overlapIndex).getMaximum());
- newRange.add(overlapIndex,combined);
- newRange.add(secondIndex,combined);
- }
- else if (firstIndexMin<secondIndexMin && firstIndexMax<secondIndexMax){
- newRange.remove(overlapIndex);
- newRange.remove(secondIndex);
- Range combined = new Range(newRange.get(overlapIndex).getMinimum(),newRange.get(secondIndex).getMaximum());
- newRange.add(overlapIndex,combined);
- newRange.add(secondIndex,combined);
- }
- }
- else if (reverseContain==1) {
- newRange.remove(containIndex);
- }
- }
Add Comment
Please, Sign In to add comment