?? complex.java
字號:
/*
* Complex
*
* Performs complex number operation and coordinate transform.
*
* Meirong He
* EEE Department
* University of Sheffield
* July 2005
*/
public class Complex {
double real, ima, modu, ang;
public Complex() {}
public Complex (String coordinate, double rm, double ia) {
if (coordinate.equals("orth") ){
real=rm; ima=ia;
changePolar();
}
else if (coordinate.equals("polar"))
{
modu=rm; ang=ia;
changeOrth();
}
else
System.out.println("Please indicate the coordinate, 'orth' or 'polar'!");
}
//Construction of complex number via orthogonal or polar coordinate
public void addComp(Complex obj) {
real=real+obj.real;
ima=ima+obj.ima;
changePolar();
}
//Complex adding operation in orthogonal coordinate
public void minusComp(Complex obj) {
real=real-obj.real;
ima=ima-obj.ima;
changePolar();
}
//Complex subtracting operation in orthogonal coordinate
public void multiplyComp(Complex obj) {
modu=modu*obj.modu;
ang=ang+obj.ang;
changeOrth();
}
//Complex multiplying operation in polar coordinate
public void divideComp(Complex obj) {
if(obj.modu==0) {
System.out.println("Cannot divide 0");
return;
}
modu=modu/obj.modu;
ang=ang-obj.ang;
changeOrth();
}
//Complex division operation in polar coordinate
public void setValue(String coordinate, double rm, double ia) {
if (coordinate.equals("orth")) {
real=rm; ima=ia;
changePolar();
}
else if (coordinate.equals("polar")){
modu=rm; ang=ia;
changeOrth();
}
else
System.out.println("Please indicate the coordinate, 'orth' or 'polar'!");
}
//Change complex number directly
public void setModule(double rm) {
modu=rm;
changeOrth();
}
public void setPhase(double ia) {
ang=ia;
changeOrth();
}
private void changePolar() {
modu=Math.sqrt(real*real+ima*ima);
if(real==0) {
if(ima==0) ang=0; //To avoid dividing by zero
else if(ima>0) ang=Math.PI/2;
else ang=-Math.PI;
}
else {
ang=Math.atan(ima/real);
if (real<0) ang=ang+Math.PI;
//To ensure proper angle within one circle
}
}
private void changeOrth() {
real=modu*Math.cos(ang);
ima=modu*Math.sin(ang);
}
public Complex copy() {
return new Complex("orth", real, ima);
}
public String toString() {
double rr=((int)(real*1000))/1000.0;
double ii=((int)(ima*1000))/1000.0;
double mm=((int)(modu*1000))/1000.0;
double aa=((int)(ang*1000))/1000.0;
double cc=((int)(180*1000*aa/Math.PI))/1000.0;
//To keep three decimals
return " "+rr+"+j("+ii+") modul="+mm+" angle="+aa+ " / "+cc+"degree";
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -