In this post I will show you how to calculate and plot the Lissajous Curves using C and Gnuplot.
We will use the following information:
We will create a program that calculates the values of the x and y for various values and for different n and store these values in a txt file. Then just plot it using Gnuplot.
We will create two functions called ‘x’ and ‘y’, that contain the definition of x and y respectively.
PROGRAM:
/************************************
********LISSAJOUS FIGURES **********
************************************/
#include<stdio.h>
#include<math.h>
double x(double theta){
return sin(theta);
}
double y(double theta, double A,double n, double delta){
return A*sin(n*theta+delta);
}
main(){
double theta;
FILE *fp=NULL;
double A,n,delta;
fp=fopen("lissajous.txt","w");
/*Loop to calculate and store data-points*/
for(theta=0;theta<=4*M_PI;theta=theta+0.01){
/*Change A, n or delta here*/
A=1;
n=3;
delta=M_PI/4;
fprintf(fp,"%lf\t%lf\n",x(theta),y(theta,A,n,delta));
}
}
When you run the above C, it will generate a file called ‘lissajous.txt’ which would contain 2 columns of data-points.
The first column contains the ‘x’ values and the next one is for ‘y’ values.
These can be easily plotted using Gnuplot by using the following commands:
GnuPlot Command
plot 'lissajous.txt' w l
OUTPUT
For different values of the output looks as follows:






Resources:
https://academo.org/demos/lissajous-curves/
I’m a physicist specializing in computational material science with a PhD in Physics from Friedrich-Schiller University Jena, Germany. I write efficient codes for simulating light-matter interactions at atomic scales. I like to develop Physics, DFT, and Machine Learning related apps and software from time to time. Can code in most of the popular languages. I like to share my knowledge in Physics and applications using this Blog and a YouTube channel.
