예제 #1
0
파일: Program.cs 프로젝트: GregBlow/orrery
 public MainForm()
 {
     InitializeComponent();
     p = new Perspective(this);
     testSphere = new Sphere (new Point3(100, 100, 0), 100, Color.Yellow);
     testSphere2 = new Sphere (new Point3 (250, 250, 0), 50, Color.Blue);
     testSphere3 = new Sphere (new Point3 (250, 250, 0), 10, Color.Wheat);
 }
예제 #2
0
        // GET: Perspectives/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Perspective perspective = db.Perspectives.Find(id);

            if (perspective == null)
            {
                return(HttpNotFound());
            }
            ViewBag.IdFramework = new SelectList(db.Frameworks, "IdFramework", "Name", perspective.IdFramework);
            return(View(perspective));
        }
        // <summary>
        // Creates new instance of <see cref="SemanticResolver" />.
        // </summary>
        internal static SemanticResolver Create(
            Perspective perspective,
            ParserOptions parserOptions,
            IEnumerable <DbParameterReferenceExpression> parameters,
            IEnumerable <DbVariableReferenceExpression> variables)
        {
            DebugCheck.NotNull(perspective);
            DebugCheck.NotNull(parserOptions);

            return(new SemanticResolver(
                       parserOptions,
                       ProcessParameters(parameters, parserOptions),
                       ProcessVariables(variables, parserOptions),
                       new TypeResolver(perspective, parserOptions)));
        }
        protected override void SetInPerspective(Perspective perspective, bool included)
        {
            // Including/excluding a table from a perspective, is equivalent to including/excluding all child
            // objects. The PerspectiveTable will be created automatically if needed.
            Table.Measures.InPerspective(perspective, included);
            Table.Hierarchies.InPerspective(perspective, included);
            Table.Columns.InPerspective(perspective, included);

            var pts = perspective.MetadataObject.PerspectiveTables;

            if (!included && pts.Contains(Table.Name))
            {
                pts.Remove(Table.Name);
            }
        }
        public void StartPerspective_OVERRIDE_Test1()
        {
            _logger.Info("{}の実行を開始します", nameof(StartPerspective_BWAB_Test2));
            string PERSPECTIVE_NAME1 = "TestPerspective1";
            string PERSPECTIVE_NAME2 = "TestPerspective2";

            List <IContentBuilder> contentBuilders = new List <IContentBuilder>();

            contentBuilders.Add(BuildContentBuilder("MyContent1a"));
            contentBuilders.Add(BuildContentBuilder("MyContent1b"));
            contentBuilders.Add(BuildContentBuilder("MyContent2"));

            // テスト対象の生成と設定
            var manager = new HarmonicManager();

            manager.Verify(contentBuilders);

            var dict = new Dictionary <string, string>();

            dict.Add("MyFrameA", "MyContent1a"); // 重複するフレームにコンテントを配置
            dict.Add("MyFrameB", "MyContent1b"); // 重複しないフレームにコンテントを配置
            var perspective = new Perspective(PERSPECTIVE_NAME1, ArbitrationMode.AWAB, dict, manager);

            manager.RegisterPerspective(perspective);

            var dict2 = new Dictionary <string, string>();

            dict2.Add("MyFrameA", "MyContent2"); // 重複するフレームにコンテントを配置
            var perspective2 = new Perspective(PERSPECTIVE_NAME2, ArbitrationMode.OVERRIDE, dict2, manager);

            manager.RegisterPerspective(perspective2);

            manager.StartPerspective(PERSPECTIVE_NAME1);

            // テスト対象のロジック呼び出し
            manager.StartPerspective(PERSPECTIVE_NAME2);

            // TODO: ここに、テストコードを実装する
            var stack_MyFrameA = manager._FrameList.GetContentStack("MyFrameA");

            Assert.Single(stack_MyFrameA);
            Assert.Equal(stack_MyFrameA.ToArray()[0].Name, "MyContent2");
            Assert.Equal(stack_MyFrameA.ToArray()[0].Status, ContentStatus.Run);

            var stack_MyFrameB = manager._FrameList.GetContentStack("MyFrameB");

            Assert.Equal(0, stack_MyFrameB.Count);
        }
예제 #6
0
    private void RotateClockwise()
    {
        previousGreenRotation = GreenRotation;
        prevoiusBlueRotation  = BlueRotation;

        if (Side != Perspective.Right)
        {
            Side++;
        }
        else
        {
            Side = Perspective.Front;
        }

        StartRotating();
    }
 /// <summary>
 /// Add Maya like camera handling for orbiting camera.
 /// </summary>
 /// <param name="window">window that receives input system events</param>
 /// <param name="projection">Projection transformation.</param>
 /// <param name="orbit">Orbit transformation.</param>
 public static void AddMayaCameraEvents(this INativeWindow window, Perspective projection, Orbit orbit)
 {
     window.MouseMove += (s, e) =>
     {
         if (ButtonState.Pressed == e.Mouse.LeftButton)
         {
             orbit.Azimuth   += 300 * e.XDelta / (float)window.Width;
             orbit.Elevation += 300 * e.YDelta / (float)window.Height;
         }
     };
     window.MouseWheel += (s, e) =>
     {
         orbit.Distance *= (float)Math.Pow(1.05, e.DeltaPrecise);
         orbit.Distance  = Geometry.MathHelper.Clamp(orbit.Distance, projection.NearClip, projection.FarClip);
     };
 }
예제 #8
0
    void OnTriggerExit(Collider other)
    {
        if (other.tag == "PressurePlate")
        {
            this.transform.parent = null;
        }

        if ((other.tag == "MovingPlatform" || other.tag == "PerspectiveBlock") && blockGravity.contact == false)
        {
            if (camera.turning == false)
            {
                currentPlatform = null;
                Parent          = null;
            }
        }
    }
예제 #9
0
    void OnTriggerEnter(Collider other)
    {
        if (other.tag == "PressurePlate")
        {
            this.transform.parent = other.transform;
        }

        if (other.tag == "MovingPlatform" || other.tag == "PerspectiveBlock")
        {
            if (camera.turning == false)
            {
                currentPlatform = other.transform.gameObject.GetComponent <Perspective>();
                Parent          = other.gameObject.transform;
            }
        }
    }
예제 #10
0
            public void WriteTo(XmlWriter xmlWriter)
            {
                xmlWriter.WriteStartElement("ThreeDProperties");
                {
                    if (Enabled.HasValue)
                    {
                        xmlWriter.WriteElementString("Enabled", Enabled.Value.ToString());
                    }

                    xmlWriter.WriteElementString("ProjectionMode", ProjectionMode.ToString());

                    if (ProjectionMode == ProjectionMode3DForRendering.Perspective)
                    {
                        if (Perspective.HasValue)
                        {
                            xmlWriter.WriteElementString("Perspective", Perspective.ToString());
                        }
                    }

                    if (Rotation.HasValue)
                    {
                        xmlWriter.WriteElementString("Rotation", Rotation.ToString());
                    }

                    if (Inclination.HasValue)
                    {
                        xmlWriter.WriteElementString("Inclination", Inclination.ToString());
                    }

                    xmlWriter.WriteElementString("Shading", Shading.ToString());

                    if (WallThickness.HasValue)
                    {
                        xmlWriter.WriteElementString("WallThickness", WallThickness.ToString());
                    }

                    //if ( chart type is bar OR column)
                    {
                        xmlWriter.WriteElementString("DrawingStyle", DrawingStyle.ToString());
                        if (Clustered.HasValue)
                        {
                            xmlWriter.WriteElementString("Clustered", Clustered.ToString());
                        }
                    }
                }
                xmlWriter.WriteEndElement();
            }
예제 #11
0
        public ArrayGrid(Perspective perspective, T[,] grid, Vector2 tileSize, bool wrapAround = false,
                         bool isScreenGrid = false)
        {
            Position = Vector2.Zero;

            Cells = grid;

            Width    = grid.GetLength(0);
            Height   = grid.GetLength(1);
            TileSize = tileSize;

            DrawLayer = 0; //temp

            Perspective  = perspective;
            WrapAround   = wrapAround;
            IsScreenGrid = isScreenGrid;
        }
예제 #12
0
        public static Perspective DeserializePerspective(JObject json, Model model)
        {
            var tom = TOM.JsonSerializer.DeserializeObject <TOM.Perspective>(json.ToString(Formatting.None));

            tom.Name = model.Perspectives.GetNewName(tom.Name);

            var tomModel = model.MetadataObject;

            foreach (var pt in tom.PerspectiveTables.ToList())
            {
                if (tomModel.Tables.Contains(pt.Name))
                {
                    var tomTable = tomModel.Tables[pt.Name];
                    foreach (var pc in pt.PerspectiveColumns.ToList())
                    {
                        if (!tomTable.Columns.Contains(pc.Name))
                        {
                            pt.PerspectiveColumns.Remove(pc.Name);
                        }
                    }
                    foreach (var pm in pt.PerspectiveMeasures.ToList())
                    {
                        if (!tomTable.Measures.Contains(pm.Name))
                        {
                            pt.PerspectiveMeasures.Remove(pm.Name);
                        }
                    }
                    foreach (var ph in pt.PerspectiveHierarchies.ToList())
                    {
                        if (!tomTable.Hierarchies.Contains(ph.Name))
                        {
                            pt.PerspectiveHierarchies.Remove(ph.Name);
                        }
                    }
                }
                else
                {
                    tom.PerspectiveTables.Remove(pt.Name);
                }
            }

            var perspective = Perspective.CreateFromMetadata(model, tom);


            return(perspective);
        }
예제 #13
0
    void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Coin")
        {
            GM.instance.CoinSound();
            Destroy(other.gameObject);
            GM.instance.IncrementCoins();
        }

        if (other.tag == "PressurePlate")
        {
            onRotatingPlatform    = true;
            this.transform.parent = other.transform;
            //Try and implement a "STICK" functionality
            //other.gameObject.GetComponent<RotatePlatform> ().Rotate();
        }

        if (other.tag == "GravityShift")
        {
            if (camera.turning == false)
            {
                this.GetComponent <GravityNew> ().gravityShift = !this.GetComponent <GravityNew> ().gravityShift;
            }
            else
            {
                //this.GetComponent<GravityNew> ().gravityShift = false;
            }
        }
        if (other.tag == "MovingPlatform" || other.tag == "PerspectiveBlock")
        {
            //this.transform.parent = other.gameObject.transform;
            //fakeChild.transform.position = other.gameObject.transform.position;

            if (camera.turning == false)
            {
                currentPlatform = other.transform.gameObject.GetComponent <Perspective>();
                this.GetComponent <GravityNew> ().currentPlatform = currentPlatform;
                Parent = other.gameObject.transform;
            }
        }

        if (other.tag == "death")
        {
            GM.instance.DeathReset();
        }
    }
예제 #14
0
        public void Write_OneElementAtEachStep_FileIsCorrectlyBuilt()
        {
            var header           = GetHeader();
            var expectedContent  = header + "\"p\";\"mg\";\"m1\";\"[m1]\";\"d\";\"[d]\";\"h1\";\"[h1]\";\"l1\";\"[l1]\";\"0\";\"p1\";\"[p1]\"\r\n";
            var expectedFilename = Path.Combine(DiskOnFile.GetDirectoryPath(), "ExpectedCSV-" + MethodBase.GetCurrentMethod() + ".csv");

            if (File.Exists(expectedFilename))
            {
                File.Delete(expectedFilename);
            }
            File.AppendAllText(expectedFilename, expectedContent, Encoding.UTF8);

            var filename = Path.Combine(DiskOnFile.GetDirectoryPath(), @"ActualCSV-" + MethodBase.GetCurrentMethod() + ".csv");

            var metadata = new CubeMetadata();
            var p        = new Perspective("p");

            metadata.Perspectives.Add(p);
            var mg = new MeasureGroup("mg");

            p.MeasureGroups.Add(mg);
            var m1 = new Measure("[m1]", "m1", "df");

            mg.Measures.Add(m1);
            var d = new Dimension("[d]", "d");

            mg.LinkedDimensions.Add(d);
            var h1 = new Hierarchy("[h1]", "h1", "df");

            d.Hierarchies.Add(h1);
            var l1 = new Level("[l1]", "l1", 0);

            h1.Levels.Add(l1);
            var p1 = new Property("[p1]", "p1");

            l1.Properties.Add(p1);

            //set the object to test
            var mcw = new MetadataCsvWriter(filename);

            mcw.Write(metadata);

            //Assertion
            FileAssert.AreEqual(expectedFilename, filename);
        }
예제 #15
0
        private void OnCaptureViewpointButtonClick(object sender, RibbonControlEventArgs e)
        {
            try
            {
                Utility.IsWWTInstalled();
                WWTManager.IsValidMachine(Common.Globals.TargetMachine.MachineIP.ToString(), false);
                Perspective perspective = WWTManager.GetCameraView();

                if (perspective != null)
                {
                    var dialog = new CaptureViewpoint();
                    System.Windows.Interop.WindowInteropHelper helper = new System.Windows.Interop.WindowInteropHelper(dialog);
                    helper.Owner = (IntPtr)ThisAddIn.ExcelApplication.Hwnd;

                    perspective.Name = Resources.DefaultViewpointText;
                    var viewModel = new ViewpointViewModel(perspective);
                    viewModel.IsButtonEnabled = true;
                    viewModel.RequestClose   += new EventHandler(dialog.OnRequestClose);
                    dialog.DataContext        = viewModel;
                    dialog.ShowDialog();

                    // WPF dialog does not have dialog result
                    if (dialog.DialogResult.HasValue && dialog.DialogResult.Value)
                    {
                        if (!string.IsNullOrWhiteSpace(perspective.Name))
                        {
                            // Fire it only when valid value set
                            this.GetViewpointClicked.OnFire(perspective, new EventArgs());
                        }
                    }

                    viewModel.RequestClose -= new EventHandler(dialog.OnRequestClose);
                    dialog.Close();
                }
            }
            catch (CustomException ex)
            {
                Ribbon.ShowError(ex.HasCustomMessage ? ex.Message : Resources.LayerOperationError);
            }
            catch (Exception exception)
            {
                Logger.LogException(exception);
                Ribbon.ShowError(Resources.DefaultErrorMessage);
            }
        }
예제 #16
0
        public void PerspectiveConstructorTest()
        {
            string      lookAt         = "Earth";
            string      referenceFrame = "Earth";
            bool        hasRADec       = false;
            string      observingTime  = "2/25/2011 7:24:01 AM";
            string      timeRate       = "1";
            string      zoomText       = "9932 km";
            string      viewToken      = "SD8834DFA";
            string      latitude       = "30.0";
            string      longitude      = "30.0";
            string      zoom           = "2.0";
            string      rotation       = ".3";
            string      lookAngle      = "1.5";
            Perspective target         = new Perspective(lookAt, referenceFrame, hasRADec, latitude, longitude, zoom, rotation, lookAngle, observingTime, timeRate, zoomText, viewToken);

            Assert.IsNotNull(target);
        }
예제 #17
0
 /**
  * Constructor
  */
 public DescriptorData()
 {
     contents                  = new List <ChapterSummary>();
     cursors                   = new List <CustomCursor>();
     buttons                   = new List <CustomButton>();
     arrows                    = new List <CustomArrow>();
     title                     = null;
     description               = null;
     guiType                   = -1;
     defaultClickAction        = DefaultClickAction.SHOW_DETAILS;
     perspective               = Perspective.REGULAR;
     dragBehaviour             = DragBehaviour.CONSIDER_NON_TARGETS;
     playerMode                = MODE_PLAYER_1STPERSON;
     graphicConfig             = GRAPHICS_WINDOWED;
     projectName               = ENGINE_EXECUTION;
     versionNumber             = "0";
     keyboardNavigationEnabled = false;
 }
예제 #18
0
        /// <summary>
        /// Performs semantic conversion, validation on a command AST and creates a <see cref="DbCommandTree"/>
        /// </summary>
        /// <param name="astExpr">Abstract Syntax Tree of the command</param>
        /// <param name="perspective">perspective</param>
        /// <param name="parserOptions">parser options<seealso cref="ParserOptions"/></param>
        /// <param name="parameters">ordinary command parameters</param>
        /// <returns>a parse result with a valid command tree</returns>
        /// <remarks>Parameters name/types must be bound before invoking this method</remarks>
        /// <exception cref="System.Data.EntityException">Thrown when Syntatic or Semantic rules are violated and the query cannot be accepted.</exception>
        /// <exception cref="System.Data.MetadataException">Thrown as inner exception of a EntityException when metadata related service requests fail.</exception>
        /// <exception cref="System.Data.MappingException">Thrown as inner exception of a EntityException when mapping related service requests fail.</exception>
        /// <remarks>
        /// This method is not thread safe.
        /// </remarks>
        /// <seealso cref="ParserOptions"/>
        /// <seealso cref="DbCommandTree"/>
        private static ParseResult AnalyzeCommandSemantics(AST.Node astExpr,
                                                           Perspective perspective,
                                                           ParserOptions parserOptions,
                                                           IEnumerable <DbParameterReferenceExpression> parameters)
        {
            ParseResult result = AnalyzeSemanticsCommon(astExpr, perspective, parserOptions, parameters, null /*variables*/,
                                                        (analyzer, astExpression) =>
            {
                var parseResultInternal = analyzer.AnalyzeCommand(astExpression);

                Debug.Assert(parseResultInternal != null, "parseResultInternal != null post-condition FAILED");
                Debug.Assert(parseResultInternal.CommandTree != null, "parseResultInternal.CommandTree != null post-condition FAILED");

                return(parseResultInternal);
            });

            return(result);
        }
 void FixedUpdate()
 {
     if (firstUpdate || view != previous)
     {
         if (FP)
         {
             FP.enabled = false;
         }
         if (TP)
         {
             TP.enabled = false;
         }
         if (TOP)
         {
             TOP.enabled = false;
         }
         if (FIX)
         {
             FIX.enabled = false;
         }
         if (FP && view == Perspective.firstPerson)
         {
             FP.enabled = true;
         }
         else if (TP && view == Perspective.thirdPerson)
         {
             TP.enabled = true;
         }
         else if (TOP && view == Perspective.topView)
         {
             TOP.enabled = true;
         }
         else if (FIX && view == Perspective.topViewFixed)
         {
             FIX.enabled = true;
         }
         previous    = view;
         firstUpdate = false;
     }
     if (view == Perspective.topViewFixed)
     {
         FIX.transform.rotation = Quaternion.LookRotation(Vector3.down);
     }
 }
        public void StartPerspective_BWAB_Test1()
        {
            _logger.Info("{}の実行を開始します", nameof(StartPerspective_BWAB_Test1));
            string PERSPECTIVE_NAME1 = "TestPerspective1";
            string PERSPECTIVE_NAME2 = "TestPerspective2";

            List <IContentBuilder> contentBuilders = new List <IContentBuilder>();

            contentBuilders.Add(BuildContentBuilder("MyContent1"));
            contentBuilders.Add(BuildContentBuilder("MyContent2"));

            // テスト対象の生成と設定
            var manager = new HarmonicManager();

            manager.Verify(contentBuilders);

            var dict = new Dictionary <string, string>();

            dict.Add("MyFrameA", "MyContent1");
            var perspective = new Perspective(PERSPECTIVE_NAME1, ArbitrationMode.AWAB, dict, manager);

            manager.RegisterPerspective(perspective);

            var dict2 = new Dictionary <string, string>();

            dict2.Add("MyFrameB", "MyContent2");
            var perspective2 = new Perspective(PERSPECTIVE_NAME2, ArbitrationMode.BWAB, dict2, manager);

            manager.RegisterPerspective(perspective2);

            manager.StartPerspective(PERSPECTIVE_NAME1);

            // テスト対象のロジック呼び出し
            manager.StartPerspective(PERSPECTIVE_NAME2);

            // TODO: ここに、テストコードを実装する
            var stack_MyFrameA = manager._FrameList.GetContentStack("MyFrameA");

            Assert.Single(stack_MyFrameA);
            var stack_MyFrameB = manager._FrameList.GetContentStack("MyFrameB");

            Assert.Single(stack_MyFrameB);
        }
예제 #21
0
        protected Shape3C()
        {
            lines           = new List <Line>();
            invisibleLines  = new List <Line>();
            surfaces        = new List <Surface>();
            points          = new List <Point>();
            transformPoints = new List <Point>();

            // transform matrix initialization
            rotateX      = new RotateX(0);
            rotateY      = new RotateY(0);
            rotateZ      = new RotateZ(0);
            movePersp    = new PerspectiveMove(60, 0, 0);
            rotatePhi    = new RotatePhi(0);
            rotateTet    = new RotateTheta(0);
            perspectiveM = new Perspective(30);
            move         = new Move(0, 0, 0);
            scale        = new Scale(1);
        }
예제 #22
0
 public void LatitudeTest()
 {
     string lookAt = "Earth";
     string referenceFrame = "Earth";
     bool hasRADec = false;
     string observingTime = "2/25/2011 7:24:01 AM";
     string timeRate = "1";
     string zoomText = "9932 km";
     string viewToken = "SD8834DFA";
     string latitude = "30.0";
     string longitude = "30.0";
     string zoom = "2.0";
     string rotation = ".3";
     string lookAngle = "1.5";
     Perspective target = new Perspective(lookAt, referenceFrame, hasRADec, latitude, longitude, zoom, rotation, lookAngle, observingTime, timeRate, zoomText, viewToken);
     string expected = latitude;
     string actual = target.Latitude;
     Assert.AreEqual(expected, actual);
 }
예제 #23
0
        public EntityState PlayerEntityState(Perspective perspective = Perspective.My)
        {
            if (_state == null)
            {
                return(null);
            }

            if (perspective == Perspective.My)
            {
                return(_state.Objects.FirstOrDefault(e => e.IsPlayer && e.Side == MySide));
            }

            if (perspective == Perspective.Opponent)
            {
                return(_state.Objects.FirstOrDefault(e => e.IsPlayer && e.Side == OpponentsSide));
            }

            return(null);
        }
예제 #24
0
 /// <summary>
 /// Performs semantic conversion, validation on a query command AST and creates a <see cref="DbLambda"/>
 /// </summary>
 /// <param name="astQueryCommand">Abstract Syntax Tree of the query command</param>
 /// <param name="perspective">perspective</param>
 /// <param name="parserOptions">parser options<seealso cref="ParserOptions"/></param>
 /// <param name="parameters">ordinary command parameters</param>
 /// <param name="variables">command free variables</param>
 /// <remarks>Parameters name/types must be bound before invoking this method</remarks>
 /// <exception cref="System.Data.EntityException">Thrown when Syntatic or Semantic rules are violated and the query cannot be accepted.</exception>
 /// <exception cref="System.Data.MetadataException">Thrown as inner exception of a EntityException when metadata related service requests fail.</exception>
 /// <exception cref="System.Data.MappingException">Thrown as inner exception of a EntityException when mapping related service requests fail.</exception>
 /// <remarks>
 /// This method is not thread safe.
 /// </remarks>
 /// <seealso cref="ParserOptions"/>
 /// <seealso cref="DbExpression"/>
 private static DbLambda AnalyzeQueryExpressionSemantics(AST.Node astQueryCommand,
                                                         Perspective perspective,
                                                         ParserOptions parserOptions,
                                                         IEnumerable <DbParameterReferenceExpression> parameters,
                                                         IEnumerable <DbVariableReferenceExpression> variables)
 {
     return(AnalyzeSemanticsCommon(
                astQueryCommand,
                perspective,
                parserOptions,
                parameters,
                variables,
                (analyzer, astExpr) =>
     {
         DbLambda lambda = analyzer.AnalyzeQueryCommand(astExpr);
         Debug.Assert(null != lambda, "null != lambda post-condition FAILED");
         return lambda;
     }));
 }
예제 #25
0
        public void LongitudeTest()
        {
            string      lookAt         = "Earth";
            string      referenceFrame = "Earth";
            bool        hasRADec       = false;
            string      observingTime  = "2/25/2011 7:24:01 AM";
            string      timeRate       = "1";
            string      zoomText       = "9932 km";
            string      viewToken      = "SD8834DFA";
            string      latitude       = "30.0";
            string      longitude      = "30.0";
            string      zoom           = "2.0";
            string      rotation       = ".3";
            string      lookAngle      = "1.5";
            Perspective target         = new Perspective(lookAt, referenceFrame, hasRADec, latitude, longitude, zoom, rotation, lookAngle, observingTime, timeRate, zoomText, viewToken);
            string      expected       = longitude;
            string      actual         = target.Longitude;

            Assert.AreEqual(expected, actual);
        }
예제 #26
0
        private unsafe void ReaderThread()
        {
            lock (this){
                //Het engelse gedeelte is code van kai
                //Maar omdat de code kris kras door de applicatie verdwijnt
                //Zal niet meer te herkennen zijn wat van hem is of nog maar te zeggen dat het van hem is
                //Toch ter ere van zijn werk noteren we zijn naam Kai.

                //TextWriter tw = new StreamWriter("d:\\temp\\depthdump.txt");
                int[]    depth;
                UInt16[] rgb;
                try { this.context.WaitAndUpdateAll(); }catch (Exception) { }
                Perspective p = new Perspective(DateTime.Now);
                GImage.GetMetaData(p.ImgMD);
                GDepth.GetMetaData(p.DepthMD);

                BeeldOpslag.Instance.RegisterPerspective(p);
                LOG.Instance.publishMessage("Start take picture thread ID " + Thread.CurrentThread.ManagedThreadId + " DONE");
            }
        }
예제 #27
0
        /// <summary>
        /// Compiles an eSQL command producing a validated <see cref="DbCommandTree"/>.
        /// </summary>
        /// <param name="commandText">eSQL command text</param>
        /// <param name="perspective">perspective</param>
        /// <param name="parserOptions">parser options<seealso cref="ParserOptions"/></param>
        /// <param name="parameters">ordinary parameters</param>
        /// <param name="parseResult"></param>
        /// <returns>A parse result with the command tree produced by parsing the given command.</returns>
        /// <exception cref="System.Data.EntityException">Thrown when Syntatic or Semantic rules are violated and the query cannot be accepted</exception>
        /// <exception cref="System.Data.MetadataException">Thrown when metadata related service requests fail</exception>
        /// <exception cref="System.Data.MappingException">Thrown when mapping related service requests fail</exception>
        /// <remarks>
        /// This method is not thread safe.
        /// </remarks>
        /// <seealso cref="ParserOptions"/>
        /// <seealso cref="DbCommandTree"/>
        internal static ParseResult Compile(string commandText,
                                            Perspective perspective,
                                            ParserOptions parserOptions,
                                            IEnumerable <DbParameterReferenceExpression> parameters)
        {
            ParseResult result = CompileCommon(commandText, perspective, parserOptions,
                                               (astCommand, validatedParserOptions) =>
            {
                var parseResultInternal = AnalyzeCommandSemantics(astCommand, perspective, validatedParserOptions, parameters);

                Debug.Assert(parseResultInternal != null, "parseResultInternal != null post-condition FAILED");
                Debug.Assert(parseResultInternal.CommandTree != null, "parseResultInternal.CommandTree != null post-condition FAILED");

                TypeHelpers.AssertEdmType(parseResultInternal.CommandTree);

                return(parseResultInternal);
            });

            return(result);
        }
예제 #28
0
        public WrappingScreenGrid(Texture2D texture, byte[,] frames, Vector2 cellSize, Perspective perspective)
        {
            Texture     = texture;
            FrameGrid   = frames;
            CellSize    = cellSize;
            Perspective = perspective;

            XHead         = 0;
            YHead         = 0;
            XOffsetWest   = 0;
            XOffsetEast   = 0;
            YOffsetNorth  = 0;
            YOffsetSouth  = 0;
            Width         = frames.GetLength(0);
            Height        = frames.GetLength(1);
            WrappedWidth  = 0;
            WrappedHeight = 0;

            Position = Vector2.Zero;
        }
예제 #29
0
        private static TResult AnalyzeSemanticsCommon <TResult>(
            Node astExpr,
            Perspective perspective,
            ParserOptions parserOptions,
            IEnumerable <DbParameterReferenceExpression> parameters,
            IEnumerable <DbVariableReferenceExpression> variables,
            Func <SemanticAnalyzer, Node, TResult> analysisFunction)
            where TResult : class
        {
            DebugCheck.NotNull(astExpr);
            DebugCheck.NotNull(perspective);

            TResult result = null;

            try
            {
                //
                // Invoke semantic analysis
                //
                var analyzer = (new SemanticAnalyzer(SemanticResolver.Create(perspective, parserOptions, parameters, variables)));
                result = analysisFunction(analyzer, astExpr);
            }
            //
            // Wrap MetadataException as EntityException inner exception
            //
            catch (MetadataException metadataException)
            {
                var message = Strings.GeneralExceptionAsQueryInnerException("Metadata");
                throw new EntitySqlException(message, metadataException);
            }
            //
            // Wrap MappingException as EntityException inner exception
            //
            catch (MappingException mappingException)
            {
                var message = Strings.GeneralExceptionAsQueryInnerException("Mapping");
                throw new EntitySqlException(message, mappingException);
            }

            return(result);
        }
예제 #30
0
        private static TResult AnalyzeSemanticsCommon <TResult>(AST.Node astExpr,
                                                                Perspective perspective,
                                                                ParserOptions parserOptions,
                                                                IEnumerable <DbParameterReferenceExpression> parameters,
                                                                IEnumerable <DbVariableReferenceExpression> variables,
                                                                Func <SemanticAnalyzer, AST.Node, TResult> analysisFunction)
            where TResult : class
        {
            TResult result = null;

            try
            {
                //
                // Validate arguments
                //
                EntityUtil.CheckArgumentNull(astExpr, "astExpr");
                EntityUtil.CheckArgumentNull(perspective, "perspective");

                //
                // Invoke semantic analysis
                //
                SemanticAnalyzer analyzer = (new SemanticAnalyzer(SemanticResolver.Create(perspective, parserOptions, parameters, variables)));
                result = analysisFunction(analyzer, astExpr);
            }
            //
            // Wrap MetadataException as EntityException inner exception
            //
            catch (System.Data.MetadataException metadataException)
            {
                throw EntityUtil.EntitySqlError(System.Data.Entity.Strings.GeneralExceptionAsQueryInnerException("Metadata"), metadataException);
            }
            //
            // Wrap MappingException as EntityException inner exception
            //
            catch (System.Data.MappingException mappingException)
            {
                throw EntityUtil.EntitySqlError(System.Data.Entity.Strings.GeneralExceptionAsQueryInnerException("Mapping"), mappingException);
            }

            return(result);
        }
예제 #31
0
    public void updateEnvironment(Perspective perspective)
    {
        if (curPerspective == Perspective.twoD)
        {
            currentZAxis = thePlayer.transform.position.z;
            thePlayer.transform.position = GameManager.get2DPosition(thePlayer.transform.position);
            theLight.transform.position  = new Vector3(thePlayer.transform.position.x, thePlayer.transform.position.y, thePlayer.transform.position.z - 0.1f);

            mainCamera.orthographic = true;
            mainCamera.fieldOfView  = 60;
        }
        else
        {
            thePlayer.transform.position = GameManager.get3DPosition(thePlayer.transform.position);
            theLight.transform.position  = new Vector3(thePlayer.transform.position.x - .1f, thePlayer.transform.position.y, thePlayer.transform.position.z);

            mainCamera.orthographic = false;
            mainCamera.fieldOfView  = 60;
        }
        SwitchObstaclePerspectives();
    }
        public void RestoreActiveContent(Perspective ActivePerspective)
        {
            if (!ActiveContents.ContainsKey(ActivePerspective))
            {
                return;
            }

            foreach (var activeContent in ActiveContents[ActivePerspective])
            {
                foreach (var content in Core.MainForm.panelMain.Contents)
                {
                    if (content.ToString() == activeContent)
                    {
                        var handler = content.DockHandler;
                        handler.IsHidden = false;
                        handler.Show();
                        break;
                    }
                }
            }
        }
예제 #33
0
파일: Program.cs 프로젝트: TheInvoker/Card
        private static void BatchGenerateMapping(string gridPath, string warpPath, string transformer, string mappingPath, string metadataPath)
        {
            if (!CanSkip(gridPath, warpPath, transformer, mappingPath, metadataPath))
            {
                KeyValuePair<List<Shape>, int[]> gridData = GetShapes(gridPath);
                KeyValuePair<List<Shape>, int[]> warpData = GetShapes(warpPath);

                List<Shape> gridShapes = gridData.Key;
                int[] gridDim = gridData.Value;

                List<Shape> warpShapes = warpData.Key;
                int[] warpDim = warpData.Value;

                if (gridDim[0] != warpDim[0] || gridDim[1] != warpDim[1])
                {
                    throw new InvalidDataException("Grid and Warp images are not same dimensions");
                }

                List<KeyValuePair<Shape, Shape>> ShapeList = FindPairing(gridShapes, warpShapes);

                Transformer transformerobj;
                switch (transformer)
                {
                    case "1.5orderpoly":
                        transformerobj = new OneFiveOrderPoly();
                        break;
                    case "bilinear":
                        transformerobj = new Bilinear();
                        break;
                    case "perspective":
                        transformerobj = new Perspective();
                        break;
                    default:
                        throw new InvalidDataException("Invalid transformer argument");
                }

                Dictionary<Point, Point> mapping = GenerateMapping(ShapeList, transformerobj, gridDim[0], gridDim[1]);
                MyJSON.SaveMapping(gridDim[0], gridDim[1], mapping, transformer, mappingPath, metadataPath);
            }
        }
예제 #34
0
 public TwoDPerspective(Perspective perspective)
 {
     mPerspective = perspective;
 }
예제 #35
0
 public void Draw(System.Drawing.Graphics graphics, Func<OpenMetaverse.Vector3, System.Drawing.Point> to2D, Action redraw, Perspective perspective)
 {
 }
예제 #36
0
 public virtual void Draw(Graphics graphics, Func<Vector3, Point> to2D, Action redraw, Perspective perspective)
 {
     foreach (var activeArea in WindowStates.
         Aggregate(new List<IDiagramDrawable>(), (l, w) => {
             l.AddRange(w.Features.Where(f => f is IDiagramDrawable).Select(f => f as IDiagramDrawable));
             return l;
         }))
         activeArea.Draw(graphics, to2D, redraw, perspective);
 }
 /// <summary>
 /// Takes user to the viewpoint
 /// </summary>
 /// <param name="perspective">perspective object</param>
 private static void GotoViewpointFromData(Perspective perspective)
 {
     try
     {
         Utility.IsWWTInstalled();
         WWTManager.IsValidMachine(Common.Globals.TargetMachine.MachineIP.ToString(), false);
         WWTManager.SetCameraView(perspective);
         if (TargetMachine.DefaultIP.ToString() == Common.Globals.TargetMachine.MachineIP.ToString())
         {
             Utility.ShowWWT();
         }
     }
     catch (CustomException ex)
     {
         // Earth or solar system
         if (!perspective.LookAt.Equals(Common.Constants.SkyLookAt, StringComparison.OrdinalIgnoreCase))
         {
             // If Lat and Lon values were not mapped or invalid, show error
             float validValue;
             if (!float.TryParse(perspective.Latitude, out validValue) || !float.TryParse(perspective.Longitude, out validValue))
             {
                 Ribbon.ShowError(Resources.GotoViewpointfromInvalidLatLonError);
             }
         }
         else if (perspective.HasRADec)
         {
             // If RA and Dec values were not mapped or invalid, show error.
             float validValue;
             if (!float.TryParse(perspective.RightAscention, out validValue) || !float.TryParse(perspective.Declination, out validValue))
             {
                 Ribbon.ShowError(Resources.GotoViewpointfromInvalidRaDecError);
             }
         }
         else
         {
             Ribbon.ShowError(ex.HasCustomMessage ? ex.Message : Resources.LayerOperationError);
         }
     }
 }
예제 #38
0
 public void Draw(Graphics graphics, Func<Vector3, Point> to2D, Action redraw, Perspective perspective)
 {
 }
예제 #39
0
 public void setPerspective(Perspective perspective)
 {
     this.perspective = perspective;
 }
예제 #40
0
 public void Draw(Graphics graphics, Func<Vector3, Point> to2D, Action redraw, Perspective perspective)
 {
     if (mCurrentState != null) {
         if (mRedraw == null)
             mRedraw = redraw;
         mCurrentState.Draw(graphics, to2D, redraw, perspective);
     }
 }
 public SchemaUpdater(Environment environment, Perspective perspective)
 {
     this.environment = environment;
     this.perspective = perspective;
 }
예제 #42
0
        public void Draw(Graphics graphics, Func<Vector3, Point> to2D, Action redraw, Perspective perspective)
        {
            if (perspective == Perspective.Map) {
                if (!mRedraws.Contains(redraw))
                    mRedraws.Add(redraw);

                Point bottomRight = to2D(mFarCorner);
                graphics.DrawImage(mMap, -bottomRight.X * mLeftScaleX, -bottomRight.Y * mLeftScaleY, bottomRight.X * mScaleX, bottomRight.Y * mScaleY);

                DrawTarget(graphics, to2D, bottomRight);

                if (mState == Plugins.State.FirstLoad || mState == Plugins.State.Prepped)
                    graphics.DrawLine(Pens.Blue, GetPoint(mStartA, to2D, bottomRight), GetPoint(mStartB, to2D, bottomRight));
                else {
                    graphics.DrawLine(Pens.Red, GetPoint(mStartA, to2D, bottomRight), GetPoint(mStartB, to2D, bottomRight));
                    graphics.DrawLines(Pens.Red, mRoute.Select(v => GetPoint(v, to2D, bottomRight)).ToArray());
                }

                Point location = GetPoint(mCore.Position, to2D, bottomRight);
                graphics.FillEllipse(Brushes.Red, location.X - mR, location.Y - mR, mR * 2, mR * 2);

                Point lookAt = GetPoint(mCore.Position + mCore.Orientation.LookAtVector, to2D, bottomRight);
                graphics.DrawLine(Pens.Green, location, lookAt);
            }
        }
예제 #43
0
 public static void Run(Environment environment, Perspective perspective, params string[] args)
 {
     WinFormRunner.Run<ClientForm>(environment, perspective, args);
 }
예제 #44
0
 public void PerspectiveConstructorTest()
 {
     string lookAt = "Earth";
     string referenceFrame = "Earth";
     bool hasRADec = false;
     string observingTime = "2/25/2011 7:24:01 AM";
     string timeRate = "1";
     string zoomText = "9932 km";
     string viewToken = "SD8834DFA";
     string latitude = "30.0";
     string longitude = "30.0";
     string zoom = "2.0";
     string rotation = ".3";
     string lookAngle = "1.5";
     Perspective target = new Perspective(lookAt, referenceFrame, hasRADec, latitude, longitude, zoom, rotation, lookAngle, observingTime, timeRate, zoomText, viewToken);
     Assert.IsNotNull(target);
 }
예제 #45
0
 public DotAxis(string name, Perspective perspective)
     : this(name, AxisBinding.NotSet, perspective)
 {
 }
예제 #46
0
 public void Draw(System.Drawing.Graphics graphics, Func<Vector3, Point> to2D, Action redraw, Perspective perspective)
 {
     //Do nothing
 }
예제 #47
0
 public DotAxis(string name, AxisBinding binding, Perspective perspective)
     : base(name, binding)
 {
     mPerspective = perspective;
     Init();
 }
예제 #48
0
 /**
  * Constructor
  */
 public DescriptorData()
 {
     contents = new List<ChapterSummary>();
     cursors = new List<CustomCursor>();
     buttons = new List<CustomButton>();
     arrows = new List<CustomArrow>();
     title = null;
     description = null;
     guiType = -1;
     defaultClickAction = DefaultClickAction.SHOW_DETAILS;
     perspective = Perspective.REGULAR;
     dragBehaviour = DragBehaviour.CONSIDER_NON_TARGETS;
     playerMode = MODE_PLAYER_1STPERSON;
     graphicConfig = GRAPHICS_WINDOWED;
     projectName = ENGINE_EXECUTION;
     versionNumber = "0";
     keyboardNavigationEnabled = false;
 }
예제 #49
0
        /// <summary>
        /// Set the perspective properties in WWT
        /// </summary>
        /// <param name="perspective">Perspective object</param>
        /// <returns>True if the update request is sent successfully</returns>
        public static void SetCameraView(Perspective perspective)
        {
            if (perspective != null)
            {
                string url = string.Format(
                    System.Globalization.CultureInfo.InvariantCulture,
                    Constants.SetModeCommand,
                    Globals.TargetMachine.MachineIP,
                    perspective.LookAt);

                if (IsValidResponse(request.Send(url, string.Empty, false)))
                {
                    if (perspective.LookAt.Equals(Constants.EarthLookAt, StringComparison.OrdinalIgnoreCase) ||
                        perspective.LookAt.Equals(Constants.SkyLookAt, StringComparison.OrdinalIgnoreCase))
                    {
                        url = string.Format(
                            System.Globalization.CultureInfo.InvariantCulture,
                            Constants.SetCameraViewCommand,
                            Globals.TargetMachine.MachineIP,
                            perspective.HasRADec ? perspective.Declination : perspective.Latitude,
                            perspective.HasRADec ? perspective.RightAscention : perspective.Longitude,
                            perspective.Zoom,
                            perspective.Rotation,
                            perspective.LookAngle,
                            perspective.TimeRate,
                            perspective.ObservingTime);
                    }
                    else
                    {
                        url = string.Format(
                            System.Globalization.CultureInfo.InvariantCulture,
                            Constants.SetCameraViewCommandWithReferenceFrame,
                            Globals.TargetMachine.MachineIP,
                            perspective.HasRADec ? perspective.Declination : perspective.Latitude,
                            perspective.HasRADec ? perspective.RightAscention : perspective.Longitude,
                            perspective.Zoom,
                            perspective.Rotation,
                            perspective.LookAngle,
                            perspective.ReferenceFrame,
                            perspective.ViewToken,
                            perspective.TimeRate,
                            perspective.ObservingTime);
                    }

                    request.Send(url, string.Empty, false);
                }
            }
        }
예제 #50
0
        /// <summary>
        /// DrawSelected any relevant information about this input onto a diagram.
        /// </summary>
        /// <param name="perspective">The perspective to render along.</param>
        /// <param name="graphics">The graphics object to draw with.</param>
        public void Draw(Func<Vector3, Point> to2D, Graphics graphics, Rectangle clipRectangle, Action redraw, Perspective perspective)
        {
            if (perspective == Perspective.Map)
                return;

            if (!mRedraws.Contains(redraw))
                mRedraws.Add(redraw);

            if (!mDraw)
                return;

            Vector3 top = new Vector3(0f, (float)mWidth, 0f) * mOrientation.Quaternion;
            Vector3 side = new Vector3(0f, 0f, (float)-mHeight) * mOrientation.Quaternion;
            Vector3 miniTop = Vector3.Zero;
            Vector3 miniSide = Vector3.Zero;

            using (Pen p = new Pen(mColour, 3f)) {
                Point bottomR = to2D(mTopLeft + top + side);
                graphics.DrawLine(p, to2D(mTopLeft), to2D(mTopLeft + top));
                graphics.DrawLine(p, to2D(mTopLeft), to2D(mTopLeft + side));
                graphics.DrawLine(p, to2D(mTopLeft + top), bottomR);
                graphics.DrawLine(p, to2D(mTopLeft + side), bottomR);
            }

            using (Brush b = new SolidBrush(mColour)) {
                graphics.FillPolygon(Brushes.Red, new Point[] {
                    to2D(mTopLeft),
                    to2D(mTopLeft + top),
                    to2D(mTopLeft + top + side),
                    to2D(mTopLeft + side)
                });
                graphics.DrawPolygon(Pens.Black, new Point[] {
                    to2D(mTopLeft),
                    to2D(mTopLeft + top),
                    to2D(mTopLeft + top + side),
                    to2D(mTopLeft + side)
                });
            }

            if (mDrawEye) {
                float perspectiveLineScale = 5f;
                Vector3 topLeftLine = ((mTopLeft - mCoordinator.EyePosition) * perspectiveLineScale) + mCoordinator.EyePosition;
                Vector3 topRightLine = (((mTopLeft + top) - mCoordinator.EyePosition) * perspectiveLineScale) + mCoordinator.EyePosition;
                Vector3 bottomLeftLine = (((mTopLeft + top + side) - mCoordinator.EyePosition) * perspectiveLineScale) + mCoordinator.EyePosition;
                Vector3 bottomRightLine = (((mTopLeft + side) - mCoordinator.EyePosition) * perspectiveLineScale) + mCoordinator.EyePosition;

                Point eye = to2D(mCoordinator.EyePosition);
                graphics.DrawLine(Pens.DarkViolet, eye, to2D(topLeftLine));
                graphics.DrawLine(Pens.DarkViolet, eye, to2D(topRightLine));
                graphics.DrawLine(Pens.DarkViolet, eye, to2D(bottomLeftLine));
                graphics.DrawLine(Pens.DarkViolet, eye, to2D(bottomRightLine));

                Vector3 look = new Vector3((float)ScreenDistance, 0f, 0f) * mOrientation.Quaternion;
                graphics.DrawLine(Pens.CornflowerBlue, eye, to2D(look + mCoordinator.EyePosition));

                Vector3 normal = new Vector3((float)(Diagonal / 2.0), 0f, 0f) * mOrientation.Quaternion;
                graphics.DrawLine(Pens.Crimson, to2D(Centre), to2D(normal + Centre));

                using (Pen p = new Pen(Color.BlueViolet, 4f))
                    graphics.DrawLine(p, to2D(look + mCoordinator.EyePosition), to2D(Centre));
            }
        }
 /// <summary>
 /// Takes user to the viewpoint
 /// </summary>
 /// <param name="perspective">perspective object</param>
 private static void GotoViewpoint(Perspective perspective)
 {
     try
     {
         Utility.IsWWTInstalled();
         WWTManager.IsValidMachine(Common.Globals.TargetMachine.MachineIP.ToString(), false);
         WWTManager.SetCameraView(perspective);
         if (TargetMachine.DefaultIP.ToString() == Common.Globals.TargetMachine.MachineIP.ToString())
         {
             Utility.ShowWWT();
         }
     }
     catch (CustomException ex)
     {
         Ribbon.ShowError(ex.HasCustomMessage ? ex.Message : Resources.LayerOperationError);
     }
 }
예제 #52
0
        public void Draw(Graphics graphics, Func<Vector3, Point> to2D, Action redraw, Perspective perspective)
        {
            if (perspective == Perspective.Map)
                return;

            if (!mRedraws.Contains(redraw))
                mRedraws.Add(redraw);
            if (mEnabled) {
                using (Pen p = new Pen(Color.Black, 3f)) {
                    Vector3 l = new Vector3(0f, -140, 0f) * mKinectOrientation.Quaternion;
                    Vector3 r = new Vector3(0f, 140, 0f) * mKinectOrientation.Quaternion;
                    graphics.DrawLine(p, to2D(mKinectPosition + l), to2D(mKinectPosition + r));
                }
                using (Brush b = new SolidBrush(Color.FromArgb(32, Color.Blue))) {
                    int hFoV = 57 / 2;
                    int vFoV = 43 / 2;
                    Vector3 range = new Vector3(3500f, 0f, 0f);
                    Vector3 topLeft = range * (new Rotation(vFoV, -hFoV) + mKinectOrientation).Quaternion;
                    Vector3 topRight = range * (new Rotation(vFoV, hFoV) + mKinectOrientation).Quaternion;
                    Vector3 bottomLeft = range * (new Rotation(-vFoV, -hFoV) + mKinectOrientation).Quaternion;
                    Vector3 bottomRight = range * (new Rotation(-vFoV, hFoV) + mKinectOrientation).Quaternion;

                    Point centreP = to2D(mKinectPosition);
                    Point topLeftP = to2D(topLeft + mKinectPosition);
                    Point topRightP = to2D(topRight + mKinectPosition);
                    Point bottomLeftP = to2D(bottomLeft + mKinectPosition);
                    Point bottomRightP = to2D(bottomRight + mKinectPosition);

                    graphics.FillPolygon(b, new Point[] { centreP, topLeftP, topRightP, centreP });
                    graphics.FillPolygon(b, new Point[] { centreP, bottomLeftP, bottomRightP, centreP });
                    graphics.FillPolygon(b, new Point[] { centreP, topLeftP, bottomLeftP, centreP });
                    graphics.FillPolygon(b, new Point[] { centreP, topRightP, bottomRightP, centreP });
                }
            }
        }
예제 #53
0
        public void Draw(Graphics g, Func<Vector3, Point> to2D, Action redraw, Perspective perspective)
        {
            if (!mRedraws.Contains(redraw))
                mRedraws.Add(redraw);

            if (!mEnabled)
                return;

            if (mDrawRoom && sCorners.Count > 1) {
                g.DrawPolygon(Pens.Black, sCorners.Select(v => to2D(v + mAnchor)).ToArray());
                if (mDrawLabels) {
                    Font font = SystemFonts.DefaultFont;

                    Vector3 edgeB = Big + RoomPosition;
                    Vector3 edgeS = Small + RoomPosition;
                    Vector3 centre = edgeS + (Size / 2f);

                    string w = String.Format("Width: {0:.#}", Size.Y);
                    string h = String.Format("Height: {0:.#}", Size.Z);
                    string d = String.Format("Depth: {0:.#}", Size.X);

                    if (perspective == Perspective.X) {
                        PH(g, new Vector3(0f, edgeB.Y, centre.Z), h, to2D, font);
                        PW(g, new Vector3(0f, centre.Y, edgeS.Z), w, to2D, font);
                    }
                    if (perspective == Perspective.Y) {
                        PH(g, new Vector3(edgeS.X, 0f, centre.Z), h, to2D, font);
                        PW(g, new Vector3(centre.X, 0f, edgeS.Z), d, to2D, font);
                    }
                    if (perspective == Perspective.Z) {
                        PH(g, new Vector3(centre.X, edgeB.Y, 0f), d, to2D, font);
                        PW(g, new Vector3(edgeS.X, centre.Y, 0f), w, to2D, font);
                    }
                }
            }

            foreach (var projector in mProjectors.Where(p => p.DrawDiagram))
                projector.Draw(g, to2D, redraw, perspective);
        }
        /// <summary>
        /// Get perspective based on the layer mapping and the row data
        /// </summary>
        /// <param name="layerMap">layer map object</param>
        /// <param name="rowData">row data collection</param>
        /// <returns>Perspective object</returns>
        private static Perspective GetPerspectiveFromLayerRowData(LayerMap layerMap, Collection<string> rowData)
        {
            Perspective perspective = null;
            if (layerMap.LayerDetails.Group != null)
            {
                var referenceFrame = layerMap.LayerDetails.Group.GetReferenceFrame();
                var referenceFramePath = layerMap.LayerDetails.Group.Path;
                if (referenceFramePath.StartsWith(Common.Constants.SkyFramePath, StringComparison.OrdinalIgnoreCase))
                {
                    perspective = new Perspective(Common.Constants.SkyLookAt, referenceFrame, true, Common.Constants.LatitudeDefaultValue, Common.Constants.LongitudeDefaultValue, Common.Constants.ZoomDefaultValue, Common.Constants.RotationDefaultValue, Common.Constants.LookAngleDefaultValue, DateTime.Now.ToString(), Common.Constants.TimeRateDefaultValue, Common.Constants.SkyZoomTextDefaultValue, string.Empty);
                    float hours = 0;
                    string rowValueForRA = rowData[layerMap.MappedColumnType.IndexOf(ColumnType.RA)];
                    if (layerMap.LayerDetails.RAUnit == AngleUnit.Hours)
                    {
                        // If hours data, send it as is
                        perspective.RightAscention = rowValueForRA;
                    }
                    else if (float.TryParse(rowValueForRA, out hours))
                    {
                        // If degrees data, divide it by 15 and send
                        perspective.RightAscention = (hours / 15).ToString(System.Globalization.CultureInfo.InvariantCulture);
                    }
                    else
                    {
                        // Else send it as is as it cannot be converted to degrees
                        perspective.RightAscention = rowValueForRA;
                    }

                    perspective.Declination = rowData[layerMap.MappedColumnType.IndexOf(ColumnType.Dec)];
                }
                else
                {
                    if (referenceFramePath.StartsWith(Common.Constants.EarthFramePath, StringComparison.OrdinalIgnoreCase))
                    {
                        perspective = new Perspective(Common.Constants.EarthLookAt, referenceFrame, false, Common.Constants.LatitudeDefaultValue, Common.Constants.LongitudeDefaultValue, Common.Constants.ZoomDefaultValue, Common.Constants.RotationDefaultValue, Common.Constants.LookAngleDefaultValue, DateTime.Now.ToString(), Common.Constants.TimeRateDefaultValue, Common.Constants.EarthZoomTextDefaultValue, string.Empty);
                    }
                    else
                    {
                        perspective = new Perspective(Common.Constants.SolarSystemLookAt, referenceFrame, false, Common.Constants.LatitudeDefaultValue, Common.Constants.LongitudeDefaultValue, Common.Constants.ZoomDefaultValue, Common.Constants.RotationDefaultValue, Common.Constants.LookAngleDefaultValue, DateTime.Now.ToString(), Common.Constants.TimeRateDefaultValue, Common.Constants.EarthZoomTextDefaultValue, string.Empty);
                    }

                    perspective.Latitude = rowData[layerMap.MappedColumnType.IndexOf(ColumnType.Lat)];
                    perspective.Longitude = rowData[layerMap.MappedColumnType.IndexOf(ColumnType.Long)];
                }
            }

            // Update Perspective based on current state
            Perspective currentPerspective = null;
            try
            {
                currentPerspective = WWTManager.GetCameraView();
            }
            catch (CustomException)
            {
                // Ignore.
            }

            if (currentPerspective != null)
            {
                perspective.ObservingTime = currentPerspective.ObservingTime;
                perspective.TimeRate = currentPerspective.TimeRate;
                perspective.Rotation = currentPerspective.Rotation;
                perspective.LookAngle = currentPerspective.LookAngle;
                perspective.Zoom = currentPerspective.Zoom;
            }

            return perspective;
        }
        public void GotoViewpointTest()
        {
            bool createdWtmlKey = false;
            try
            {
                createdWtmlKey = CreateWwtKeyIfNotExists();
                Common.Globals_Accessor.wwtManager = new WWTManager(new WWTMockRequest());
                Common.Globals_Accessor.TargetMachine = new TargetMachine("localhost");

                Perspective perspective = new Perspective(Common.Constants.EarthLookAt, Common.Constants.EarthLookAt, false, Common.Constants.LatitudeDefaultValue, Common.Constants.LongitudeDefaultValue, Common.Constants.ZoomDefaultValue, Common.Constants.RotationDefaultValue, Common.Constants.LookAngleDefaultValue, DateTime.Now.ToString(), Common.Constants.TimeRateDefaultValue, Common.Constants.EarthZoomTextDefaultValue, string.Empty);

                WorkflowController_Accessor.GotoViewpoint(perspective);
            }
            finally
            {
                if (createdWtmlKey)
                {
                    // Delete the registry key if it is created by this test case.
                    Registry.ClassesRoot.DeleteSubKey(@".wtml", false);
                }
            }
        }
 public void Draw(Graphics graphics, Func<Vector3, Point> to2D, Action redraw, Perspective perspective)
 {
     if (!Active || perspective != Perspective.Map)
             return;
         PointF final = new PointF(FinalPoint.X, FinalPoint.Y);
         graphics.DrawPolygon(Pens.Red, mPoints.Concat(new Vector2[] { FinalPoint }).Select(p => to2D(new Vector3(p.X, p.Y, 0f))).ToArray());
 }
예제 #57
0
 public void Draw(Graphics graphics, Func<Vector3, Point> to2D, Action redraw, Perspective perspective)
 {
     if (mCurrentInput != null)
         mCurrentInput.Draw(graphics, to2D, redraw, perspective);
 }
예제 #58
0
        public static Perspective GetCameraView()
        {
            Perspective perspective = null;

            string url = string.Format(
                System.Globalization.CultureInfo.InvariantCulture,
                Constants.GetCameraViewCommand,
                Globals.TargetMachine.MachineIP);

            string response = request.Send(url, string.Empty, false);

            XmlDocument doc = new XmlDocument();
            doc.LoadXml(response);
            XmlNode viewStateNode = doc.SelectSingleNode(Constants.XPathStringForViewState);

            if (viewStateNode != null)
            {
                if (GetAttributeValue(viewStateNode, Constants.LookatAttribute).Equals(Constants.SkyLookAt, StringComparison.OrdinalIgnoreCase))
                {
                    perspective = new Perspective(Common.Constants.SkyLookAt, Common.Constants.SkyReferenceFrame, true, Common.Constants.LatitudeDefaultValue, Common.Constants.LongitudeDefaultValue, Common.Constants.ZoomDefaultValue, Common.Constants.RotationDefaultValue, Common.Constants.LookAngleDefaultValue, DateTime.Now.ToString(), Common.Constants.TimeRateDefaultValue, Common.Constants.SkyZoomTextDefaultValue, string.Empty);
                    perspective.RightAscention = GetAttributeValue(viewStateNode, Constants.RightAscentionAttribute);
                    perspective.Declination = GetAttributeValue(viewStateNode, Constants.DeclinationAttribute);
                }
                else
                {
                    perspective = new Perspective(Common.Constants.EarthLookAt, Common.Constants.EarthLookAt, false, Common.Constants.LatitudeDefaultValue, Common.Constants.LongitudeDefaultValue, Common.Constants.ZoomDefaultValue, Common.Constants.RotationDefaultValue, Common.Constants.LookAngleDefaultValue, DateTime.Now.ToString(), Common.Constants.TimeRateDefaultValue, Common.Constants.EarthZoomTextDefaultValue, string.Empty);
                    perspective.Latitude = GetAttributeValue(viewStateNode, Constants.LatAttribute);
                    perspective.Longitude = GetAttributeValue(viewStateNode, Constants.LongAttribute);
                    perspective.LookAngle = GetAttributeValue(viewStateNode, Constants.AngleAttribute);
                }

                perspective.LookAt = GetAttributeValue(viewStateNode, Constants.LookatAttribute);
                perspective.ReferenceFrame = GetAttributeValue(viewStateNode, Constants.ReferenceFrameAttribute);
                perspective.ViewToken = GetAttributeValue(viewStateNode, Constants.ViewTokenAttribute);
                perspective.ZoomText = GetAttributeValue(viewStateNode, Constants.ZoomTextAttribute);
                perspective.Rotation = GetAttributeValue(viewStateNode, Constants.RotationAttribute);
                perspective.Zoom = GetAttributeValue(viewStateNode, Constants.ZoomAttribute);
                perspective.TimeRate = GetAttributeValue(viewStateNode, Constants.TimeRateAttribute);
                perspective.ObservingTime = GetAttributeValue(viewStateNode, Constants.ObservingTimeAttribute);
            }

            return perspective;
        }
예제 #59
0
        public void Draw(Graphics g, Func<Vector3, Point> to2D, Action redraw, Perspective perspective)
        {
            if (mDraw) {
                Func<Vector3, Point> to2DR = v => to2D(Origin + (v * new Rotation(0.0, mOrientation.Yaw).Quaternion));
                Point pos = to2DR(Vector3.Zero);

                double range = 12500.0;

                double y = range * Math.Tan(mGamma);
                double zt = range * Math.Tan(mUpsideDown ? -mAlpha : mBeta);
                double zb = range * Math.Tan(mUpsideDown ? -mBeta : mAlpha);

                Quaternion q = new Rotation(-mOrientation.Pitch, 0.0).Quaternion;
                Vector3 bse = new Vector3((float)range, 0f, 0f) * q;
                Vector3 tl = new Vector3((float)range, (float)-y, (float)zt) * q;
                Vector3 tr = new Vector3((float)range, (float)y, (float)zt) * q;
                Vector3 bl = new Vector3((float)range, (float)-y, (float)zb) * q;
                Vector3 br = new Vector3((float)range, (float)y, (float)zb) * q;

                g.DrawLine(Pens.Red, pos, to2DR(bse));
                g.DrawLine(Pens.Green, pos, to2DR(bl));
                g.DrawLine(Pens.Green, pos, to2DR(br));
                g.DrawLine(Pens.Blue, pos, to2DR(tl));
                g.DrawLine(Pens.Blue, pos, to2DR(tr));
                g.DrawLine(Pens.Violet, to2DR(new Vector3((float)mD, 0f, (float)-range)), to2DR(new Vector3((float)mD, 0f, (float)range)));

                double betaH = mD / Math.Cos(P + mBeta);
                double alphaH = mD / Math.Cos(P + mAlpha);
                double betaY = mD * Math.Tan(P + mBeta);
                double alphaY = mD * Math.Tan(P + mAlpha);
                //g.DrawLine(Pens.Purple, pos, to2DR(new Vector3((float)mD, 0f, (float) betaY)));
                //g.DrawLine(Pens.Purple, pos, to2DR(new Vector3((float)mD, 0f, (float) alphaY)));

                //g.DrawLine(Pens.Purple, pos, to2DR(new Vector3((float)betaH, 0f, 0f) * new Rotation(((P + mBeta) * -180.0) / Math.PI, 0.0).Quaternion));
                //g.DrawLine(Pens.Purple, pos, to2DR(new Vector3((float)alphaH, 0f, 0f) * new Rotation(((P + mAlpha) * -180.0) / Math.PI, 0.0).Quaternion));

                if (mDrawLabels) {
                    Vector3 toScreen = new Vector3((float) mD, 0f, 0f) * new Rotation(0.0, mOrientation.Yaw).Quaternion;
                    Vector3 floor = new Vector3(0f, 0f, mProjectorPlugin.RoomPosition.Z + mProjectorPlugin.Small.Z);
                    Vector3 clearance = new Vector3(0f, 0f, (float) Clearance);
                    Vector3 toClearance = floor + clearance;

                    Font font = SystemFonts.DefaultFont;

                    using (Pen p2 = new Pen(Color.Black, 2f)) {
                        g.DrawLine(p2, pos, to2D(mProjectorPlugin.RoomPosition + mPosition + toScreen));
                        g.DrawString(String.Format("To Screen: {0:.#}cm", D / 10f), font, Brushes.Black, to2D(mProjectorPlugin.RoomPosition + mPosition + (toScreen / 2f)));

                        if (perspective == Perspective.X || perspective == Perspective.Y) {
                            Vector3 toCeiling = new Vector3(0f, 0f, RelativePosition.Z);

                            g.DrawString(String.Format("Z: {0:.#}cm", RelativePosition.Z / 10f), font, Brushes.Black, to2D(mProjectorPlugin.RoomPosition + mPosition + (toCeiling / 2f)));
                            g.DrawLine(p2, pos, to2D(mProjectorPlugin.RoomPosition + mPosition + toCeiling));

                            g.DrawString(String.Format("Clearance: {0:.#}cm", Clearance / 10f), font, Brushes.Black, to2D(floor + (clearance / 2f)));
                            g.DrawLine(p2, to2D(floor), to2D(toClearance));
                        } if (perspective == Perspective.X || perspective == Perspective.Z) {
                            Vector3 toSide = new Vector3(0f, RelativePosition.Y, 0f);

                            g.DrawString(String.Format("Y: {0:.#}cm", RelativePosition.Y / 10f), font, Brushes.Black, to2D(mProjectorPlugin.RoomPosition + mPosition + (toSide / 2f)));
                            g.DrawLine(p2, pos, to2D(mProjectorPlugin.RoomPosition + mPosition + toSide));
                        } if (perspective == Perspective.Y || perspective == Perspective.Z) {
                            Vector3 toFar = new Vector3(RelativePosition.X, 0f, 0f);

                            g.DrawString(String.Format("X: {0:.#}cm", RelativePosition.X / 10f), font, Brushes.Black, to2D(mProjectorPlugin.RoomPosition + mPosition + (toFar / 2f)));
                            g.DrawLine(p2, pos, to2D(mProjectorPlugin.RoomPosition + mPosition + toFar));
                        }
                    }
                }
            }
        }