From adb45c825b9bbe527481749931bbb9d2fa76096b Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 20 Mar 2013 13:24:18 -0700 Subject: [PATCH] add method to return the start vertex for an octal code --- shared/src/OctalCode.cpp | 14 ++++++++++++++ shared/src/OctalCode.h | 1 + 2 files changed, 15 insertions(+) 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__) */