예제 #1
0
        private void refreshCounterWeightAngle()
        {
            double  angleRad;
            double  dotProduct;
            Triplet ARcrossSouthPole;
            Byte    OctantARcrossSouthPole;

            dotProduct             = Triplet.dotProduct(this.aRA.AcelerationUnit, Status.SouthPole);
            ARcrossSouthPole       = Triplet.crossProduct(this.aRA.AcelerationUnit, Status.SouthPole);
            OctantARcrossSouthPole = Triplet.Octant(ARcrossSouthPole);
            //Console.WriteLine("ARcrossSouthPole=" + ARcrossSouthPole.ToString());
            //Console.WriteLine("OctantARcrossSouthPole=" + OctantARcrossSouthPole.ToString());
            angleRad = Math.Acos(dotProduct);
            if (OctantARcrossSouthPole > 0)
            {
                angleRad *= -1.0;
            }
            angleRad += Math.PI;
            this.counterWeightAngle = ((angleRad * 180.0) / Math.PI);
        }
예제 #2
0
        private void refreshDeclinationAngle()
        {
            double  angleRad;
            double  dotProduct;
            Triplet DECcrossSouthPole;
            Byte    OctantDECcrossSouthPole;
            Triplet SouthPoleB;

            SouthPoleB              = Triplet.normalized(Triplet.matrixProduct(Status.RotationMatrix, this.aRA.AcelerationUnit));
            dotProduct              = Triplet.dotProduct(this.aDEC.AcelerationUnit, SouthPoleB);
            DECcrossSouthPole       = Triplet.crossProduct(this.aDEC.AcelerationUnit, SouthPoleB);
            OctantDECcrossSouthPole = Triplet.Octant(DECcrossSouthPole);
            Console.WriteLine("SouthPoleB=" + SouthPoleB.ToString());
            Console.WriteLine("OctantDECcrossSouthPole=" + OctantDECcrossSouthPole.ToString());
            angleRad = Math.Acos(dotProduct);
            if (OctantDECcrossSouthPole < 6)
            {
                angleRad *= -1.0;
            }
            this.declinationAngle = ((angleRad * 180.0) / Math.PI);
            Console.WriteLine("DEC_RA[º]=" + this.declinationAngle);
        }