示例#1
0
bool SFVec3f::equals(Field *field) 
{
	SFVec3f *vector = (SFVec3f *)field;
	if (getX() == vector->getX() && getY() == vector->getY() && getZ() == vector->getZ())
		return true;
	else
		return false;
}
示例#2
0
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);
	}
}
示例#3
0
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;
	}
}
示例#4
0
void ViewpointNode::translate(SFVec3f vec) 
{
	float frame[3][3];
	float vector[3];
	getFrame(frame);
	vec.getValue(vector);
	addPosition(vector, frame);
}
示例#5
0
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;
		}
	}
}
示例#6
0
void SFVec3f::sub(SFVec3f value) 
{
	sub(value.getValue());
}
示例#7
0
void SFVec3f::add(SFVec3f value) 
{
	add(value.getValue());
}
示例#8
0
void MFVec3f::set1Value(int index, float x, float y, float z) 
{
	SFVec3f *vector = (SFVec3f *)getObject(index);
	if (vector)
		vector->setValue(x, y, z);
}
示例#9
0
void MFVec3f::set1Value(int index, float value[]) 
{
	SFVec3f *vector = (SFVec3f *)getObject(index);
	if (vector)
		vector->setValue(value);
}
示例#10
0
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]);
}