Also, alle deine 6-Ecke befinden sich in einer Ebene. Jeder Punkt dieser Ebene ist definiert durch:
P = O + x * X + y * Y
Die Vektoren X und Y (Richtungsvektoren) sind nicht parallel zueinander und spannen die Ebene auf. Der Vektor O (als Ortsvektor interpretiert) definiert einen Punkt in der Ebene. (x, y) sind dann die Koordinaten des Punktes in dieser Ebenendarstellung.
Normalerweise wird man für deinen Fall für O den Nullpunkt und für X und Y die X- respektive Y-Achse nehmen. In diesem Fall bekommst du deine Ebenenkoordinaten einfach dadurch, dass du die z-Koordinate des Schnittpunktes ignorierst. Für den allgemeinen Fall setzt du einfach den Punkt in der Gleichung oben ein und löst nach x und y auf.
Bisher waren das alles noch die Zeichenkoordinaten für deine Vertizes. Kniffliger wird es dann, aus diesen Ebenen-Koordinaten wieder an die richtigen logischen Koordinaten des 6-Eck zu kommen, das um den gefundenen Punkt liegt. Dazu muss man aber wissen, wie die logische Nummerierung der Felder ist.
Vermutlich bist du dicht an der Karo-Struktur, also Zeilenweise und Spalten im "Zickzack" untereinander.
Als erstes sucht man sich die Zeile n raus, in der der Punkt liegt. Der Abstand der oberen und unteren Ecke deines 6-Eck definiert die Höhe jeder Zeile. Da es Überlappungen zwischen diesen Zeilen gibt -- die 6-Ecke sind ja verzahnt -- muss das nicht unbedingt eindeutig sein. Es reicht, wenn man die erste Zeile nimmt, die man findet.
Dann berechnet man m, indem von der x-Koordinate in der Ebene der Zeilenoffset(n) abgezogen und dann durch die Breite (Abstand zweier gegenüberliegender Seiten) eines 6-Eck geteilt wird.
Wenn der Punkt im Kernbereich der Zeile liegt (ohne Dreieck oben und unten), ist man schon fertig. (Dann war auch die Zeile eindeutig zu bestimmen) und die logische Koordinate ist (m, n).
Sonst war das der Überlappungsbereich oben oder unten. Ich beschreibe das jetzt nur für den Bereich oben, unten gilt das aber analog (Blos der Zeilenindex des Nachbarn ist n + 1).
Liegt der Ebenenpunkt links von der Mitte des 6-Eck (m, n), kommt als zweites 6-Eck nur (m, n - 1) in Frage. Der Punkt liegt in dem 6-Eck, dessen Mittelpunkt dichter liegt.
Liegt der Ebenenpunkt rechts von der Mitte des 6-Eck (m, n), kommt als zweites 6-Ecke nur (m + 1, n - 1) in Frage.
Ich gebe zu, das liest sich recht kompliziert, wenn man das als Text liest, aber mit ein paar Zeichnungen wird das sofort klarer.
Gruss,
Rainer