Assignment 1: Points and Lines
Create a class Point and a class Line. The Point class deals with points in a Cartesian coordinate system, the class Line deals with Lines in the plane. Recall that a line is determined either by two points or by a point and the slope or by a point and the y-intercept.
First, lets focus on the Point class and figure out its fields and methods.
| Fields: x and y coordinate of a point, both double values | |
| Methods: display, getX, setX, getY, setY as usual. We also might need a method distance which computer the distance of the current point to the origin. |
Here is the declaration of the class Point. Please add comments where appropriate before turning in the assignment:
#include <iostream.h>
#include <math.h>
#ifndef POINT
#define POINT
class Point
{
private: double x, y; // x and y are the (x,y) coordinates of a point
public: Point(void); // Constructors
public: Point(double, double);
public: void setX(double); // Methods
public: void setY(double);
public: double getX(void);
public: double getY(void);
public: void display(void); // display method without linefeed
public: double distance(void); // distance to origin
};
// all method implementations go here and are left as homework
#endif
After the method implementations have been added, we need a test program to test this class. Assuming we have saved our above class as Point.cpp, a simple test program could look as follows:
#include <iostream.h>
#include "Point.cpp"
int main(void)
{
Point P, Q(3,3);
cout << "The following points are defined \n";
P.display(); cout << "\t";
Q.display(); cout << "\n";
cout << "changing coordinates of point P to (-1, -1)\n";
P.setX(-1); P.setY(-1);
P.display(); cout << "\n";
cout << "Distance of P to origin should be sqrt(2): "
<< P.distance() << "\n";
return 0;
}
Next, lets concentrate on the Line class.Recall from your calculus or pre-calculus class that a line is completely defined by:
| two points, or | |
| the slope and one point, or | |
| the slope and the y-intercept |
Therefore, we have three options for storing enough information to uniquely determine a line - i.e. we will give our class at least three appropriate constructors. Please implement a line class as follows:
| Line(void) to initialize slope and intercept to zero | |
| Line(double, double) to initialize a line using slope and y-intercept | |
| Line(double, Point) to initialize a line using the slope and a point | |
| Line(Point, Point) to initialize a line using two points |
| display(void) displays the line in slope-intercept form | |
| setSlope(double) sets the slope of line to the input value | |
| setIntercept(double) sets the y-intercept of the line to the input value | |
| getSlope(void) returns the slope of the line | |
| getIntercept(void) returns the y-intercept of the line | |
| containsPoint(Point) returns 1 if the line contains the input point, 0 otherwise | |
| isPerpendicularTo(Line) returns 1 if the line is perpendicular to the input line, 0 otherwise | |
| isParallelTo(Line)returns 1 if the line is parallel to the input line, 0 otherwise |
Note that the Line class needs to know about the Point class. Therefore, the Line class should start as follows:
#include <iostream.h> // needed for the display method #include "Point.cpp" // so that this class knows about Points #ifndef LINE #define LINE // class declaration and implementation here #endif
Also create a small test program to test your line class. To summarize: you must turn in four files for this assignment:
| Point.cppcontains the Point class | |
| Line.cppcontains the Line class | |
| linetst.cpptest program for Line class |
![]()