Data compression with lissajous curve

AI Thread Summary
The discussion centers around adapting a C++ code snippet for data compression or encryption. The original code uses trigonometric functions to transform two input numbers (x and y) into a single value (t), aiming to allow for the recovery of the original numbers through inverse calculations. The user seeks to create a reversible mapping, highlighting that unlike simple arithmetic operations, this method retains the ability to trace back to the original inputs. However, there are concerns regarding the clarity and readability of the code, with requests for better documentation and references to support the claim that this approach can be utilized for encryption. The goal is to achieve a compact representation of two numbers while maintaining the ability to retrieve them accurately.
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)
{
    cout<<"asil\n";
 cout<< cos(t) << endl;
 double two = 2.0;
 cout<< 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;
//cout<<"dedede";

double m=1,n=1,t=1,x=1,y=1;
cout<<"enter x: " <<endl;
cin>>x;
cout<<"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;
 cout<<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;
 cout<<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)
{
    cout<<"asil\n";
 cout<< cos(t) << endl;
 double two = 2.0;
 cout<< 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;
//cout<<"dedede";

double m=1,n=1,t=1,x=1,y=1;
cout<<"enter x: " <<endl;
cin>>x;
cout<<"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;
 cout<<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;
 cout<<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 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
 
Thread 'Is this public key encryption?'
I've tried to intuit public key encryption but never quite managed. But this seems to wrap it up in a bow. This seems to be a very elegant way of transmitting a message publicly that only the sender and receiver can decipher. Is this how PKE works? No, it cant be. In the above case, the requester knows the target's "secret" key - because they have his ID, and therefore knows his birthdate.
I tried a web search "the loss of programming ", and found an article saying that all aspects of writing, developing, and testing software programs will one day all be handled through artificial intelligence. One must wonder then, who is responsible. WHO is responsible for any problems, bugs, deficiencies, or whatever malfunctions which the programs make their users endure? Things may work wrong however the "wrong" happens. AI needs to fix the problems for the users. Any way to...
Back
Top