1<?php
2
3/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
4
5/**
6 * 3d Library
7 *
8 * PHP versions 5
9 *
10 * LICENSE:
11 * This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU Lesser General Public
13 * License as published by the Free Software Foundation; either
14 * version 2.1 of the License, or (at your option) any later version.
15 *
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19 * Lesser General Public License for more details.
20 *
21 * You should have received a copy of the GNU Lesser General Public
22 * License along with this library; if not, write to the Free Software
23 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
24 *
25 * @category  Image
26 * @package   Image_3D
27 * @author    Kore Nordmann <3d@kore-nordmann.de>
28 * @copyright 1997-2005 Kore Nordmann
29 * @license   http://www.gnu.org/licenses/lgpl.txt lgpl 2.1
30 * @version   CVS: $Id$
31 * @link      http://pear.php.net/package/PackageName
32 * @since     File available since Release 0.1.0
33 */
34
35require_once('Image/3D/Paintable/Object.php');
36
37/**
38 * Image_3D_Object_Cube
39 *
40 * @category  Image
41 * @package   Image_3D
42 * @author    Kore Nordmann <3d@kore-nordmann.de>
43 * @copyright 1997-2005 Kore Nordmann
44 * @license   http://www.gnu.org/licenses/lgpl.txt lgpl 2.1
45 * @version   Release: @package_version@
46 * @link      http://pear.php.net/package/PackageName
47 * @since     Class available since Release 0.1.0
48 */
49class Image_3D_Object_Cube extends Image_3D_Object {
50
51    protected $_points;
52
53    public function __construct($parameter) {
54        parent::__construct();
55
56        $x = (float) @$parameter[0];
57        $y = (float) @$parameter[1];
58        $z = (float) @$parameter[2];
59
60        $this->_points = array();
61
62        $this->_points[1] = new Image_3D_Point(-$x / 2, -$y / 2, -$z / 2);
63        $this->_points[2] = new Image_3D_Point(-$x / 2, -$y / 2,  $z / 2);
64
65        $this->_points[3] = new Image_3D_Point(-$x / 2,  $y / 2, -$z / 2);
66        $this->_points[4] = new Image_3D_Point(-$x / 2,  $y / 2,  $z / 2);
67
68        $this->_points[5] = new Image_3D_Point( $x / 2, -$y / 2, -$z / 2);
69        $this->_points[6] = new Image_3D_Point( $x / 2, -$y / 2,  $z / 2);
70
71        $this->_points[7] = new Image_3D_Point( $x / 2,  $y / 2, -$z / 2);
72        $this->_points[8] = new Image_3D_Point( $x / 2,  $y / 2,  $z / 2);
73
74        // Oben & Unten
75        $this->_addPolygon(new Image_3D_Polygon($this->_points[3], $this->_points[4], $this->_points[8]));
76        $this->_addPolygon(new Image_3D_Polygon($this->_points[3], $this->_points[8], $this->_points[7]));
77
78        $this->_addPolygon(new Image_3D_Polygon($this->_points[2], $this->_points[1], $this->_points[6]));
79        $this->_addPolygon(new Image_3D_Polygon($this->_points[1], $this->_points[5], $this->_points[6]));
80
81        // Links & Rechts
82        $this->_addPolygon(new Image_3D_Polygon($this->_points[3], $this->_points[2], $this->_points[4]));
83        $this->_addPolygon(new Image_3D_Polygon($this->_points[3], $this->_points[1], $this->_points[2]));
84
85        $this->_addPolygon(new Image_3D_Polygon($this->_points[8], $this->_points[5], $this->_points[7]));
86        $this->_addPolygon(new Image_3D_Polygon($this->_points[8], $this->_points[6], $this->_points[5]));
87
88        // Rueck- & Frontseite
89        $this->_addPolygon(new Image_3D_Polygon($this->_points[2], $this->_points[8], $this->_points[4]));
90        $this->_addPolygon(new Image_3D_Polygon($this->_points[2], $this->_points[6], $this->_points[8]));
91
92        $this->_addPolygon(new Image_3D_Polygon($this->_points[1], $this->_points[7], $this->_points[5]));
93        $this->_addPolygon(new Image_3D_Polygon($this->_points[1], $this->_points[3], $this->_points[7]));
94    }
95
96    public function getPoint($int) {
97        if (isset($this->_points[$int])) {
98            return $this->_points[$int];
99        } else {
100            return false;
101        }
102    }
103}
104