Plotting math functions

vegaseat 2 Tallied Votes 291 Views Share

This program uses WinApi function SetPixel() to plot math functions y = sin(x) and y = cos(x) and y = sin(x)*cos(x) along a y-axis centered on the console screen. Make sure that gdi32.lib is included in the libraries to be linked.

// plot y = sin(x), y = cos(x) and y = sin(x)*cos(x) to a console window
// tested with Pelles C free at: http://smorgasbordet.com/pellesc/index.htm
// this C package comes with a great IDE
// a Windows Console Application  by  vegaseat 18mar2005

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <windows.h>

int main(void)
{
  int x, y;
  char str1[] = " yellow is sin(x), red is cos(x), green is sin(x)*cos(x) ";
  COLORREF yellow = RGB(255,255,0);
  COLORREF red    = RGB(255,0,0);
  COLORREF green  = RGB(0,200,0);
  COLORREF blue   = RGB(0,0,255);
  
  // get the window's handle, make sure the names match
  SetConsoleTitle("ConGraphics");
  HWND hWnd = FindWindow(NULL, "ConGraphics");

  // get the handle to Device Context
  HDC hDC = GetDC(hWnd);
  
  TextOut(hDC, 10, 20, str1, strlen(str1));
  
  // draw a yellow sine curve
  for(x = 0; x < 700; x++)
  {
    // center at y = 200 pixels
    y = (int)(sin(x/100.0)*100 + 200);
    SetPixel(hDC, x, y, yellow);
  }

  // draw a red cosine curve
  for(x = 0; x < 700; x++)
  {
    // center at y = 200 pixels
    y = (int)(cos(x/100.0)*100 + 200);
    SetPixel(hDC, x, y, red);
  }
  
  // draw a green sin(x)*cos(x) curve
  for(x = 0; x < 700; x++)
  {
    // center at y = 200 pixels
    y = (int)(sin(x/100.0) * cos(x/100.0) * 100 + 200);
    SetPixel(hDC, x, y, green);
  }
      
  // draw center line
  for(x = 0; x < 700; x++)
  {
    SetPixel(hDC, x, 200, blue);   
  }
  
  // free up the resources
  ReleaseDC(hWnd, hDC);
  DeleteDC(hDC);

  getchar();  // wait
  return 0;
}
brale 0 Newbie Poster

It help me to learn more about graphic interface.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.