public getTransform ( Fractrace.Geometry.Vec3 p1 ) : Fractrace.Geometry.Vec3 | ||
p1 | Fractrace.Geometry.Vec3 | |
return | Fractrace.Geometry.Vec3 |
/// <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); }