{"id":23340,"date":"2026-09-25T10:53:42","date_gmt":"2026-09-25T08:53:42","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=23340"},"modified":"2026-09-25T10:53:42","modified_gmt":"2026-09-25T08:53:42","slug":"groessenvergleich-sonne-erde-und-beteigeuze-logarithmische-skala","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=23340","title":{"rendered":"Gr\u00f6\u00dfenvergleich Sonne, Erde und Beteigeuze (logarithmische Skala)"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/09\/durchmesser.jpeg\" alt=\"\" width=\"2494\" height=\"1476\" class=\"aligncenter size-full wp-image-23341\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/09\/durchmesser.jpeg 2494w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/09\/durchmesser-300x178.jpeg 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/09\/durchmesser-1024x606.jpeg 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/09\/durchmesser-768x455.jpeg 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/09\/durchmesser-1536x909.jpeg 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/09\/durchmesser-2048x1212.jpeg 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Die Darstellung verwendet eine logarithmische Skala, damit Sonne, Erde und Beteigeuze gemeinsam sichtbar dargestellt werden k\u00f6nnen. <\/p>\n<p>Orion ist eines der auff\u00e4lligsten und am leichtesten erkennbaren Sternbilder des Nachthimmels. Es ist jetz auf der Nordhalbkugel besonders gut zu beobachten.<\/p>\n<p>Beteigeuze befindet sich an der Schulter des Orion. Es handelt sich um einen roten \u00dcberriesen und einen der auff\u00e4lligsten Sterne des Sternbildes. Seine r\u00f6tliche F\u00e4rbung ist bereits mit blo\u00dfem Auge erkennbar.<\/p>\n<p>Hier die Java Klasse mit Swing f\u00fcr den Gr\u00f6\u00dfenvergleich: <!--more--><\/p>\n<pre class=\"minimize:true expand:true lang:java decode:true \" >import javax.swing.*;\r\nimport java.awt.*;\r\nimport java.text.NumberFormat;\r\nimport java.util.Locale;\r\n\r\n\/**\r\n * Gr\u00f6\u00dfenvergleich Sonne, Erde und Beteigeuze.\r\n *\r\n * Die Darstellung verwendet eine logarithmische Skala,\r\n * damit Sonne, Erde und Beteigeuze gemeinsam sichtbar\r\n * dargestellt werden k\u00f6nnen.\r\n * \r\n * @author Thomas Wenzlaff\r\n *\/\r\npublic class SpaceSizeComparison extends JFrame {\r\n\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    private static final double SUN_DIAMETER_KM = 1_392_700.0;\r\n    private static final double EARTH_DIAMETER_KM = 12_742.0;\r\n    private static final double BETELGEUSE_DIAMETER_KM = 1_950_000_000.0;\r\n\r\n    private final NumberFormat numberFormat =\r\n            NumberFormat.getNumberInstance(Locale.GERMANY);\r\n\r\n    public SpaceSizeComparison() {\r\n\r\n        super(\"Gr\u00f6\u00dfenvergleich: Sonne \u2013 Erde \u2013 Beteigeuze\");\r\n\r\n        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r\n        setLayout(new BorderLayout());\r\n\r\n        add(new HeaderPanel(), BorderLayout.NORTH);\r\n        add(new ComparisonPanel(), BorderLayout.CENTER);\r\n        add(new InformationPanel(), BorderLayout.SOUTH);\r\n\r\n        setSize(1100, 760);\r\n        setLocationRelativeTo(null);\r\n        setMinimumSize(new Dimension(800, 600));\r\n    }\r\n\r\n    \/**\r\n     * Kopfbereich.\r\n     *\/\r\n    private class HeaderPanel extends JPanel {\r\n\r\n        private static final long serialVersionUID = 1L;\r\n\r\n        HeaderPanel() {\r\n\r\n            setBorder(BorderFactory.createEmptyBorder(\r\n                    15, 20, 10, 20));\r\n\r\n            JLabel title = new JLabel(\r\n                    \"Durchmesservergleich astronomischer K\u00f6rper\");\r\n\r\n            title.setFont(new Font(\r\n                    Font.SANS_SERIF,\r\n                    Font.BOLD,\r\n                    26));\r\n\r\n            add(title);\r\n        }\r\n    }\r\n\r\n    \/**\r\n     * Hauptbereich mit den drei Objekten.\r\n     *\/\r\n    private class ComparisonPanel extends JPanel {\r\n\r\n        private static final long serialVersionUID = 1L;\r\n\r\n        ComparisonPanel() {\r\n\r\n            setBackground(Color.BLACK);\r\n\r\n            setBorder(BorderFactory.createCompoundBorder(\r\n                    BorderFactory.createLineBorder(\r\n                            new Color(80, 80, 80)),\r\n                    BorderFactory.createEmptyBorder(\r\n                            20, 20, 20, 20)));\r\n        }\r\n\r\n        @Override\r\n        protected void paintComponent(Graphics g) {\r\n\r\n            super.paintComponent(g);\r\n\r\n            Graphics2D g2 = (Graphics2D) g.create();\r\n\r\n            try {\r\n\r\n                g2.setRenderingHint(\r\n                        RenderingHints.KEY_ANTIALIASING,\r\n                        RenderingHints.VALUE_ANTIALIAS_ON);\r\n\r\n                int width = getWidth();\r\n                int height = getHeight();\r\n\r\n                \/*\r\n                 * Mittellinie.\r\n                 *\/\r\n                int centerY = height \/ 2;\r\n\r\n                \/*\r\n                 * Logarithmische Skalierung.\r\n                 *\r\n                 * Dadurch entspricht die sichtbare Gr\u00f6\u00dfe\r\n                 * dem Logarithmus des tats\u00e4chlichen Durchmessers.\r\n                 *\/\r\n                double minLog = Math.log10(EARTH_DIAMETER_KM);\r\n                double maxLog = Math.log10(BETELGEUSE_DIAMETER_KM);\r\n\r\n                double available =\r\n                        Math.min(width * 0.80, height * 0.70);\r\n\r\n                double maxRadius = available \/ 2.0;\r\n\r\n                drawObject(\r\n                        g2,\r\n                        \"Erde\",\r\n                        EARTH_DIAMETER_KM,\r\n                        minLog,\r\n                        maxLog,\r\n                        maxRadius,\r\n                        width \/ 6,\r\n                        centerY);\r\n\r\n                drawObject(\r\n                        g2,\r\n                        \"Sonne\",\r\n                        SUN_DIAMETER_KM,\r\n                        minLog,\r\n                        maxLog,\r\n                        maxRadius,\r\n                        width \/ 2,\r\n                        centerY);\r\n\r\n                drawObject(\r\n                        g2,\r\n                        \"Beteigeuze\",\r\n                        BETELGEUSE_DIAMETER_KM,\r\n                        minLog,\r\n                        maxLog,\r\n                        maxRadius,\r\n                        width * 5 \/ 6,\r\n                        centerY);\r\n\r\n            } finally {\r\n\r\n                g2.dispose();\r\n            }\r\n        }\r\n\r\n        private void drawObject(\r\n                Graphics2D g2,\r\n                String name,\r\n                double diameter,\r\n                double minLog,\r\n                double maxLog,\r\n                double maxRadius,\r\n                int centerX,\r\n                int centerY) {\r\n\r\n            double valueLog = Math.log10(diameter);\r\n\r\n            double normalized =\r\n                    (valueLog - minLog) \/\r\n                    (maxLog - minLog);\r\n\r\n            \/*\r\n             * Mindestgr\u00f6\u00dfe f\u00fcr die Sichtbarkeit.\r\n             *\/\r\n            double radius =\r\n                    25 + normalized * (maxRadius - 25);\r\n\r\n            int r = (int) Math.round(radius);\r\n\r\n            \/*\r\n             * Farbe.\r\n             *\/\r\n            if (\"Erde\".equals(name)) {\r\n                g2.setColor(new Color(60, 130, 220));\r\n            } else if (\"Sonne\".equals(name)) {\r\n                g2.setColor(new Color(255, 190, 40));\r\n            } else {\r\n                g2.setColor(new Color(220, 100, 50));\r\n            }\r\n\r\n            g2.fillOval(\r\n                    centerX - r,\r\n                    centerY - r,\r\n                    2 * r,\r\n                    2 * r);\r\n\r\n            \/*\r\n             * Umrandung.\r\n             *\/\r\n            g2.setColor(Color.WHITE);\r\n\r\n            g2.drawOval(\r\n                    centerX - r,\r\n                    centerY - r,\r\n                    2 * r,\r\n                    2 * r);\r\n\r\n            \/*\r\n             * Name.\r\n             *\/\r\n            g2.setFont(new Font(\r\n                    Font.SANS_SERIF,\r\n                    Font.BOLD,\r\n                    20));\r\n\r\n            FontMetrics fm = g2.getFontMetrics();\r\n\r\n            int nameX =\r\n                    centerX - fm.stringWidth(name) \/ 2;\r\n\r\n            g2.drawString(\r\n                    name,\r\n                    nameX,\r\n                    centerY + r + 35);\r\n\r\n            \/*\r\n             * Durchmesser.\r\n             *\/\r\n            g2.setFont(new Font(\r\n                    Font.SANS_SERIF,\r\n                    Font.PLAIN,\r\n                    15));\r\n\r\n            String diameterText =\r\n                    formatKilometers(diameter);\r\n\r\n            fm = g2.getFontMetrics();\r\n\r\n            int diameterX =\r\n                    centerX - fm.stringWidth(\r\n                            diameterText) \/ 2;\r\n\r\n            g2.drawString(\r\n                    diameterText,\r\n                    diameterX,\r\n                    centerY + r + 58);\r\n        }\r\n    }\r\n\r\n    \/**\r\n     * Informationsbereich.\r\n     *\/\r\n    private class InformationPanel extends JPanel {\r\n\r\n        private static final long serialVersionUID = 1L;\r\n\r\n        InformationPanel() {\r\n\r\n            setLayout(new GridLayout(4, 1));\r\n\r\n            setBorder(BorderFactory.createEmptyBorder(\r\n                    12, 20, 15, 20));\r\n\r\n            JLabel scaleLabel = new JLabel(\r\n                    \"Darstellung: logarithmische Skalierung\");\r\n\r\n            JLabel sunEarth = new JLabel(\r\n                    String.format(\r\n                            Locale.GERMANY,\r\n                            \"Sonne \/ Erde: %.1f : 1\",\r\n                            SUN_DIAMETER_KM \/\r\n                                    EARTH_DIAMETER_KM));\r\n\r\n            JLabel betelgeuseSun = new JLabel(\r\n                    String.format(\r\n                            Locale.GERMANY,\r\n                            \"Beteigeuze \/ Sonne: %.0f : 1\",\r\n                            BETELGEUSE_DIAMETER_KM \/\r\n                                    SUN_DIAMETER_KM));\r\n\r\n            JLabel betelgeuseEarth = new JLabel(\r\n                    String.format(\r\n                            Locale.GERMANY,\r\n                            \"Beteigeuze \/ Erde: %.0f : 1\",\r\n                            BETELGEUSE_DIAMETER_KM \/\r\n                                    EARTH_DIAMETER_KM));\r\n\r\n            scaleLabel.setFont(\r\n                    new Font(Font.SANS_SERIF,\r\n                            Font.BOLD, 15));\r\n\r\n            add(scaleLabel);\r\n            add(sunEarth);\r\n            add(betelgeuseSun);\r\n            add(betelgeuseEarth);\r\n        }\r\n    }\r\n\r\n    \/**\r\n     * Formatiert Kilometerwerte.\r\n     *\/\r\n    private String formatKilometers(double value) {\r\n\r\n        if (value &gt;= 1_000_000_000) {\r\n\r\n            return String.format(\r\n                    Locale.GERMANY,\r\n                    \"%.2f Milliarden km\",\r\n                    value \/ 1_000_000_000.0);\r\n\r\n        } else if (value &gt;= 1_000_000) {\r\n\r\n            return String.format(\r\n                    Locale.GERMANY,\r\n                    \"%.2f Millionen km\",\r\n                    value \/ 1_000_000.0);\r\n\r\n        } else {\r\n\r\n            return numberFormat.format(value)\r\n                    + \" km\";\r\n        }\r\n    }\r\n\r\n    \/**\r\n     * Programmstart.\r\n     *\/\r\n    public static void main(String[] args) {\r\n\r\n        SwingUtilities.invokeLater(() -&gt; {\r\n\r\n            SpaceSizeComparison application =\r\n                    new SpaceSizeComparison();\r\n\r\n            application.setVisible(true);\r\n        });\r\n    }\r\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Die Darstellung verwendet eine logarithmische Skala, damit Sonne, Erde und Beteigeuze gemeinsam sichtbar dargestellt werden k\u00f6nnen. Orion ist eines der auff\u00e4lligsten und am leichtesten erkennbaren Sternbilder des Nachthimmels. Es ist jetz auf der Nordhalbkugel besonders gut zu beobachten. Beteigeuze befindet sich an der Schulter des Orion. Es handelt sich um einen roten \u00dcberriesen und einen &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=23340\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eGr\u00f6\u00dfenvergleich Sonne, Erde und Beteigeuze (logarithmische Skala)\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[5,3897,79,2713],"tags":[6340,2178,1363],"class_list":["post-23340","post","type-post","status-publish","format-standard","hentry","category-java","category-java-programmierung","category-programmierung","category-statistik","tag-groessenvergleich","tag-java","tag-swing"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/23340","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=23340"}],"version-history":[{"count":3,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/23340\/revisions"}],"predecessor-version":[{"id":23344,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/23340\/revisions\/23344"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=23340"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=23340"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=23340"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}