97 lines
2.3 KiB
C++
97 lines
2.3 KiB
C++
|
#include "datafunc.h"
|
||
|
|
||
|
void dis_play()
|
||
|
{
|
||
|
cout<<"xyzdiff 0.2 - simple functions calculating the difference or sum of two xyz data"<<endl<<endl
|
||
|
<<"usage: xyzdiff <xyzfile1> <xyzfile2> -a|-m [-r<xmin>/<xmax>/<ymin>/<ymax>] [-i<dx>/<dy>] -o<outfile>"<<endl
|
||
|
<<"-a|-m\tadd data and minus data from xyzfile1 and xyzfile2"<<endl
|
||
|
<<"-r\tspecify the range of interested"<<endl
|
||
|
<<"-i\tspecify intervals of interested"<<endl
|
||
|
<<"-o\tspecify outfile name"<<endl<<endl
|
||
|
<<"examples: xyzdiff example.xyz example2.xyz -m -r0/100/0/100 -i1/1 -oexample-out.xyz"<<endl;
|
||
|
}
|
||
|
|
||
|
int main(int argc, char* argv[])
|
||
|
{
|
||
|
char cmd_type[1024] = {0};
|
||
|
char filename[1024] = {0};
|
||
|
char filename2[1024] = {0};
|
||
|
char outname[1024] = {0};
|
||
|
int caltype = -1;
|
||
|
double range[4] = {MAX,MAX,MAX,MAX};
|
||
|
double interval[2] = {MAX,MAX};
|
||
|
|
||
|
if (argc<=3)
|
||
|
{
|
||
|
dis_play();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if(-1==sscanf(argv[1],"%s",filename))
|
||
|
{
|
||
|
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[1]<<endl;
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
if(-1==sscanf(argv[2],"%s",filename2))
|
||
|
{
|
||
|
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[2]<<endl;
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
for (int i = 3; i < argc; i++)
|
||
|
{
|
||
|
sscanf(argv[i],"%2s",cmd_type);
|
||
|
if (!strcmp(cmd_type,ADD)) caltype = 2;
|
||
|
else if (!strcmp(cmd_type,MINUS)) caltype = 1;
|
||
|
else if (!strcmp(cmd_type,RANGE))
|
||
|
{
|
||
|
if (4!=sscanf(argv[i],"%*2s%lf/%lf/%lf/%lf",&range[0],&range[1],&range[2],&range[3]))
|
||
|
{
|
||
|
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
|
||
|
return 0;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (range[0]>=range[1]
|
||
|
||range[2]>=range[3])
|
||
|
{
|
||
|
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else if (!strcmp(cmd_type,INTERVAL))
|
||
|
{
|
||
|
if (2!=sscanf(argv[i],"%*2s%lf/%lf",&interval[0],&interval[1]))
|
||
|
{
|
||
|
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
|
||
|
return 0;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (interval[0]<=0.0||interval[1]<=0.0)
|
||
|
{
|
||
|
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else if (!strcmp(cmd_type,OUTFILE))
|
||
|
{
|
||
|
if (-1==sscanf(argv[i],"%*2s%s",outname))
|
||
|
{
|
||
|
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (range[0] == MAX)
|
||
|
xyz_add_minus(filename,filename2,outname,caltype);
|
||
|
else
|
||
|
xyz_add_minus(filename,filename2,outname,range,interval,caltype);
|
||
|
}
|
||
|
return 0;
|
||
|
}
|