示例#1
0
 /**
  * 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());
 }