Drawing Lines Using Line Equations

Environment: VC6

Often, in developing educational-related applications, one needs to draw lines in XY axes, and find the slope of that line. This article introduces how to draw lines in XY axes and find the slope of the line.



Click here for a larger image.

The application created here uses the dialog-based MFC AppWizard (EXE). The application has a TextBox in which you have to enter the line equation. The line equation must be in the 'AX+BY+C=0' format, where A, B, and C are integers. Entering =0 is not necessary. =0 is assumed by default.

The picture control is used to display the XY axes and to draw lines based on the equation provided in the TextBox. After you enter the line and click the button with name "TestLine", the slope of the line equation is displayed in degrees and radians when line equations such as x=0 and y=0 are entered. The details of that line are provided under the "Message" static control.

To display XY axes in the picture control, the code is written in the DrawXYAxis() function. The mapping mode is MM_LOMETRIC and the function used to set the mapping mode is SetMapMode(MM_LOMETRIC). The units are taken as 0.01mm.and 100mm=1cm., i.e 1unit=0.01mm., and the origin is changed to the center of the picture control with the SetViewportOrg() function.

If the LineEquation is AX+BY+C, then 'A' is Coefx (coefficient of X), B is Coefy (coefficient of Y), and C is Coefcons (Constant). A, B, and C are any Inter values.

The main functionality of drawing a line and finding the slope of the line is written in OnButtonTestLine(). To draw a line such as AX+BY+C=0, we choose two points in the X axis and the respective points are calculated on the Y axis. The X axis points are chosen as [-300,300]. The Y axis points are cleated as the following:

  float x1[2]={-300,300};
  float y11=((coefx*x1[0])/coefy)+(coefcons/coefy);
  float y22=((coefx*x1[1])/coefy)+(coefcons/coefy);
  float y1[2]={y11,y22};

The line is drawn between points (x1[0],y1[0]) and (x1[1],y1[1]) using the MoveTo() and LineTo() functions.

  dc->MoveTo(x1[0],y1[0]);
  dc->LineTo(x1[1],y1[1]);

To draw a current line in PictureControl and erase the previous line, the InvertLine() function is used. It draws a line, not by setting each pixel to a certain color, but by inverting the existing pixel colors. This ensures that the line can be seen no matter what background it is drawn against and that drawing the line again in the same location will erase it by restoring the original screen colors.

Downloads

Download demo project - 25 Kb
Download source - 13 Kb


Comments

  • nice equation parser, but...

    Posted by Legacy on 09/09/2003 12:00am

    Originally posted by: ahoodin

    Rarely at work is one given the equation of a line and asked to graph it. Typically, it is given as a line at an angle with some angle, endpoint coordinates and a length or it is given as two coordinates with the equation to be solved for by the user.
    This project might help in a math class.

    It would be more helpful to either request an angle and an endpoint or two endpoints and then to draw the line and return the equation.

    ahoodin

    Reply
  • Improper demo equation

    Posted by Legacy on 09/08/2003 12:00am

    Originally posted by: George Georgiev

    The demo equation (3x+4y+9=0) crosses X and Y at points -3 and -2.25 respectively. On the scale drawn, this is barely visible, and could mislead that the line actually crosses (0,0), which is not correct.

    Bigger value (e.g. 900) would show much better behaviour of this sample.

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • The mobile market is white hot. Building a well-crafted product development plan that addresses market research, strategy, design, and development will provide the greatest chance for success. Each phase of an app's lifecycle is critical to the its overall success and feeds into the next step of the process of product development for the app. This white paper examines the five key phases of mobile app creation, one by one, to understand how they work together to help create a successful mobile app.

  • According to a 2014 Javelin Strategy & Research Study, there is a new victim of fraud every two seconds – and that's just in the U.S. With identity theft and consumer fraud rising, and more frequent and sizable data breaches in the news, financial institutions need to work harder than ever to protect their customers and their business. Download this white paper to learn how you can use multi-channel communications to minimize the costs of fraud while also increasing customer loyalty.

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date