bool SFVec3f::equals(Field *field) { SFVec3f *vector = (SFVec3f *)field; if (getX() == vector->getX() && getY() == vector->getY() && getZ() == vector->getZ()) return true; else return false; }
void ViewpointNode::addPosition(float localTranslation[3], float frame[3][3]) { SFVec3f *position = getPositionField(); float translation[3]; for (int axis=0; axis<3; axis++) { SFVec3f vector(frame[axis]); vector.scale(localTranslation[axis]); vector.getValue(translation); position->add(translation); } }
void Test_printFieldsOfBoxNode(CX3DParser& parser, char *vrmlFile) { // --------------------------------------------- // --------------------------------------------- if (!parser.parse(vrmlFile)) { fprintf(stderr, "%s parse failed\n", vrmlFile); return; } CX3DParser::printLog("**** Fields of BoxNode ****\n"); // --------------------------------------------- // --------------------------------------------- MFNode *pShapeNodes = parser.searchNodesFromAllChildrenOfRoot("Shape"); if (pShapeNodes) { for (int i=0; i<pShapeNodes->count(); i++) { CX3DShapeNode *pShape = (CX3DShapeNode *)(pShapeNodes->getNode(i)); if (pShape) { // -------------------------------------------------------- // // -------------------------------------------------------- SFNode *geometry = pShape->getGeometry(); CX3DNode *pNode = geometry->getNode(); // --------------------------------------------- // --------------------------------------------- if (pNode && pNode->getNodeType() == BOX_NODE) { CX3DBoxNode *pBoxNode = (CX3DBoxNode *)pNode; // --------------------------------------------- // --------------------------------------------- SFVec3f *sz = pBoxNode->getSize(); printf("size : (%f, %f, %f)\n", sz->x(), sz->y(), sz->z()); // solid SFBool *solid = pBoxNode->getSolid(); printf("solid : %s\n", solid->getValue() ? "TRUE" : "FALSE"); } } } delete pShapeNodes; pShapeNodes = NULL; } }
void ViewpointNode::translate(SFVec3f vec) { float frame[3][3]; float vector[3]; getFrame(frame); vec.getValue(vector); addPosition(vector, frame); }
void MFVec3f::setValue(CVRMLFieldData *data) { if (!data) return; if (data->getFieldType() != FLOAT_ARRAY_DATA) return; CVRMLFloatArrayData *a = (CVRMLFloatArrayData *)data; float x, y, z; x = 0.0f; y = 0.0f; z = 0.0f; m_values.clear(); for (int i=0; i<a->count(); i++) { int j = (i % 3); switch (j) { case 0: x = a->getValue(i); break; case 1: y = a->getValue(i); break; case 2: z = a->getValue(i); SFVec3f vec; vec.setValue(x, y, z); m_values.push_back(vec); x = 0.0f; y = 0.0f; z = 0.0f; break; } } }
void SFVec3f::sub(SFVec3f value) { sub(value.getValue()); }
void SFVec3f::add(SFVec3f value) { add(value.getValue()); }
void MFVec3f::set1Value(int index, float x, float y, float z) { SFVec3f *vector = (SFVec3f *)getObject(index); if (vector) vector->setValue(x, y, z); }
void MFVec3f::set1Value(int index, float value[]) { SFVec3f *vector = (SFVec3f *)getObject(index); if (vector) vector->setValue(value); }
static void SetExtents( SFVec3f &maxExtents, SFVec3f &minExtents, float point[3]) { if (maxExtents.getX() < point[0]) maxExtents.setX(point[0]); if (maxExtents.getY() < point[1]) maxExtents.setY(point[1]); if (maxExtents.getZ() < point[2]) maxExtents.setZ(point[2]); if (minExtents.getX() > point[0]) minExtents.setX(point[0]); if (minExtents.getY() > point[1]) minExtents.setY(point[1]); if (minExtents.getZ() > point[2]) minExtents.setZ(point[2]); }