Document Actions

LineSegment.java

Geographic line segment object class

Click here to get the file

Size 3.8 kB - File type text/plain

File contents

// Name: LineSegment.java
// Intent: geographic line segment object class
// Programmer: John P. Kavanagh  #2748 2405
// Date Modified: 30 April 2002
// Audit:  Clifford Meyers (cmeyers@buffalo.edu)

public class LineSegment {

	// note that point naming provides direction
	private Point beginning;
	private Point ending;
	
	// line list
	private LineSegment prev = null;
	private LineSegment next = null;
	
	// The line segment constructor
	public LineSegment(Point pt1, Point pt2) {
	
		beginning = pt1;
		ending = pt2;

		//System.out.println("Instantiated new line segment (" + beginning.getXvalue() + "," + beginning.getYvalue() + "),(" + ending.getXvalue() + "," + ending.getYvalue() + ")" );	
	}

	// Connect segment to adjacent segments	
	public void AddNextSegment(LineSegment n)  {


		if ((n.GetBeginPoint().getXvalue() == ending.getXvalue()) && (n.GetBeginPoint().getYvalue() == ending.getYvalue())){
			next = n; 
			//System.out.println("Added line segment (" + n.GetBeginPoint().getXvalue() + "," +  n.GetBeginPoint().getYvalue() + "),("+ n.GetEndPoint().getXvalue() + "," +  n.GetEndPoint().getYvalue() + ")");	
			}
		else {
			//System.out.println("These two line segments do not share a common point!");
		}
	}	

 	// Connect segment to adjacent segments
	public void AddPrevSegment(LineSegment p)  {

		if ((p.GetEndPoint().getXvalue() == beginning.getXvalue()) && (p.GetEndPoint().getYvalue() == beginning.getYvalue())){
			prev = p;
			}
		else {
			System.out.println("These two line segments do not share a common point!");
			System.out.println("Your new segment will NOT be added to the line instance.");
			System.out.println("");
		}

	}
	
	// Remove next line segment
	public void RemoveNextSegment()  {
		
		if (next != null){
	
			next = null;
	
		}
	}	

	// Remove previous line segment
	public void RemovePrevSegment()  {
		
		if (prev != null){

			prev = null;
		
		}
	}	
	
	// Determine length of line segment and return value
	public double Length (){
	
		double myLength = beginning.FindDistance(ending);
		return myLength;
		
	}
	
	// Return beginning point of line segment
	public Point GetBeginPoint(){
	
		//System.out.println("Get line segment begin point: (" + beginning.getXvalue() + "," + beginning.getYvalue() + ")" );
		return beginning;

	}

	public boolean IsBeginPoint(Point testMe){
		
		
		if ( (beginning.getXvalue() == testMe.getXvalue()) && (beginning.getYvalue() == testMe.getYvalue())){
			//System.out.println("Line segment begin point (true): (" + testMe.getXvalue() + "," + testMe.getYvalue() + ")");
		}
		else {
			//System.out.println("Line segment begin point (false).");
		}

		// Test if given point is "equal" to beginning poin
		return (beginning.getXvalue() == testMe.getXvalue()) && (beginning.getYvalue() == testMe.getYvalue()); 

	}	

	// Return ending point of line segment
	public Point GetEndPoint(){
	
		//System.out.println("Get line segment end point: (" + ending.getXvalue() + "," + ending.getYvalue() + ")" );
		return ending;

	}	
	
	public boolean IsEndPoint(Point testMe){

		// Test if given point is "equal" to beginning poin
		return (ending.getXvalue() == testMe.getXvalue()) && (ending.getYvalue() == testMe.getYvalue()); 

	}		
	
	// Return beginning point of line segment
	public LineSegment GetNextSegment(){

		return next;

	}

	// Return ending point of line segment
	public LineSegment GetPrevSegment(){

		return prev;

	}		
	
	// Scale each point by given factor
	public void Scale(String factor_value){

		beginning.Scale(factor_value);
		ending.Scale(factor_value);
		
		return;		
	}
	
	
	// Remove line segment
	public void Destroy(){

		beginning.Destroy();
		ending.Destroy();
		RemoveNextSegment();
		RemovePrevSegment();

	}
	
}
www.flickr.com