Data compression with lissajous curve

Click For Summary
SUMMARY

The forum discussion centers on adapting a C++ code snippet for data compression and encryption using Lissajous curves. The code utilizes trigonometric functions, specifically cosine and sine, to map two input values (x and y) into a single value (t), allowing for reversible calculations. The user aims to create a method that not only compresses data but also retains the ability to retrieve the original values, emphasizing the uniqueness of the mapping process. The discussion highlights the need for clearer documentation and understanding of the code's intended functionality.

PREREQUISITES
  • C++ programming skills
  • Understanding of trigonometric functions
  • Familiarity with data compression techniques
  • Knowledge of encryption principles
NEXT STEPS
  • Research "C++ trigonometric functions" for better implementation of sine and cosine in data compression.
  • Explore "Lissajous curves" and their applications in data representation.
  • Study "reversible data compression algorithms" to understand existing methods.
  • Investigate "encryption techniques in C++" to enhance security in data handling.
USEFUL FOR

Software developers, data scientists, and cryptography enthusiasts interested in innovative methods of data compression and encryption using mathematical functions.

benjamin p north
Messages
2
Reaction score
0
I was hoping this c++ file could be adapted to use as data compression or encryption
Code:
#include <iostream>
#include <cmath>

using namespace std;
double asil(double t)
{
    count<<"asil\n";
 count<< cos(t) << endl;
 double two = 2.0;
 count<< sin(sqrt(two)*t) << endl; return sin(sqrt(two)*t);
}

int main(){
    double one = 1;
    double four = 4;
    double pi = atan(one)*four;
    double tolerance = .00001;
//count<<"dedede";

double m=1,n=1,t=1,x=1,y=1;
count<<"enter x: " <<endl;
cin>>x;
count<<"enter y: "<<endl;
cin>>y;
int i = 0;
while(

(sqrt(2)-tolerance)>((asin(y)+2*pi*m)/(acos(x)+2*pi*n))||
(sqrt(2)+tolerance)<((asin(y)+2*pi*m)/(acos(x)+2*pi*n)))
{
    if(i++ % 100000 == 0) asil(t);
/**
if( ((sqrt(2)+0.0001)>=((asin(y)+2*pi*m)/(acos(x)+2*pi*n)))
&&((sqrt(2)-0.0001)<=((asin(y)+2*pi*m)/(acos(x)+2*pi*n))) ){ t=acos(x)+2*pi*n;
 count<<t<<endl;
 }
else **/
 if(

(sqrt(2)-tolerance)>=((asin(y)+2*pi*m)/(acos(x)+2*pi*n))){
m=m+1;}

else if((sqrt(2)+tolerance)<=((asin(y)+2*pi*m)/(acos(x)+2*pi*n)))
{
n=n+1;}
}
 t=acos(x)+2*pi*n;
 count<<t<<endl;
 asil(t);
return 0;
}
 
Last edited by a moderator:
Technology news on Phys.org
benjamin p north said:
I was hoping this c++ file could be adapted to use as data compression or encryption
Code:
#include <iostream>
#include <cmath>

using namespace std;
double asil(double t)
{
    count<<"asil\n";
 count<< cos(t) << endl;
 double two = 2.0;
 count<< sin(sqrt(two)*t) << endl; return sin(sqrt(two)*t);
}

int main(){
    double one = 1;
    double four = 4;
    double pi = atan(one)*four;
    double tolerance = .00001;
//count<<"dedede";

double m=1,n=1,t=1,x=1,y=1;
count<<"enter x: " <<endl;
cin>>x;
count<<"enter y: "<<endl;
cin>>y;
int i = 0;
while(

(sqrt(2)-tolerance)>((asin(y)+2*pi*m)/(acos(x)+2*pi*n))||
(sqrt(2)+tolerance)<((asin(y)+2*pi*m)/(acos(x)+2*pi*n)))
{
    if(i++ % 100000 == 0) asil(t);
/**
if( ((sqrt(2)+0.0001)>=((asin(y)+2*pi*m)/(acos(x)+2*pi*n)))
&&((sqrt(2)-0.0001)<=((asin(y)+2*pi*m)/(acos(x)+2*pi*n))) ){ t=acos(x)+2*pi*n;
 count<<t<<endl;
 }
else **/
 if(

(sqrt(2)-tolerance)>=((asin(y)+2*pi*m)/(acos(x)+2*pi*n))){
m=m+1;}

else if((sqrt(2)+tolerance)<=((asin(y)+2*pi*m)/(acos(x)+2*pi*n)))
{
n=n+1;}
}
 t=acos(x)+2*pi*n;
 count<<t<<endl;
 asil(t);
return 0;
}
Welcome to the PF.

I added code tags to your post -- please use code tags to improve readability of code posted here at the PF. Thanks.

Also, it's a lot of work trying to decode your uncommented code. Could you explain what you are trying to do? Could you post links to the reading that you have been doing that suggests this code can be used for encryption?
 
  • Like
Likes   Reactions: Greg Bernhardt
berkeman said:
Welcome to the PF.

I added code tags to your post -- please use code tags to improve readability of code posted here at the PF. Thanks.

Also, it's a lot of work trying to decode your uncommented code. Could you explain what you are trying to do? Could you post links to the reading that you have been doing that suggests this code can be used for encryption?
I was trying to take two numbers between zero and one and compress them into one number in a way that you can use trig to get back the original two numbers.

Eg. X= cos t y=sin (sqrt2*t)
Plug in x and y. Then solve for t. You can use t later to get back x and y. Hopefully t is shorter to write than x and y.

I was also hoping it could be used for encryption.

Additionally, it's a reversible calculation. Unlike adding 2 plus 3 to get 5. Once you have 5, you can't tell if it came from 2 plus 3 or 1 plus 4.Also it's a 1 to 2 mapping
 

Similar threads

  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 6 ·
Replies
6
Views
12K
Replies
10
Views
2K
Replies
22
Views
5K
  • · Replies 89 ·
3
Replies
89
Views
6K
  • · Replies 6 ·
Replies
6
Views
2K
Replies
12
Views
2K
  • · Replies 17 ·
Replies
17
Views
2K
  • · Replies 23 ·
Replies
23
Views
3K
  • · Replies 66 ·
3
Replies
66
Views
6K