コード例 #1
0
ファイル: vector.cpp プロジェクト: HaseProgram/University
double Vector::length()
{
	if (this->v.count() != 4)
	{
		throw VectorSizeError();
	}
	IArray<double> viterator(this->v);
	double x = viterator[0].value();
	double y = viterator[1].value();
	double z = viterator[2].value();

	return sqrt(x*x + y*y + z*z);
}
コード例 #2
0
ファイル: vector.cpp プロジェクト: HaseProgram/University
Vector Vector::normalize()
{
	if ((*this).v.count() != 4)
		throw VectorSizeError();

	double norm = 1 / (*this).length();

	IArray<double> viterator(this->v);
	for (int i = 0; i < 3; i++)
	{
		double nv = viterator.value() * norm;
		viterator.update(nv);
		viterator.next();
	}
	return (*this);
}
コード例 #3
0
	void MemVertexstream::calcMinmax(math::Vector3f& minxyz,math::Vector3f& maxxyz)
	{
		Vertexiterator viterator(*this);

		minxyz=maxxyz=(viterator.position());

		for (ion_uint32 v=0;v<capacity();++v) {
			const math::Vector3f &vec=viterator.position();

			if (minxyz.x()>vec.x()) minxyz.x()=vec.x();
			if (minxyz.y()>vec.y()) minxyz.y()=vec.y();
			if (minxyz.z()>vec.z()) minxyz.z()=vec.z();

			if (maxxyz.x()<vec.x()) maxxyz.x()=vec.x();
			if (maxxyz.x()<vec.y()) maxxyz.y()=vec.y();
			if (maxxyz.x()<vec.z()) maxxyz.z()=vec.z();
		
			++viterator;
		}
	}
コード例 #4
0
ファイル: vector.cpp プロジェクト: HaseProgram/University
double Vector::getX() const
{
	IArrayConst<double> viterator(this->v);
	viterator.getByCount(0);
	return viterator.value();
}
コード例 #5
0
ファイル: vector.cpp プロジェクト: HaseProgram/University
void Vector::setL(double L)
{
	IArray<double> viterator(this->v);
	viterator.getByCount(3);
	viterator.update(L);
}
コード例 #6
0
ファイル: vector.cpp プロジェクト: HaseProgram/University
void Vector::setZ(double Z)
{
	IArray<double> viterator(this->v);
	viterator.getByCount(2);
	viterator.update(Z);
}
コード例 #7
0
ファイル: vector.cpp プロジェクト: HaseProgram/University
void Vector::setY(double Y)
{
	IArray<double> viterator(this->v);
	viterator.getByCount(1);
	viterator.update(Y);
}
コード例 #8
0
ファイル: vector.cpp プロジェクト: HaseProgram/University
void Vector::setX(double X)
{
	IArray<double> viterator(this->v);
	viterator.getByCount(0);
	viterator.update(X);
}
コード例 #9
0
ファイル: vector.cpp プロジェクト: HaseProgram/University
double Vector::operator[](int index)
{
	IArrayConst<double> viterator(this->v);
	viterator.getByCount(index);
	return viterator.value();
}