/** * Constructor for Math_Vector3 * * @access public * @param mixed $arg an array of values, a Math_Tuple object or a Math_Vector3 object */ public function __construct($arg) { if (is_array($arg) && count($arg) != 3) { $this->tuple = null; } elseif (is_object($arg) && (strtolower(get_class($arg)) != "math_vector3" && strtolower(get_class($arg)) != "math_tuple")) { $this->tuple = null; } elseif (is_object($arg) && strtolower(get_class($arg)) == "math_tuple" && $arg->getSize() != 3) { $this->tuple = null; } else { parent::__construct($arg); } }
echo "Converting to a unit vector\n"; $v->normalize(); echo $v->toString() . "\n"; echo "Length after normalizing: " . $v->length() . "\n"; echo "Reversing vector\n"; $v->reverse(); echo $v->toString() . "\n"; echo "==\nVector from tuple\n"; $w = new Math_Vector($t); echo "Cartesian distance(v,w) = " . $v->distance($w) . "\n"; echo "Manhattan distance(v,w) = " . $v->distance($w, 'manhattan') . "\n"; echo "Chessboard distance(v,w) = " . $v->distance($w, 'chessboard') . "\n"; echo "Vector v: " . $v->toString() . "\n"; echo "Vector w: " . $w->toString() . "\n"; echo "==\nVector from another vector\n"; $z = new Math_Vector(new Math_Vector(range(2, 5))); echo $z->toString() . "\n"; echo "==\nVector3 vector\n"; $x = new Math_Vector3(new Math_Tuple(array(1, 0, 1))); echo $x->toString() . "\n"; echo "==\nVector2 vector\n"; $y = new Math_Vector2(array(1, 3)); echo $y->toString() . "\n"; echo "==\nInvalid vector\n"; $bar = new Math_Vector("foo"); if ($bar->isValid()) { echo "bar is good\n"; } else { echo "bar is bad\n"; } print_r($bar);
function testSolveEC() { $adata = array(array(-4.0, 3.0, -4.0, -1.0), array(-2.0, 0.0, -5.0, 3.0), array(-1.0, -1.0, -3.0, -4.0), array(-3.0, 2.0, 4.0, -1.0)); $bdata = array(-37.0, -20.0, -27.0, 7.0); $res = array(2.0, -2.0, 5.0, 3.0); $resVector = new Math_Vector($res); $a = new Math_Matrix($adata); $b = new Math_Vector($bdata); $x = Math_Matrix::solveEC($a, $b); $this->assertEquals($resVector->toString(), $x->toString()); }