public function Power($pow) { w_assert(is_int($pow) && $pow >= 0); switch ($pow) { case 1: return clone $this; default: $result = ALiVE_Matrix_Create_Identity($this->Order()); for ($i = 0; $i < $pow; ++$i) { $result = ALiVE_Matrices_Multiply($result, $this); } return $result; } }
<?php require_once 'alive.php'; $invector = new ALiVE_Vector(5, -3, 12); $outvector = new ALiVE_Vector(1, 0, 0); $myplane = new ALiVE_Plane(new ALiVE_Vector(0, 0, 0), new ALiVE_Vector(12, 3, 108), new ALiVE_Vector(5, -3, 12)); w_assert($myplane->Contains($invector)); w_assert(!$myplane->Contains($outvector)); $i = new ALiVE_Vector_I(); $j = new ALiVE_Vector_J(); $k = new ALiVE_Vector_K(); w_assert(ALiVE_Vectors_Equal(ALiVE_Vectors_CrossProduct($i, $j), $k)); w_assert(ALiVE_Vectors_Equal(ALiVE_Vectors_CrossProduct($j, $k), $i)); w_assert(ALiVE_Vectors_Equal(ALiVE_Vectors_CrossProduct($k, $i), $j)); $matrix = ALiVE_Matrix_Create_Identity(4); w_assert($matrix->M() == 4 && $matrix->N() == 4); w_assert($matrix->Get(0, 1) == 0); w_assert($matrix->Get(0, 0) == 1); w_assert($matrix->Get(1, 1) == 1); w_assert($matrix->Get(2, 2) == 1); w_assert($matrix->Get(3, 3) == 1); $neutral = new ALiVE_Transformation_Neutral(); $vector = new ALiVE_Vector(10.5, 7, -34.67); $result = $neutral->Apply($vector); w_assert($result instanceof ALiVE_Vector); w_assert($result->X() == 10.5); w_assert($result->Y() == 7); w_assert($result->Z() == -34.67); $p = new ALiVE_Vector(0.4, 0, 0); $neutral1 = new ALiVE_Translation(0, 0, 0); $neutral2 = new ALiVE_Rotation(0, 0, 0);