in h3_algos.c [509:525]
Direction directionForNeighbor(H3Index origin, H3Index destination) {
bool isPent = H3_EXPORT(isPentagon)(origin);
// Checks each neighbor, in order, to determine which direction the
// destination neighbor is located. Skips CENTER_DIGIT since that
// would be the origin; skips deleted K direction for pentagons.
for (Direction direction = isPent ? J_AXES_DIGIT : K_AXES_DIGIT;
direction < NUM_DIGITS; direction++) {
H3Index neighbor;
int rotations = 0;
H3Error neighborError =
h3NeighborRotations(origin, direction, &rotations, &neighbor);
if (!neighborError && neighbor == destination) {
return direction;
}
}
return INVALID_DIGIT;
}