#include<iostream.h>
#include<math.h>
#include"lib351.h"

void main (){

	bool goout = false;
	while (!goout){

   		ofstream dataOutStr;

 		//___SET_THE_VARIABLES___
    	int imRows;
	  	int imColumns;
	 	const float xScaling = 5;
	 	const float yScaling = 3;
    	imRows = int(78* (xScaling/5) + 1);
    	if(imRows > 65){
    		imRows = 65;
    	}
    	imColumns = 80;

     	float scale, alg2;
   		scale = (xScaling + yScaling)/10;
    	alg2 = scale * log(2)/2.5;

	 	char **image;
	 	image    = new char *[imRows];
	 	for (int i = 0; i < imRows; i++){
		 	image[i] = new char [imColumns];
 	 	}
    	
		int jv, jtest;
	 	float A1, A2, Q1, Q2, x, y;
	 	float r1, r2, v;


		//____________________________DATA_INPUT__________________________

		cout <<"Please, supply values :"<< endl;
		cout <<"\nX coordinate for Q1"<< endl;
		cin  >> A1;
		cout <<"\nX coordinate for Q2"<< endl;
		cin  >> A2;
        cout <<"\ncharge Q1"<< endl;
		cin  >> Q1;
		cout <<"\ncharge Q2"<< endl;
		cin  >> Q2;

		outFileMaker("m348p2c.out", &dataOutStr);
		dataOutStr<<'#'<<"   EQUIPOTENTIAL PLOT" <<endl;
		dataOutStr<<"A1="<<A1<<"; A2="<<A2<<"; Q1="<<Q1<<"; Q2="<<Q2<<endl;
		//________________________________________________________________

		for (i = 0; i < imRows; i++){
			for (int j = 0; j < imColumns; j++){
				image[i][j] = ' ';
            }
        }

        for (i = 0; i < imRows; i++){
        	for (int j = 0; j < imColumns; j++){

				x = (j - 51)/xScaling;
				y = (i - 31)/yScaling;

				r1 = sqrt(pow((x-A1), 2) + pow(y, 2)) + 0.000001;
				r2 = sqrt(pow((x-A2), 2) + pow(y, 2)) + 0.000001;

				v = Q1/r1 + Q2/r2 + 0.000001;


				alg2 = log(2)/2;

       			if (v != 0){
       				jv = int(log(fabs(v))/alg2);
       			}
       			if (v == 0){
       				jv = 0;
       			}
       			jtest = jv - 2 * int(jv/2);
       			if (jtest != 0){
       				image[i][j] = ' ';
       			}
       			if (jtest == 0 && v < 0){
       				image[i][j] = '=';
       			}
				if (jtest == 0 && v >= 0){
       				image[i][j] = '+';
       			}
			}
		}

		//_____OUTPUT_THE_MATRIX______

		d2bArrayOutput(imRows, imColumns, image, &dataOutStr);

		//_____QUERY_THE_USER_____

		goout = query();
	}
};

