CS 4773 Object Oriented Systems
LinePos.java
import java.awt.*;
public class LinePos {
private int start_x;
private int start_y;
private int end_x;
private int end_y;
private double current_x;
private double current_y;
private double delta_x;
private double delta_y;
private int max_index;
private int current_index;
private boolean forward = true;
public LinePos(Point start, Point end) {
start_x = start.x;
start_y = start.y;
end_x = end.x;
end_y = end.y;
delta_x = end_x - start_x;
delta_y = end_y - start_y;
if ( (delta_x == 0) && (delta_y == 0) )
max_index = 0;
else if (Math.abs(delta_x) > Math.abs(delta_y))
max_index = (int)Math.round(Math.abs(delta_x));
else
max_index = (int)Math.round(Math.abs(delta_y));
if (max_index > 0) {
delta_x = delta_x/max_index;
delta_y = delta_y/max_index;
}
current_index = 0;
}
public Point GetPosition() {
return new Point(start_x + (int)Math.round(current_index*delta_x),
start_y + (int)Math.round(current_index*delta_y));
}
public Point GetStart() {
return new Point(start_x,start_y);
}
public Point GetEnd() {
return new Point(end_x,end_y);
}
public void NextPosition(boolean f) {
if (f)
ForwardPosition();
else
PreviousPosition();
}
public void NextPosition() {
NextPosition(forward);
}
public void ForwardPosition() {
if (current_index < max_index)
current_index++;
}
public void PreviousPosition() {
if (current_index > 0)
current_index--;
}
public boolean isDone() {
if ( forward && (current_index == max_index) )
return true;
if ( !forward && (current_index == 0) )
return true;
return false;
}
public boolean isForward() {
return forward;
}
public void setForward(boolean flag) {
forward = flag;
}
}