Files
computational-geometry-visu/linesegment.py

43 lines
1.9 KiB
Python

#!/usr/bin/python3
"""The linesegment module defines the class line_segment."""
import random
import point
class LineSegment:
"""The class LineSegment defines a two-dimensional line segment in the coordinate system
starting at a startpoint and ending at a endpoint."""
def __init__(self, startpoint=point.Point(), endpoint=point.Point()):
"""Initialize the line segment."""
self.set_startpoint(startpoint)
self.set_endpoint(endpoint)
def set_startpoint(self, new_startpoint):
"""Set or change the startpoint of the line segment. If not a Point object is given
the startpoint gets set to a default value of Point(0,0)."""
self.__startpoint = new_startpoint
def get_startpoint(self):
"""Returns the current startpoint"""
return self.__startpoint
def set_endpoint(self, new_endpoint):
"""Set or change the endpoint of the line segment. If not a Point object is given
the endpoint gets set to a default value of Point(0,0)."""
self.__endpoint = new_endpoint
def get_endpoint(self):
"""Returns the current endpoint"""
return self.__endpoint
def get_length(self):
"""Returns the length of the line segment."""
diff_x = abs(self.__startpoint.get_x() - self.__endpoint.get_x())
diff_y = abs(self.__startpoint.get_y() - self.__endpoint.get_y())
return ((diff_x ** 2) + (diff_y ** 2)) ** (1/2.0)
def str(self):
"""Return the line segment values as string."""
return self.__startpoint.str() + "-->" + self.__endpoint.str()
def draw(self):
"""TODO: Draw the line segment in a canvas."""
def get_random(min_x=0, max_x=100, min_y=0, max_y=100):
"""Set the point to a random place inside the boundaries"""
return LineSegment(point.Point(random.randint(min_x, max_x), random.randint(min_y, max_y)), \
point.Point(random.randint(min_x, max_x), random.randint(min_y, max_y)))