Вход Регистрация
Файл: toolkit/geometry/Point.php
Строк: 104
<?php

/**
 * @package geometry
 * @author Антон Кургузенков <kurguzenkov@list.ru>
 *
 * @version 0.01
 * @since 2012-11-09
 */
require_once 'exceptions.php';

/**
 * Класс, описываюший точку на плоскости.
 */
class Point {

    
/**
     * Координата x точки
     *
     * @var int
     */
    
private $x;

    
/**
     * Координата y точки
     *
     * @var int
     */
    
private $y;

    
/**
     * @param int
     * @param int
     * @throws IllegalArgumentException
     */
    
public function __construct($x$y) {
        
$this->setX($x);
        
$this->setY($y);
    }

    
/**
     * Смещает точку на указанную точку, складывая их координаты.
     * Метод возвращает смещённую точку.
     *
     * @param Point
     * @return Point
     */
    
public function offset(Point $p) {
        
$this->setX($this->getX() + $p->getX());
        
$this->setY($this->getY() + $p->getY());
        return 
$this;
    }

    
/**
     * Складывает координаты точки с координатами точки или высотой и шириной
     * размера и возвращяет новую точку.
     *
     * @param Point
     * @param Point|Size
     * @return Point
     * @throws IllegalArgumentException
     */
    
public static function add(Point $p$obj) {
        if (
$obj instanceof Point) {
            return new 
Point($p->getX() + $obj->getX(), $p->getY() + $obj->getY());
        } else if (
$obj instanceof Size) {
            return new 
Point($p->getX() + $obj->getWidth(), $p->getY() + $obj->getHeight());
        }
        throw new 
IllegalArgumentException();
    }

    
/**
     * Вычитает из координат точки координаты другой точки или
     * высоту и ширину размера.
     *
     * @param Point
     * @param Point|Size
     * @return Point
     * @throws IllegalArgumentException
     */
    
public static function subtract(Point $p$obj) {
        if (
$obj instanceof Point) {
            return 
self::add($p, new Point(-$obj->getX(), -$obj->getY()));
        } else if (
$obj instanceof Size) {
            return 
self::add($p, new Point(-$obj->getWidth(), -$obj->getHeight()));
        }
        throw new 
IllegalArgumentException();
    }

    
/**
     * Сравнивает две точки
     *
     * @param Point
     * @return boolean
     */
    
public function equals(Point $p) {
        return 
$this->getX() == $p->getX() && $this->getY() == $p->getY();
    }

    public function 
getX() {
        return 
$this->x;
    }

    public function 
getY() {
        return 
$this->y;
    }

    
/**
     * @param int
     * @throws IllegalArgumentException
     */

    
public function setX($x) {
        if (
is_integer($x)) {
            
$this->$x;
        } else {
            throw new 
IllegalArgumentException();
        }
    }

    
/**
     * @param int
     * @throws IllegalArgumentException
     */

    
public function setY($y) {
        if (
is_integer($y)) {
            
$this->$y;
        } else {
            throw new 
IllegalArgumentException();
        }
    }

    public function 
__toString() {
        return 
"{x: {$this->x}, y: {$this->y}}";
    }

}

?>
Онлайн: 0
Реклама