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 |