/* This file is part of the source code for 3D-XplorMath-J, Version 1.0 (January 2008).
* Copyright (c) 2008 The 3D-XplorMath Consortium (http://3d-xplormath.org).
* This source code is released under a BSD License, which allows redistribution
* in source and binary form, with or without modification, provided copyright
* and license information are included, and with no warranty or guarantee of
* any kind. For details, see http://3d-xplormath.org/j/source/BSDLicense.txt
*/
package vmm3d.functions;
import vmm3d.core.Complex;
/**
* A complex-valued variable. A ComplexVariable can be added to a {@link Parser}
* so that it can be used in the defintion of functions and expressions
* that are parsed by that parser. It is possible to change the value
* of a variable with the {@link #setVal(Complex)} or {@link #setVal(double, double)} method, which will
* affect the value of any expressions and functions in which it is used.
*/
public class ComplexVariable {
private String name;
private double re, im;
/**
* Create a ComplexVariable with a specified name and initial value.
* @param name the name of the variable. This can be null. If the variable is
* to be added to a Parser, then the name must be non-null and should be
* a legal identifier (starting with a letter and containing only letters,
* digits and the underscore character).
* @param re the real part of the initial value of the variable
* @param im the imaginary part of the initial value of the variable
*/
public ComplexVariable(String name, double re, double im) {
this.name = name;
this.re = re;
this.im = im;
}
/**
* Create a ComplexVariable with a specified name and initial value zero.
*/
public ComplexVariable(String name) {
this.name = name;
}
/**
* Create a ComplexVariable with a specified initial value and with name initially
* equal to null.
* @param re the real part of the initial value of the variable
* @param im the imaginary part of the initial value of the variable
*/
public ComplexVariable(double re, double im) {
this.re = re;
this.im = im;
}
/**
* Gets the real part of the value of this variable.
*/
public double getRe() {
return re;
}
/**
* Gets the imaginary part of the value of this variable.
*/
public double getIm() {
return im;
}
/**
* Returns the value of this variable as an object of type Complex.
*/
public Complex getVal() {
return new Complex(re,im);
}
/**
* Gets the current value of this variable by storing the value in a pre-existing
* object of type Complex.
* @param c the object where the value will be stored. This must be non-null.
*/
public void getVal(Complex c) {
c.re =re;
c.im = im;
}
/**
* Sets the value of this variable
* @param re the new value of the real part
* @param im the new value of the imaginary part
*/
public void setVal(double re, double im) {
this.re = im;
this.im = im;
}
/**
* Set the value of this variable.
* @param c the new value of the variable. A null value is treated as zero.
*/
public void setVal(Complex c) {
if (c == null) {
this.re = 0;
this.im = 0;
}
else {
this.re = c.re;
this.im = c.im;
}
}
/**
* Get the name of this variable. This can be null.
*/
public String getName() {
return name;
}
/**
* Sets the name of this variable. The name should not be changed after
* the variable has been added to a Parser; even if the name is changed, the
* Parser will continue to use it under the name it had at the time it was
* added to the parser.
*/
public void setName(String name) {
this.name = name;
}
}
Ads help maintain this website.