Esempio n. 1
0
    /**
     * Calculate marker point data
     * @param Array Point The point to calculate data for
     * @param Array NextPoint The next point
     * @param Array PrevPoint The previous point
     * @param Array Totals The pre-calculated totals, if needed
     * @return Array An array containing marker point data
     * @access private
     */
    function _getMarkerData($point, $nextPoint, $prevPoint, & $totals)
    {
        if (!$prevPoint) {
            $point['AX'] = -5;
            $point['AY'] = 5;
            $point['PPX'] = 0;
            $point['PPY'] = 0;
            $point['NPX'] = $nextPoint['X'];
            $point['NPY'] = $nextPoint['Y'];
        }
        elseif (!$nextPoint) {
            $point['AX'] = 5;
            $point['AY'] = 5;
            $point['PPX'] = $prevPoint['X'];
            $point['PPY'] = $prevPoint['Y'];
            $point['NPX'] = 0;
            $point['NPY'] = 0;
        } else {
            $point['AX'] = $this->_parent->_pointY($prevPoint) - $this->_parent->_pointY($nextPoint);
            $point['AY'] = $this->_parent->_pointX($nextPoint) - $this->_parent->_pointX($prevPoint);
            $point['PPX'] = $prevPoint['X'];
            $point['PPY'] = $prevPoint['Y'];
            $point['NPX'] = $nextPoint['X'];
            $point['NPY'] = $nextPoint['Y'];
        }

        $point['APX'] = $point['X'];
        $point['APY'] = $point['Y'];

        $point['LENGTH'] = sqrt($point['AX'] * $point['AX'] + $point['AY'] * $point['AY']);
        if ((isset($point['LENGTH'])) and ($point['LENGTH'] != 0)) {
            $point['ANGLE'] = asin($point['AY'] / $point['LENGTH']);
        }

        if ((isset($point['AX'])) and ($point['AX'] > 0)) {
            $point['ANGLE'] = pi() - $point['ANGLE'];
        }

        if ($this->_dataset->minimumX() != 0) {
            $point['PCT_MIN_X'] = 100 * $point['X'] / $this->_dataset->minimumX();
        }

        if ($this->_dataset->maximumX() != 0) {
            $point['PCT_MAX_X'] = 100 * $point['X'] / $this->_dataset->maximumX();
        }

        if ($this->_dataset->minimumY() != 0) {
            $point['PCT_MIN_Y'] = 100 * $point['Y'] / $this->_dataset->minimumY();
        }

        if ($this->_dataset->maximumY() != 0) {
            $point['PCT_MAX_Y'] = 100 * $point['Y'] / $this->_dataset->maximumY();
        }

        $point['AVERAGE_Y'] = $this->_dataset->_averageY();

        $point['MARKER_X'] = $this->_parent->_pointX($point);
        $point['MARKER_Y'] = $this->_parent->_pointY($point);

        return $point;
    }