コード例 #1
0
ファイル: FormulaSystem.cs プロジェクト: thisiscam/formula
        private List <VizData> GetStateRepresentation()
        {
            List <VizData> result    = new List <VizData>();
            bool           allUnsafe = true;

            for (int j = 0; j < plotData.Count; ++j)
            {
                if (plotData[j].type != PlotData.PlotType.UNSAFE)
                {
                    allUnsafe = false;
                    break;
                }
            }
            for (int j = 0; j < plotData.Count; ++j)
            {
                PlotData data = plotData[j];
                if (data.q == null)
                {
                    continue;
                }
                Dictionary <string, DoubleInterval> varValues = GetSystemState(data.q);

                if (timeAxis)
                {
                    PlotData datanext = j < plotData.Count - 1 ? plotData[j + 1] : null;
                    if (datanext == null || datanext.q == null || data.searchIndex != datanext.searchIndex)
                    {
                        continue;
                    }
                    Dictionary <string, DoubleInterval> varValuesNext = datanext != null?GetSystemState(datanext.q) : null;

                    // X is time
                    double time     = NormalizeAlongAxis(data.q.step, 0);
                    double timenext = NormalizeAlongAxis(datanext.q.step, 0);
                    if (searchIndexAxis)
                    {
                        // Z is search index
                        double index = NormalizeAlongAxis(data.searchIndex, 2) * searchZDepth;

                        DoubleInterval value     = axisValue[1].Eval(varValues);
                        DoubleInterval valueNext = axisValue[1].Eval(varValuesNext);

                        double[] nvalue     = NormalizeAlongAxis(value, 1);
                        double[] nvalueNext = NormalizeAlongAxis(valueNext, 1);
                        VizData  viz        = new VizData();
                        viz.data    = data;
                        viz.quad[0] = new Vector3d(time, nvalue[1], index);
                        viz.quad[1] = new Vector3d(time, nvalue[0], index);
                        viz.quad[2] = new Vector3d(timenext, nvalueNext[0], index);
                        viz.quad[3] = new Vector3d(timenext, nvalueNext[1], index);
                        result.Add(viz);
                    }
                    else
                    {
                        if (data.type == PlotData.PlotType.UNSAFE && !allUnsafe)
                        {
                            continue;
                        }
                        // Y-Z are variables
                        DoubleInterval valueY = axisValue[1].Eval(varValues);
                        DoubleInterval valueZ = axisValue[2].Eval(varValues);

                        DoubleInterval valueYnext = axisValue[1].Eval(varValuesNext);
                        DoubleInterval valueZnext = axisValue[2].Eval(varValuesNext);

                        double[] nvalueY     = NormalizeAlongAxis(valueY, 1);
                        double[] nvalueZ     = NormalizeAlongAxis(valueZ, 2);
                        double[] nvalueYnext = NormalizeAlongAxis(valueYnext, 1);
                        double[] nvalueZnext = NormalizeAlongAxis(valueZnext, 2);

                        VizData viz = new VizData();
                        viz.data    = data;
                        viz.quad[0] = new Vector3d(time, nvalueY[1], nvalueZ[1]);
                        viz.quad[1] = new Vector3d(time, nvalueY[0], nvalueZ[1]);
                        viz.quad[2] = new Vector3d(timenext, nvalueYnext[0], nvalueZnext[1]);
                        viz.quad[3] = new Vector3d(timenext, nvalueYnext[1], nvalueZnext[1]);
                        result.Add(viz);

                        viz         = new VizData();
                        viz.data    = data;
                        viz.quad[0] = new Vector3d(time, nvalueY[1], nvalueZ[0]);
                        viz.quad[1] = new Vector3d(time, nvalueY[0], nvalueZ[0]);
                        viz.quad[2] = new Vector3d(timenext, nvalueYnext[0], nvalueZnext[0]);
                        viz.quad[3] = new Vector3d(timenext, nvalueYnext[1], nvalueZnext[0]);
                        result.Add(viz);

                        viz         = new VizData();
                        viz.data    = data;
                        viz.quad[0] = new Vector3d(time, nvalueY[1], nvalueZ[0]);
                        viz.quad[1] = new Vector3d(time, nvalueY[1], nvalueZ[1]);
                        viz.quad[2] = new Vector3d(timenext, nvalueYnext[1], nvalueZnext[1]);
                        viz.quad[3] = new Vector3d(timenext, nvalueYnext[1], nvalueZnext[0]);
                        result.Add(viz);

                        viz         = new VizData();
                        viz.data    = data;
                        viz.quad[0] = new Vector3d(time, nvalueY[0], nvalueZ[0]);
                        viz.quad[1] = new Vector3d(time, nvalueY[0], nvalueZ[1]);
                        viz.quad[2] = new Vector3d(timenext, nvalueYnext[0], nvalueZnext[1]);
                        viz.quad[3] = new Vector3d(timenext, nvalueYnext[0], nvalueZnext[0]);
                        result.Add(viz);
                    }
                }
                else
                {
                    if (searchIndexAxis)
                    {
                        // X-Y are variables
                        double         index  = NormalizeAlongAxis(data.searchIndex, 2) * searchZDepth;
                        DoubleInterval valueX = axisValue[0].Eval(varValues);
                        DoubleInterval valueY = axisValue[1].Eval(varValues);

                        double[] nvalueX = NormalizeAlongAxis(valueX, 0);
                        double[] nvalueY = NormalizeAlongAxis(valueY, 1);

                        VizData viz = new VizData();
                        viz.data    = data;
                        viz.quad[0] = new Vector3d(nvalueX[1], nvalueY[0], index);
                        viz.quad[1] = new Vector3d(nvalueX[0], nvalueY[0], index);
                        viz.quad[2] = new Vector3d(nvalueX[0], nvalueY[1], index);
                        viz.quad[3] = new Vector3d(nvalueX[1], nvalueY[1], index);
                        result.Add(viz);
                    }
                }
            }

            return(result);
        }
コード例 #2
0
ファイル: ServiceImpl.cs プロジェクト: berak/cs
        public bool doQuery(PropertyGrid grid)
        {
            data = (VizData)grid.SelectedObject; ;
            string res = viz.cataloguesData(data.Target, data.Radius, data.Unit, data.Text);
            try
            {
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(res);
                //XmlNodeList root = doc.DocumentElement.ChildNodes;//SelectNodes("VOTABLE");
                //object[] o = new object[root.Count];
                //int i=0;
                //foreach (XmlNode n in root)
                //{
                //    o[i++] = n.InnerXml;
                //}
                //grid.SelectedObjects = o;
                grid.SelectedObject = doc.DocumentElement.FirstChild;
                return true;
            }
            catch (Exception) {}

            OutData x = new OutData();
            x.Result = res;
            grid.SelectedObject = x;
            return (x.Result != null);
        }