получение координат для отображения правильной стороны Мне нужно, чтобы долготы между 180-360 находились с левой стороны и 0-179 с правой стороны - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь заставить карту закрасить левую сторону установленного scaleX на 180–360 долготы и правую сторону от 0 до 180, но я не совсем уверен, как заставить эти координаты конвертировать, так как не могу добавить дополнительные параметры в filRect, так как мне разрешено только 4 параметра. Если я установлю ScaleX на 0, 360, я получу карту неправильно. У меня есть 2 класса Plot и Plotmap

Мой класс графика


import javax.swing.*;
import java.awt.*;

public class Plot extends JComponent {
    int width = 1200, height = 1200;

    double xmin = 0, xmax = 1, ymin = 0, ymax = 1, lmin = 0, lmax = 180;

    public int scaleX(double x){
        return (int) (width * (x - xmin) / (xmax + xmin));
    }

    public int scaleY ( double y){
        return (int) (height * (ymin - y) / (ymax - ymin) + height);
    }

    public void setScaleX ( double min, double max){
        xmin = min;
        xmax = max;
    }

    public void setScaleY ( double min, double max){
        ymin = min;
        ymax = max;
    }
}

Мой класс карты класса

public class Plotmap extends Plot {
    Earth e;
    int point = 20;

    public Plotmap(String filename) throws FileNotFoundException {
        e = new Earth();
        e.readDataArray(filename);
        setScaleX(0, 360);
        setScaleY(-90, 90);
        //setScaleXR(180, 360);
        //setScaleYR(-90, 90);
    }

    @Override
    public void paintComponent(Graphics g) {
        Graphics2D g2d = (Graphics2D) g;

        this.width = getWidth();
        this.height = getHeight();

        for (int i = 0; i < e.array.length; i++) {
            double longitude = e.array[i][0];
            double latitude = e.array[i][1];
            double alti = e.array[i][2];

            if (alti < 0) 
                g2d.setColor(new Color(0, 90, 139));
            else
                g2d.setColor(new Color(0, 0, 139));
             g.fillRect(scaleX(longitude), scaleY(latitude), point, point);
        }
    }
}
...