/// <summary>
/// Benutzung der Vektorrotation.
/// </summary>
/// <param name="ar"></param>
/// <param name="ai"></param>
/// <param name="aj"></param>
/// <param name="ak"></param>
/// <param name="br"></param>
/// <param name="bi"></param>
/// <param name="bj"></param>
/// <param name="bk"></param>
/// <param name="zkl"></param>
/// <param name="invers"></param>
/// <returns></returns>
long H7(double ar, double ai, double aj, double ak, double br, double bi, double bj, double bk, long zkl, bool invers)
{
double xx, yy, zz;
long tw;
int n;
ai = 0; aj = 0; ak = 0;
double x = 1, y = 0, z = 0;
xx = x * x; yy = y * y; zz = z * z;
tw = 0;
double r = Math.Sqrt(xx + yy + zz);
VecRotation vecRot = new VecRotation();
x = 1; // Um den Startwinkel eindeutig zu definieren.
for (n = 1; n < zkl; n++)
{
double theta = Math.Atan2(Math.Sqrt(xx + yy), z);
double phi = Math.Atan2(y, x);
vecRot.X = y;
vecRot.Y = x;
vecRot.Z = z;
vecRot.Angle = theta;
// vecRot.angle = 0.03;
vecRot.X = x;
vecRot.Y = z;
vecRot.Z = y;
vecRot.Angle = phi;
/*
vecRot.x = 0.4;
vecRot.y = 0.2;
vecRot.z = 0.8;
vecRot.angle = phi;
*/
y += bj;
x += bi;
z += br;
Vec3 pos = new Vec3(x, y, z);
Vec3 newPos = vecRot.getTransform(pos);
x = newPos.X;
y = newPos.Y;
z = newPos.Z;
xx = x * x; yy = y * y; zz = z * z;// aak = ak * ak;
r = Math.Sqrt(xx + yy + zz);
x *= r;
y *= r;
z *= r;
if (r > gr)
{
tw = n; break;
}
}
if (invers)
{
if (tw == 0)
tw = 1;
else
tw = 0;
}
return (tw);
}