не могу получить правильные координаты для правильного отображения - 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);


}
}
}

...