Sechsecke, erkennen von bestimmten Werten

T

Turakar

Gast
Hallo,

im Voraus, dieser Thread ist wahrscheinlich nur für Mathematiker etwas gutes... :rtfm:

Ich habe ein paar Fragen zu Hexagons. Ich glaube das die Grafik mein Problem verdeutlichen kann.

Gruß Turakar

PS: mit linker oberer Ecke ist die linke obere Ecke eines Rechtecks gemeint, in dem das Hexagon liegt.

PSS: Kein Problem falls ihr keine Idee habt wie das gehen soll. Wär aber cool. :toll:

[EDIT]Muss mich korrigieren, die länge a des Quadrats in dem das Hexagon hineinpasst ist gerfagt.[/EDIT]
 

Anhänge

  • Hexapi mit Schrift.jpg
    Hexapi mit Schrift.jpg
    137,1 KB · Aufrufe: 71
Zuletzt bearbeitet von einem Moderator:
P

pappawinni

Gast
also mal angenommen du wolltest diese Sechsecke zeichnen lassen und brauchtest immer
die Positon der linken obere Ecke eines Quadrats, um das Sechseck da hinein zu zeichnen.
Da müsstest du in der horziontalen Richtung immer um die Breite sw des Sechsecks verschieben.
Bei jeder zweiten Zeile müsste am Anfang der Zeile zuerst einen Sprung von sw/2 erfolgen.
In vertikaler Richtung überlappen die umgebenden Quadrate die der vorangegangene Zeile.
Wir können also nicht einfach einen vertikalen Sprung von sh machen.
Es gilt sh=sw.
Wenn ich mich nicht irre, wäre die Kantenlänge a = sw / Wurzel(3)
Damit der vertikale Vorschub dV dann = sw/2+a/2 oder
dV = sw/2 * (1 + 1/Wurzel(3))
Für das Quadrat mit dem Sechseck A musst du von links oben
nach rechts 4 * sw und 2*dV nach unten
Für das Quadrat mit dem Sechseck B musst du von links oben
nach rechts 4.5 * sw und 3*dV nach unten
 
Zuletzt bearbeitet von einem Moderator:

Landei

Top Contributor
Die Berechnung von Hexagons ist ganz einfach, wenn man sie in 6 gleichseitige Dreiecke zerlegt, und dann noch weiß, dass die Höhe eines gleichseitigen Dreiecks s*sqrt(3)/2 ist.
 
T

Turakar

Gast
Wenn ich mich nicht irre, wäre die Kantenlänge a = sw / Wurzel(3)

Die Seitenlänge beträgt laut Wikipedia:
Code:
r = a / 2 * Wurzel(3)

Ändern sollte sich ansonsten nichts, oder?

[EDIT]Hat sich erledigt, hab da was verwechselt[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:
T

Turakar

Gast
Das Rätsel ist gelöst! :toll: :toll: :toll: :toll: :toll: :toll: :toll:

Größtenteils haben mir die Formeln von pappawinni geholfen, eine sehr gute Leistung!

Eine Sache musste ich ändern, die Formel zum berechnen des Y Abstands hat nicht geklappt.
Hier meine Version:
Code:
sw / 2 + a * 2 + sw / 10 - 2

Trotzdem an alle Danke! :applaus: :applaus: :applaus:

Java:
		int[] x = new int[6];
		int[] y = new int[6];
		
		for (int i = 0; i < 6; i++) 
		{
			x[i] = (int)Math.round(xxx / 2 + 50 + xxx*Math.sin(i*Math.PI/3.0));
		    y[i] = (int)Math.round(xxx / 2 + 50 + xxx*Math.cos(i*Math.PI/3.0));
		}
		
		hexa = new Polygon(x, y, 6);
 
Zuletzt bearbeitet von einem Moderator:
P

pappawinni

Gast
Oh..
Also wenn bei dem Sechseck die Kanten alle gleich lang sein sollen, dann wäre für sw = sh
die Kantenlänge a = sw * (wurzel(7)-1)/3
( für sw ungleich sh wäre die Kantenlänge a = 1/3 * ( Wurzel (4*sh^2+3*sw^2) - sh ) )
Dann aber dürften die Ecken des Sechsecks nicht über gleiche Mittelpunktswinkel aufgebaut werden.
für gleiche Mittelpunktswinkel entstehen unterschiedliche Kantenlängen.
Die vertikalen Kanten hätten eine Länge von sw / Wurzel(3), die ich dummerweise mit a bezeichnet habe.
In der Skizze ist es aber wohl die schräge Kante, die mit a bezeichnet ist.

Das
Java:
sw / 2 + a * 2 + sw / 10 - 2
erscheint mir jedenfalls mehr als merkwürdig.

Kannst du mal dein ganzes Programm posten ?
 
P

pappawinni

Gast
Also ich denke, dass hier
Java:
        for (int i = 0; i < 6; i++) 
        {
            x[i] = (int)Math.round(xxx / 2 + 50 + xxx*Math.sin(i*Math.PI/3.0));
            y[i] = (int)Math.round(xxx / 2 + 50 + xxx*Math.cos(i*Math.PI/3.0));
        }

vielleicht stehen sollte:

Java:
            x[i] = (int)Math.round( sw/ 2 +  sw / Math.sqrt(3) * Math.sin(i*Math.PI/3.0));
            y[i] = (int)Math.round( sw/ 2 +  sw /2             * Math.cos(i*Math.PI/3.0));

Die vertikale Kantenlänge des Sechsecks wäre damit = sw/2
Die in der Skizze mit a gekennzeichnete Kante a = sw/4 * wurzel(5)
Der erforderlich vertikale Vorschub dV = 3/4 * sw
 
Zuletzt bearbeitet von einem Moderator:
P

pappawinni

Gast
Hier dann auch noch ein Programm, das Sechsecke zeichnet.

Java:
import java.awt.Color;
import java.awt.Polygon;
import java.awt.Graphics;
import javax.swing.JFrame;
 
public class Hexapi extends JFrame {
	
    int Jframe_height;
    int Jframe_width;

    public Hexapi(String newTitel) {
        super.setTitle(newTitel);
        Jframe_height = 600;
        Jframe_width = 600;			        
        setSize(Jframe_width, Jframe_height);
        setForeground(new Color(64,128,192));
        setBackground(Color.lightGray);
    }
    
    public static void main(String str[]) {
        Hexapi fenster = new Hexapi("Hexapi");
        fenster.setVisible(true);                
    }
    public void paint(Graphics g){
    	   

        Jframe_height = this.getSize().height;
        Jframe_width = this.getSize().width;
    	g.setColor(getForeground());
        int randoben = 30;
        int randlinks = 8;
        int sw=36; //Breite und Höhe des Sechsecks
        int vy= (int) (3.0/4.0 * sw);
        int nx=(Jframe_width-sw/2-randlinks)/sw;
        int ny=(int) ((Jframe_height-sw-randoben)/(3.0/4.0*sw)+1);
        for (int j=0;j<ny;j++){
            for (int i=0;i<nx;i++){
                int dx = j%2 * sw/2;
            	g.drawPolygon(makeHexagon(randlinks + dx + i*sw,randoben + j * vy, sw));        	
            }        	
        }

    }
    public Polygon makeHexagon(int posx, int posy, int sq){
        int[] x = new int[6];
        int[] y = new int[6];
        
        for (int i = 0; i < 6; i++) 
        {
            x[i] = (int) ( posx + sq/ 2 +  sq / Math.sqrt(3) * Math.sin(i*Math.PI/3.0));
            y[i] = (int) ( posy + sq/ 2 +  sq /2             * Math.cos(i*Math.PI/3.0));
        }
        return new Polygon(x,y,6);
    }
    
              
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Bildschirm auslesen/ Text erkennen Allgemeine Java-Themen 5
I Best Practice Kreise erkennen Allgemeine Java-Themen 1
N Erkennen eines Programs Allgemeine Java-Themen 2
P Strukturänderungen/abnormalien in Logfiles automatisch erkennen Allgemeine Java-Themen 5
A 2D-Grafik Einfachster Ansatz, um sich wiederholende Figur in einem 2D-Image zu erkennen Allgemeine Java-Themen 1
T Java Windows sounds erkennen Allgemeine Java-Themen 1
M Backslash erkennen Allgemeine Java-Themen 4
D Flasche Eingabe erkennen Allgemeine Java-Themen 4
JavaNewbie2.0 Start eines Anderen Programm erkennen Allgemeine Java-Themen 6
I Datei zugriffe erkennen Allgemeine Java-Themen 25
A Großbuchstaben erkennen (Prozente) Allgemeine Java-Themen 2
U Erkennen, ob PC benutzt wird Allgemeine Java-Themen 4
B Erkennen, wann Prozess beendet ist, dann Thread beenden. Allgemeine Java-Themen 6
S Generellen MausKlick am PC erkennen Allgemeine Java-Themen 1
J Erkennen, ob Programm in JAR (neues Problem) Allgemeine Java-Themen 7
B Erste Schritte Plugin erkennen und Class Dateien anzeigen lassen Allgemeine Java-Themen 3
M Erkennen, in welcher Methode sich die VM befindet Allgemeine Java-Themen 6
Hoppelmann "Variable" in String erkennen Allgemeine Java-Themen 2
D IP / Domain in einem String erkennen Allgemeine Java-Themen 2
J jexcelapi - Erkennen von Sheets Allgemeine Java-Themen 3
B Mausbewegung im Thread erkennen (hoch/runter) Allgemeine Java-Themen 6
K Quadrat in einem Bild erkennen Allgemeine Java-Themen 33
D Regex Raute erkennen Allgemeine Java-Themen 2
F Groovy Erkennen geometrischer Formen in einem Kantenbild Allgemeine Java-Themen 4
K Wiederholungen in Datensatz erkennen?! Allgemeine Java-Themen 6
S Wörter ohne Leerzeichen erkennen Allgemeine Java-Themen 5
M Festplatte am Namen erkennen Allgemeine Java-Themen 2
A Erkennen welches Fenster bei windowDeactivated aktiviert wird? Allgemeine Java-Themen 2
C Reguläre Ausrücke Punkte im Satz richtig erkennen Allgemeine Java-Themen 6
J Exe Datei in Java erkennen??? Allgemeine Java-Themen 4
P Netzlaufwerke erkennen Allgemeine Java-Themen 3
H File Attribut bzw Link erkennen Allgemeine Java-Themen 5
DamienX Debug Modus zur Laufzeit erkennen Allgemeine Java-Themen 3
data89 Barcodes in Bild erkennen Allgemeine Java-Themen 17
G Wechseldatenträger erkennen Allgemeine Java-Themen 5
T Shapes vergleichen? Zeichen erkennen? Allgemeine Java-Themen 7
Daniel_L RTF - Format aus Zwischenablage erkennen und "einlesen"? Allgemeine Java-Themen 5
B Zeilenumbruch erkennen Allgemeine Java-Themen 22
H Dateiende erkennen, wie? Allgemeine Java-Themen 7
S Dateiart erkennen Allgemeine Java-Themen 13
X Position eines Gegenstandes über Webcam erkennen Allgemeine Java-Themen 11
S unter UNIX - (symbolic) links erkennen? Allgemeine Java-Themen 12
D Datum korrekt erkennen Allgemeine Java-Themen 27
G Stringformen erkennen Allgemeine Java-Themen 8
N Endlosschleifen automatisiert erkennen (Code oder Laufzeit)? Allgemeine Java-Themen 6
G Größte zusammenhängende Fläche erkennen Allgemeine Java-Themen 3
K ersten programmstart erkennen Allgemeine Java-Themen 7
S JTree selektion erkennen und drauf reagieren Allgemeine Java-Themen 2
E Regexfrage (' erkennen) Allgemeine Java-Themen 4
C WindowStyle von Windows erkennen. Allgemeine Java-Themen 3
J Erkennen aus welchem Pfad das Jar gestartet wurde Allgemeine Java-Themen 6
B Erkennen welche Objekte den Heap verbrauchen? Allgemeine Java-Themen 2
MQue JButton erkennen Allgemeine Java-Themen 2
V Erkennen ob das Programm aus Jar File geladen wurde Allgemeine Java-Themen 9
T Einfachen Ton erkennen Allgemeine Java-Themen 7
R Hinzufügen von Dateien in einem Verzeichniss Auto. erkennen! Allgemeine Java-Themen 15
L objekte erkennen? Allgemeine Java-Themen 9
M Encoding automatisch erkennen Allgemeine Java-Themen 4
J Programmteile erkennen? Allgemeine Java-Themen 4
H Exception erkennen Allgemeine Java-Themen 10
S Farbe erkennen! Allgemeine Java-Themen 3
H existierende dateien erkennen Allgemeine Java-Themen 9
Natorion Erkennen ob das Programm mittels Jar-Datei oder class . Allgemeine Java-Themen 9
A Endlosschleifen automatisch erkennen Allgemeine Java-Themen 6
G String als Zahl erkennen Allgemeine Java-Themen 19
F Laden von bestimmten Daten aus TAR Archiv Allgemeine Java-Themen 23
M Datensatz auf ein bestimmten Parameter einzugrenzen Allgemeine Java-Themen 11
O Jar lässt sich auf bestimmten Pc nicht starten Allgemeine Java-Themen 18
kodela bestimmten Dateityp immer mit jar-Datei öffnen Allgemeine Java-Themen 17
I DOM-Parser - Element im Element an bestimmten Stellen auslesen Allgemeine Java-Themen 1
C Movement auf bestimmten Weg bestimmen Allgemeine Java-Themen 11
S Apache POI Filtern nach bestimmten Kriterium Allgemeine Java-Themen 1
C Config nach bestimmten Wertdurchsuchen. Allgemeine Java-Themen 2
V Bilder bei bestimmten Zeiten wechseln, bitte um Hilfe Allgemeine Java-Themen 5
N Das Ende von bestimmten zeilen in text datei ändern und speichern Allgemeine Java-Themen 3
FrittenFritze Swing Apache Batik - Zoom an einer bestimmten Stelle Allgemeine Java-Themen 4
K Bestimmten Bereich eines Strings lesen Allgemeine Java-Themen 6
L Erste Schritte Java Date Format Pattern bestimmten Allgemeine Java-Themen 2
B Sprachdatei anhand von bestimmten Kriterien zerschneiden Allgemeine Java-Themen 0
L Von ArrayList abgeleitete Klasse nur mit bestimmten Objekten füllen Allgemeine Java-Themen 1
A Fehlerhafte Nst Berechnung einer bestimmten Fkt. (Bisektion) Allgemeine Java-Themen 10
KilledByCheese String an bestimmten Stellen teilen Allgemeine Java-Themen 2
M Ein Programm das nur von einem bestimmten Programm geöffnet werden kann Allgemeine Java-Themen 7
V Klassenname von allen Klassen mit einer bestimmten Eigenschaft bekommen Allgemeine Java-Themen 2
C Generic-Funktion nur bei bestimmten Typen erlauben Allgemeine Java-Themen 6
H Bestimmte Aufgaben zur bestimmter Zeit/ in bestimmten Intervallen Allgemeine Java-Themen 3
E Tool um Methodenaufrufe aus bestimmten Pkg zu finden Allgemeine Java-Themen 2
S Methoden Stunden seit einem bestimmten Zeitpunkt Allgemeine Java-Themen 3
H Bestimmten Wert aus String parsen Allgemeine Java-Themen 7
J Ist eine Instanz von einem bestimmten Object Typ? Allgemeine Java-Themen 6
N Zahl mit bestimmter Länge und nur bestimmten Zahlen generieren lassen Allgemeine Java-Themen 7
A Excel nach bestimmten Inhalt durchsuchen Allgemeine Java-Themen 8
F Dynamisch ein Objekt einer bestimmten Subklasse erstellen Allgemeine Java-Themen 7
c_sidi90 Werte an bestimmten Position aus PDF in DB sichern Allgemeine Java-Themen 2
L Java TimeZone für bestimmten offset -> Bessere Möglichkeit? Allgemeine Java-Themen 2
L Sicherstellen das 2x die gleichen Daten unter bestimmten Keys enthalten sind. Allgemeine Java-Themen 6
H Bestimmten String mit Pattern und Matcher herauslesen => kein erfolg Allgemeine Java-Themen 9
T Javaprogramm unter Linux auf bestimmten Kern starten/laufen lassen ? Allgemeine Java-Themen 22
S JavaCC : SKIP Token nur für bestimmten Bereich ?? Allgemeine Java-Themen 2
B PDF lesen funktioniert bei bestimmten Dateien nicht mit pdfview Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben