diff --git a/shared/src/OctalCode.cpp b/shared/src/OctalCode.cpp index 9a53e7cfb5..9535402f77 100644 --- a/shared/src/OctalCode.cpp +++ b/shared/src/OctalCode.cpp @@ -102,3 +102,17 @@ unsigned char * childOctalCode(unsigned char * parentOctalCode, char childNumber return newCode; } + +float * firstVertexForCode(unsigned char * octalCode) { + float * firstVertex = new float[3]; + memset(firstVertex, 0, 3 * sizeof(float)); + + for (int i = 0; i < numberOfThreeBitSectionsInCode(octalCode); i++) { + int8_t sectionIndex = sectionValue(octalCode + 1 + (3 * i / 8), (3 * i) % 8); + for (int j = 0; j < 3; j++) { + firstVertex[j] += 0.5 * (int)oneAtBit(sectionIndex, 7 -j); + } + } + + return firstVertex; +} diff --git a/shared/src/OctalCode.h b/shared/src/OctalCode.h index b66dcc7199..a292116a75 100644 --- a/shared/src/OctalCode.h +++ b/shared/src/OctalCode.h @@ -16,5 +16,6 @@ int bytesRequiredForCodeLength(unsigned char threeBitCodes); bool isDirectParentOfChild(unsigned char *parentOctalCode, unsigned char * childOctalCode); char branchIndexWithDescendant(unsigned char * ancestorOctalCode, unsigned char * descendantOctalCode); unsigned char * childOctalCode(unsigned char * parentOctalCode, char childNumber); +float * firstVertexForCode(unsigned char * octalCode); #endif /* defined(__hifi__OctalCode__) */