Here is the source code of a few program that I have developed

Program 1: Bezier, B-Spline Curve Plotter and Editor

This program allows the user to interactively draw and edit Bezier, Uniform, Open Uniform, Random B-Spline Curves. The user may create multiple such curves in the design space and may edit them simultaneously. The User Interaction is provide by the MFC and OpenGL is used for plotting. If you have trouble using the program, contact your system administrator. Various snapshots are attached here for a better look at the capabilities of the program.


Closed Bezier Curve


Subdivision Curves


Bspline Curves

Download the following:

Executable File Source Code Readme File


Program 2: Curve and Surface Plotter and Editor

The next version of the program 1 allows the user to create extruded, revolved, lofted and swept surfaces along with the curves available in the previous program. Features like 3D view and file export are also provided.

Download the following:

Executable File Source Code Read me File


Program 3: Curve and Surface and Mesh Plotter and Editor

The next version of the program 2 allows the user to create BiCubic Bspline surfaces, bibezier surfaces, Loops, Clarks and Doo Sabin mesh surfaces along with the curves and surfaces already available in the previous version of this program. Better import/export options are also provided.

Download the following:

Executable File Source Code Read me File


These programs are available as 'Turbo C++ for DOS' source code file, along with the input files required for their execution. Unzip the programs to the bin folder of TC and then run the CPP file from the TC++ IDE. I am sorry for lack of adequate documentation of these programs. If you want any information contact me at yb82@rediffmail.com


Program 4: Simulation of a 2-1/2 axis CNC machine

This program simulates the tool path of a FANUC CNC machine given source as a text file. The program can also be modified to support machine cycles. See the example file for how to write the commands. The following commands are supported with their standard inputs:

G00, G01, G02, G03, G25, G91, G90, G71, G70, G95, G94, G11, G10, G12, G13, G72, M02, M03, M04, M05, M08, M09, G22, G24, G20, G73

Any valid program written with these statements is executed and the tool path is simulated. Other information, for debugging purposes, is also shown alongside as each line of code is executed.

The program can be found here


Program 5: Stochastic Simulation of an elevator for a multi-storied Building (M/G/1 system).

This program compares two algorithms for movement of an elevator. The arrival is poison process and service is a general process. 

A person arriving at ground floor has an equal probability of going to any other floor and a person arriving at any other floor has 50 % probability of going to ground floor and for rest of the floor the probability is same. A person who arrives at a particular floor, other than ground floor, has an exponentially distributed time for which he stays at the floor, after which he catches the lift for other floors according to rules discussed above.

The two algorithms used are:

        The lift goes to the highest floor as determined by its passengers and people in the building and then goes to the lowest floor as determined by the same.

        The lift goes to the top floor and back to bottom, irrespective of the passengers and people in the queue waiting for its arrival

Finally, After executing the program for a long time interval (simulation time), the waiting times of the two cases are compared by the program.

The program can be found here


Program 6: Simple CAD program

This program plots various curves and surfaces including Line, Hermite, Bezier, and B-splines. The input to these is in the n point form. It also performs various transformation on the curves, as desired by the user. Transformations include Translation, Rotation, Reflection, Perspective, Zoom, General transformations. The program also performs Hidden Surface removal through depth-buffer algorithm.

The program can be found here