Пример #1
0
 void ShowDynamicGraph() {
     new Thread(() => {
         var line = new Line(1.0f, Color.Black.ToGLColor(), new GLPoint[] { }) {
             IsDynamic = true
         };
         var i = 0;
         _graph.Display(new GLRect(i - 60, -20, 120, 50), false);
         BeginInvoke((Action)delegate {
             _graph.Lines.Add(line);
         });
         while (true) {
             var point = new GLPoint(i++, Math.Sin(i / 100.0) * 10 - 5);
             int i1 = i;
             BeginInvoke((Action)delegate {
                 if (line.Points.Count > 3000) {
                     line.RemovePoint(0, update: false);
                 }
                 line.AddPoint(point);
                 if(Math.Abs((i1 / 100.0) % 1.0) < 0.001) {
                     _graph.Markers.Clear();
                     _graph.Markers.Add(new GraphText(i1, Math.Sin(i1 / 100.0) * 10 -5,i1.ToString()));
                 }
                 _graph.Display(new GLRect(i1 - 60, -20, 120, 50), false);
             });
             Thread.Sleep(10);
         }
     }).Start();
 }
Пример #2
0
 void ShowDynamicGraph()
 {
     new Thread(() => {
         var line = new Line(1.0f, Color.Black.ToGLColor(), new GLPoint[] { })
         {
             IsDynamic = true
         };
         var i = 0;
         _graph.Display(new GLRect(i - 60, -20, 120, 50), false);
         BeginInvoke((Action) delegate {
             _graph.Lines.Add(line);
         });
         while (true)
         {
             var point = new GLPoint(i++, Math.Sin(i / 100.0) * 10 - 5);
             int i1    = i;
             BeginInvoke((Action) delegate {
                 if (line.Points.Count > 3000)
                 {
                     line.RemovePoint(0, update: false);
                 }
                 line.AddPoint(point);
                 if (Math.Abs((i1 / 100.0) % 1.0) < 0.001)
                 {
                     _graph.Markers.Clear();
                     _graph.Markers.Add(new GraphText(i1, Math.Sin(i1 / 100.0) * 10 - 5, i1.ToString()));
                 }
                 _graph.Display(new GLRect(i1 - 60, -20, 120, 50), false);
             });
             Thread.Sleep(10);
         }
     }).Start();
 }
Пример #3
0
 public SatisfiedMarker(GLPoint pt,
                        PersistentTexture textures)
 {
     _pt      = pt;
     _texture = textures;
     Visible  = true;
 }
Пример #4
0
        public ThresholdMarker(ILineGraph graph, GLPoint location, GLSize size, GLColor color) {
            _graph = graph;
            _rectangle = new Rectangle(color, true, location, size);
            _rectangle.Origin = new GLPoint(_rectangle.Origin.X - size.Width / 2.0, _rectangle.Origin.Y - size.Height / 2.0);

            graph.Control.MouseMove += OnMouseMove;
            graph.Control.MouseDown += OnMouseDown;
            graph.Control.MouseUp += OnMouseUp;
        }
Пример #5
0
        public ThresholdMarker(ILineGraph graph, GLPoint location, GLSize size, GLColor color)
        {
            _graph            = graph;
            _rectangle        = new Rectangle(color, true, location, size);
            _rectangle.Origin = new GLPoint(_rectangle.Origin.X - size.Width / 2.0, _rectangle.Origin.Y - size.Height / 2.0);

            graph.Control.MouseMove += OnMouseMove;
            graph.Control.MouseDown += OnMouseDown;
            graph.Control.MouseUp   += OnMouseUp;
        }
Пример #6
0
        public bool CheckPosition(GLPoint position)
        {
            var nearestBonusItem = GetNearestBonusItem(position);

            if (nearestBonusItem != null)
            {
                var dist = position.DistanceToPoint(nearestBonusItem.Position);
                if (dist < TileWidth)
                {
                    PickUpBonusItem(nearestBonusItem);
                }
            }

            var finishPosition = LabPointToScenePoint(EndPos);
            var distToFinish   = position.DistanceToPoint(finishPosition);

            if (distToFinish < TileWidth)
            {
                if (!Locked)
                {
                    Level++;

                    Task.Run(() =>
                    {
                        var player = Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current;
                        player.Load("levelcomplete.mp3");
                        player.Play();
                    });

                    return(true);
                }
                else
                {
                    if (!_nearLockedDoors)
                    {
                        Task.Run(() =>
                        {
                            var player = Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current;
                            player.Load("doorclosed.mp3");
                            player.Play();
                        });

                        _nearLockedDoors = true;
                    }
                }
            }
            else
            {
                _nearLockedDoors = false;
            }

            return(false);
        }
Пример #7
0
        public GLObject GetNearestBonusItem(GLPoint p)
        {
            var      minDist = double.MaxValue;
            GLObject res     = null;

            foreach (var item in BonusItems)
            {
                var dist = p.DistanceToPoint(item.Value.Position);
                if (dist < minDist)
                {
                    minDist = dist;
                    res     = item.Value;
                }
            }

            return(res);
        }
Пример #8
0
        private void button1_Click(object sender, EventArgs e)
        {
            //DateTime T1 = get_T1(get_CURR());
            DateTime T1   = new DateTime(2015, 04, 24, 06, 0, 0);
            int      Size = 43200 * 7;

            GraphicLine.GLPoint[] a1 = new GLPoint[Size]; //720 min + 1

            Random rnd_v = new Random();

            //for (int i = 0; i < a1.Length; i++)
            for (int i = 0; i < Size; i++)
            {
                //if (i < 40 || i > 65)
                //a1[i] = new GLPoint((i * 60)/10800 , T1.AddMinutes(i));
                a1[i] = new GLPoint(((i * 60) / (43200 * 7)), T1.AddSeconds(i));
            }

            XmlSerializer serializer = new XmlSerializer(typeof(GLPoint[]));

            //TextWriter writer = new StreamWriter(@"C:\Users\serzh\Documents\GitHub\CalandrePresentation\CalanderPresentation\bin\x86\toHost\graphicLine1Data.xml");
            TextWriter writer = new StreamWriter(@"C:\Users\serzh\VirtualBox VMs\mutualSSD\CalanderPresentation\graphicLine1Data.xml");

            serializer.Serialize(writer, a1);
            writer.Dispose();


            //if (File.Exists(@"C:\Users\serzh\Documents\GitHub\CalandrePresentation\CalanderPresentation\bin\DebugToHost\GraphicLineData.xml"))
            //{
            //    XmlSerializer XmlSerializer1 = new XmlSerializer(typeof(Settings));
            //    TextReader reader1 = new StreamReader("settings.xml");
            //    Settings1 = (Settings)XmlSerializer1.Deserialize(reader1);
            //    reader1.Dispose();

            //    this.textBox1.Text = Settings1.SQLConnectionString;
            //    this.radioButton1.Checked = (Settings1.SQLWindowsAuthorization) ? true : false;
            //    this.radioButton2.Checked = (Settings1.SQLWindowsAuthorization) ? false : true;
            //    this.textBox5.Text = Settings1.SQLLogin;
            //    this.textBox6.Text = Settings1.SQLPassword;

            //    this.textBox3.Text = Settings1.OPCConnectionString;
            //    this.textBox4.Text = Settings1.OPCRingsCounterName;
            //}
        }
Пример #9
0
        void ShowScaledGraph() {
            _graph.Display(new GLRect(-50,-50,100,100), true);

            var random = new Random();
            var dataInMilliseconds = new GLPoint[] {
                new GLPoint(0, 0), 
                new GLPoint(3000, random.NextDouble()), 
                new GLPoint(6000, random.NextDouble()), 
                new GLPoint(9000, random.NextDouble()), 
                new GLPoint(12000, random.NextDouble()), 
                new GLPoint(15000, random.NextDouble()), 
                new GLPoint(18000, random.NextDouble()), 
                new GLPoint(21000, random.NextDouble()), 
            };

            var dataInSeconds = dataInMilliseconds.Select(p => new GLPoint(p.X/1000, p.Y)).ToArray();



            _graph.Lines.Add(new Line(1.0f, System.Drawing.Color.Blue.ToGLColor(), dataInSeconds));
        }
Пример #10
0
        void ShowScaledGraph()
        {
            _graph.Display(new GLRect(-50, -50, 100, 100), true);

            var random             = new Random();
            var dataInMilliseconds = new GLPoint[] {
                new GLPoint(0, 0),
                new GLPoint(3000, random.NextDouble()),
                new GLPoint(6000, random.NextDouble()),
                new GLPoint(9000, random.NextDouble()),
                new GLPoint(12000, random.NextDouble()),
                new GLPoint(15000, random.NextDouble()),
                new GLPoint(18000, random.NextDouble()),
                new GLPoint(21000, random.NextDouble()),
            };

            var dataInSeconds = dataInMilliseconds.Select(p => new GLPoint(p.X / 1000, p.Y)).ToArray();



            _graph.Lines.Add(new Line(1.0f, System.Drawing.Color.Blue.ToGLColor(), dataInSeconds));
        }
Пример #11
0
        public override bool OnTouchEvent(MotionEvent e)
        {
            var x = e.GetX();
            var y = e.GetY();

            base.OnTouchEvent(e);

            if (e.Action == MotionEventActions.Down)
            {
                _fingerTapCoordinates.X = x;
                _fingerTapCoordinates.Y = y;

                Logger.Info($"Down: {x}:{y}");
            }
            else
            if (e.Action == MotionEventActions.Pointer2Down)
            {
                // second finger down

                Logger.Info($"Pointer2Down: {x}:{y}");
            }
            else
            if (e.Action == MotionEventActions.Move)
            {
                if (e.PointerCount > 1)
                {
                    if (!_zoom)
                    {
                        _zoom = true;

                        _fingerTapCoordinates  = new GLPoint(e.GetX(0), e.GetY(0), 0);
                        _finger2TapCoordinates = new GLPoint(e.GetX(1), e.GetY(1), 0);
                    }
                    else
                    {
                        Logger.Info($"Zoom:");

                        var originalDistance = _fingerTapCoordinates.DistanceToPoint(_finger2TapCoordinates);

                        var actualFinger1TapCoordinates = new GLPoint(e.GetX(0), e.GetY(0), 0);
                        var actualFinger2TapCoordinates = new GLPoint(e.GetX(1), e.GetY(1), 0);

                        var newDistance = actualFinger1TapCoordinates.DistanceToPoint(actualFinger2TapCoordinates);

                        if (originalDistance != 0)
                        {
                            var ratio = newDistance / originalDistance;

                            if (ratio < 0.9)
                            {
                                _scene.Magnify(0.9f);
                            }
                            else
                            if (ratio > 1.1)
                            {
                                _scene.Magnify(1.1f);
                            }

                            Logger.Info($"Move: PinchToZoom, originalDistance: {originalDistance:N2}, newDistance: {newDistance:N2}, ratio: {ratio}");
                        }
                    }
                }
                else if (!_zoom)
                {
                    Logger.Info($"Move:");

                    float xdiff = ((float)_fingerTapCoordinates.X - x);
                    float ydiff = ((float)_fingerTapCoordinates.Y - y);

                    _scene.Observer.Rotation.X += ydiff;
                    _scene.Observer.Rotation.Y += xdiff;

                    _fingerTapCoordinates.X = x;
                    _fingerTapCoordinates.Y = y;
                }
            }

            if (e.Action == MotionEventActions.Up)
            {
                _zoom = false;
            }

            return(true);
        }
Пример #12
0
 public SatisfiedMarker(GLPoint pt,
                        PersistentTexture textures) {
     _pt = pt;
     _texture = textures;
     Visible = true;
 }
Пример #13
0
        public GLPoint LabPointToScenePoint(Point P)
        {
            var glP = new GLPoint((TileWidth) * P.X, 10, (TileWidth) * (P.Y) + TileWidth / 2);

            return(glP);
        }
Пример #14
0
        private void PaintingView_RenderFrame(object sender, FrameEventArgs e)
        {
            if (_lastTapCrossMove != null)
            {
                if (_lastTapCrossMove.Right > 10)
                {
                    _scene.Go(DirectionEnum.Right, _lastTapCrossMove.Right / 50f);
                }
                if (_lastTapCrossMove.Left > 10)
                {
                    _scene.Go(DirectionEnum.Left, _lastTapCrossMove.Left / 50f);
                }
                if (_lastTapCrossMove.Top > 10)
                {
                    _scene.Go(DirectionEnum.Forward, _lastTapCrossMove.Top / 10f);
                }
                if (_lastTapCrossMove.Bottom > 10)
                {
                    _scene.Go(DirectionEnum.Backward, _lastTapCrossMove.Bottom / 10f);
                }
            }

            if (_lastTapRotateMove != null)
            {
                if (_lastTapRotateMove.Right > 10)
                {
                    _scene.Observer.Rotation.Y += _lastTapRotateMove.Right / 10f;
                }
                if (_lastTapRotateMove.Left > 10)
                {
                    _scene.Observer.Rotation.Y -= _lastTapRotateMove.Left / 10f;
                }
            }

            var labyrinth = (_scene.GetObjectByName("labyrinth") as GLLabyrinthObj);

            var newLevel = labyrinth.CheckPosition(_scene.Observer.Position);

            UpdateDisplays(newLevel ? "Loading new level ..." : null);
            if (newLevel)
            {
                NewLevel();
            }


            // adding light above Observer

            GL.Light(All.Light0, All.Position, _scene.Observer.Position.ToFloatArray());

            GL.Light(All.Light0, All.Ambient, new float[] { 1f, 1f, 1f, 1f });
            GL.Light(All.Light0, All.Diffuse, new float[] { 1f, 1f, 1f, 1f });
            GL.Light(All.Light0, All.Specular, new float[] { 1f, 1f, 1f, 1f });

            // adding light in front of Observer
            var pBefore = GLPoint.GetMovedPointByAngle(_scene.Observer.Position, labyrinth.TileWidth, _scene.Observer.Rotation.Y, true);

            GL.Light(All.Light1, All.Position, pBefore.ToFloatArray());

            GL.Light(All.Light1, All.Ambient, new float[] { 1f, 1f, 1f, 1f });
            GL.Light(All.Light1, All.Diffuse, new float[] { 1f, 1f, 1f, 1f });
            GL.Light(All.Light1, All.Specular, new float[] { 1f, 1f, 1f, 1f });

            GL.Material(All.Front, All.Ambient, new float[] { 1f, 1f, 1f });
            GL.Material(All.Front, All.Diffuse, new float[] { 1f, 1f, 1f });
            GL.Material(All.Front, All.Specular, new float[] { 1f, 1f, 1f });
            GL.Material(All.Front, All.Shininess, 128f);


            Render();
        }