Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/*
 JOpenChart Java Charting Library and Toolkit
 Copyright (C) 2001  Sebastian Mller
 http://jopenchart.sourceforge.net
    
 This library is free software; you can redistribute it and/or
 modify it under the terms of the GNU Lesser General Public
 License as published by the Free Software Foundation; either
 version 2.1 of the License, or (at your option) any later version.
    
 This library is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 Lesser General Public License for more details.
    
 You should have received a copy of the GNU Lesser General Public
 License along with this library; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    
 ChartUtilities.java
 Created on 21. September 2001, 17:42
 */

public class Main {
    /** Calculates the best tick spacing for the rounded minimal and maximal
     * values.
     * @param min the rounded minimal value
     * @param max the rounded maximal value
     * @return the spacing of ticks on the x-axis.
     */
    public static double calculateTickSpacing(double min, double max) {
        double spacing = 1.0;

        double diff = max - min;

        int exp = exp(diff);

        exp--;

        spacing = 1.0 * Math.pow(10.0, (double) exp);

        // Currently, only every second tick gets a label, so 20 - 40 ticks are fine. 
        // This should be reduced in a loop probably.
        if ((diff / spacing) < 20)
            return 0.5 * spacing;
        else if ((diff / spacing) > 40)
            return 2 * spacing;
        else
            return spacing;
    }

    /** A double value can be represented like 
     * <code>d = x * 10<sup>exp</sup></code> and this method returns
     * the value of exp for a double d.
     * @param d the double value
     * @return the exponent of 10
     */
    public static int exp(double d) {
        int exp = 0;
        boolean positive = (d <= -1 || d >= 1);

        while ((d <= -10) || (d >= 10) || ((d > -1) && (d < 1))) {
            if (positive) {
                d /= 10;
                exp++;
            } else {
                d *= 10;
                exp--;
            }
        }

        return exp;
    }
}