public void Render(Plotter3D p)
        {
            foreach (Domino d in dominoArray)
            {
                d.Render(p);

                p.IsPenDown = false;
                p.Forward(distanceBetweenDominoes);
                p.IsPenDown = true;
            }
        }
Exemple #2
0
        private void btnRotateSquareAroundCenter_Click(object sender, EventArgs e)
        {
            using (Graphics g = this.CreateGraphics())
            {
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                for (int angle = 0; angle <= 360; angle += 3)
                {
                    using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(g))
                    {
                        System.Threading.Thread.Sleep(50);
                        g.Clear(this.BackColor);

                        p.Location = StartLocation;

                        // Move to the center of the square
                        p.PenUp();
                        p.Forward(25);
                        p.TurnRight(90);
                        p.Forward(25);

                        p.TurnRight(angle);

                        // Retrace your steps to move back to the starting point
                        p.TurnRight(180);
                        p.Forward(25);
                        p.TurnLeft(90);
                        p.Forward(25);
                        p.TurnLeft(180);
                        p.PenDown();

                        DrawSquare(p, 50);
                    }
                }
            }
        }
        private void btnRotateSquareAroundCenter_Click(object sender, EventArgs e)
        {
            using (Graphics g = this.CreateGraphics())
            {
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                for (int angle = 0; angle <= 360; angle += 3)
                {
                    using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(g))
                    {
                        System.Threading.Thread.Sleep(50);
                        g.Clear(this.BackColor);

                        p.Location = new CPI.Plot3D.Point3D(150, 150, 0);

                        // Move to the center of the square
                        p.PenUp();
                        p.Forward(25);
                        p.TurnRight(90);
                        p.Forward(25);

                        p.TurnRight(angle);

                        // Retrace your steps to move back to the starting point
                        p.TurnRight(180);
                        p.Forward(25);
                        p.TurnLeft(90);
                        p.Forward(25);
                        p.TurnLeft(180);
                        p.PenDown();

                        DrawSquare(p, 50);
                    }
                }
            }
        }
Exemple #4
0
        private void btnRotateLine_Click(object sender, EventArgs e)
        {
            using (Graphics g = this.CreateGraphics())
            {
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                for (int angle = 0; angle <= 30; angle += 3)
                {
                    using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(g, CameraLocatioin))
                    {
                        //txtTest.Text = angle.ToString();

                        System.Threading.Thread.Sleep(100);

                        g.Clear(this.BackColor);

                        p.Location = StartLocation;

                        p.TurnDown(angle);

                        p.PenDown();

                        Point3D P_start = p.Location;
                        p.Forward(100);
                        Point3D P_end = p.Location;

                        txtTest.Text = P_start.ToString() + P_end.ToString();
                    }
                }
            }
        }
Exemple #5
0
        private void btnDrawCube_Click(object sender, EventArgs e)
        {
            using (Graphics g = this.CreateGraphics())
            {
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

                //Camera positon
                CameraLocatioin = new CPI.Plot3D.Point3D(Convert.ToInt32(txtCameraPos_X.Text), Convert.ToInt32(txtCameraPos_Y.Text), Convert.ToInt32(txtCameraPos_Z.Text));
                //Start postion
                StartLocation = new CPI.Plot3D.Point3D(Convert.ToInt32(txtStartPos_X.Text), Convert.ToInt32(txtStartPos_Y.Text), Convert.ToInt32(txtStartPos_Z.Text));


                using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(g, CameraLocatioin))
                {
                    System.Threading.Thread.Sleep(50);
                    g.Clear(this.BackColor);

                    //Camera positon
                    p.Location = StartLocation;


                    g.TranslateTransform(StartLocation.X, StartLocation.Y);
                    //1.2. Повернуть на широту
                    g.RotateTransform(45.0F);
                    //1.3. Вернуть начало координат в начало
                    g.TranslateTransform(-StartLocation.X, -StartLocation.Y);

                    DrawCube(p, 50, 100, 50);
                }
            }
        }
Exemple #6
0
        public void displayWinningLine(Form form)
        {
            Game   game   = (Game)form;
            Board  board  = game.getBoard();
            Player winner = game.getWinner();

            using (Graphics g = form.CreateGraphics())
                using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(g))
                {
                    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                    g.Clear(form.BackColor);

                    boardAngle = defaultBoardAngle;

                    int i = 0;

                    for (int q = 0; q < (planeDistance * 4); q += planeDistance)
                    {
                        p.Location = new CPI.Plot3D.Point3D(defaultXCord, defaultYCord + q, 0);
                        DrawRhombusPanel(p, i, board);
                        i++;
                    }
                    if (winner != null)
                    {
                        drawWinningLine(p, board, winner);
                    }
                }
        }
 public void DrawSquare(Plotter3D p, float sideLength)
 {
     for (int i = 0; i < 4; i++)
     {
         p.Forward(sideLength);  // Draw a line sideLength long
         p.TurnRight(90);        // Turn right 90 degrees
     }
 }
Exemple #8
0
        private void btnRotateVertical_Click(object sender, EventArgs e)
        {
            using (Graphics g = this.CreateGraphics())
            {
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                for (int angle = 0; angle <= 360; angle += 3)
                {
                    using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(g, CameraLocatioin))
                    {
                        System.Threading.Thread.Sleep(50);
                        g.Clear(this.BackColor);

                        g.TranslateTransform(StartLocation.X, StartLocation.Y);
                        //1.2. Повернуть на широту
                        g.RotateTransform(45.0F);
                        //1.3. Вернуть начало координат в начало
                        g.TranslateTransform(-StartLocation.X, -StartLocation.Y);

                        //Обозначим цетр
                        g.FillEllipse(new SolidBrush(Color.Red), StartLocation.X - 2, StartLocation.Y - 2, 4, 4);


                        p.Location = StartLocation;

                        // Move to the center of the square
                        p.PenUp();
                        p.Forward(25);
                        p.TurnRight(90);
                        p.Forward(50);
                        p.TurnDown(90);
                        p.Forward(25);
                        p.TurnUp(180);

                        p.TurnRight(angle);

                        // Retrace your steps to move back to the starting point
                        p.Forward(25);
                        p.TurnRight(180);
                        p.TurnUp(90);
                        p.Forward(50);
                        p.TurnLeft(90);
                        p.Forward(25);
                        p.TurnLeft(180);
                        p.PenDown();

                        //p.TurnDown(angle);

                        DrawCube(p, 50, 100, 50);

                        g.TranslateTransform(StartLocation.X, StartLocation.Y);
                        //1.2. Повернуть на широту
                        g.RotateTransform(-45.0F);
                        //1.3. Вернуть начало координат в начало
                        g.TranslateTransform(-StartLocation.X, -StartLocation.Y);
                    }
                }
            }
        }
 public void DrawCube(Plotter3D p, float sideLength)
 {
     for (int i = 0; i < 4; i++)
     {
         DrawSquare(p, sideLength);
         p.Forward(sideLength);
         p.TurnDown(90);
     }
 }
Exemple #10
0
        private void btnDrawSquare_Click(object sender, EventArgs e)
        {
            using (Graphics g = this.CreateGraphics())
                using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(g))
                {
                    g.Clear(this.BackColor);

                    p.Location = new CPI.Plot3D.Point3D(150, 150, 0);
                    DrawSquare(p, 50);
                }
        }
Exemple #11
0
        private void btnDrawSquare_Click(object sender, EventArgs e)
        {
            using (Graphics g = this.CreateGraphics())
            using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(g))
            {
                g.Clear(this.BackColor);

                p.Location = new CPI.Plot3D.Point3D(150, 150, 0);
                DrawSquare(p, 50);
            }
        }
Exemple #12
0
        private void btnDominoSetUpX_Click(object sender, EventArgs e)
        {
            using (Graphics g = this.CreateGraphics())
            {
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                g.Clear(this.BackColor);
                using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(g, new Point3D(350, 100, -600)))
                {
                    p.Location = new Point3D(100, 200, 0);

                    Dominoes d = new Dominoes(10, 60, 120, 16, 60);

                    d.Render(p);
                }
            }
        }
Exemple #13
0
        private void btnDrawSphere_Click(object sender, EventArgs e)
        {
            using (Graphics g = this.CreateGraphics())
            {
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(g, new Point3D(200, 200, -600)))
                {
                    System.Threading.Thread.Sleep(50);
                    g.Clear(this.BackColor);

                    p.Location = new CPI.Plot3D.Point3D(150, 150, 0);

                    DrawSphere(p, 100);
                }
            }
        }
Exemple #14
0
		private void button1_Click(object sender, EventArgs e)
		{
			string filePath = txtFilePath.Text;
			Dictionary<int, ClusterObject> m_lstData = DataLoader.LoadData(filePath);

			using (Graphics g = pnlGraph.CreateGraphics())
			using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(g))
			{
				g.Clear(this.BackColor);
			//	p.Location = new CPI.Plot3D.Point3D(0, 0, 0);
			//	DrawSquare(p, 400);

				foreach (KeyValuePair<int, ClusterObject> kvp in m_lstData)
				{
					p.Location = new CPI.Plot3D.Point3D((int)kvp.Value.Coordinates[0], (int)kvp.Value.Coordinates[1], 0);
					DrawSquare(p, 1, 1000); // 1000: To get black. Any number greater than 12 will do...
				}
			}
		}
Exemple #15
0
        private void btnRotateSquareAroundEdge_Click(object sender, EventArgs e)
        {
            using (Graphics g = this.CreateGraphics())
            {
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                for (int angle = 0; angle <= 360; angle += 3)
                {
                    using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(g))
                    {
                        System.Threading.Thread.Sleep(50);
                        g.Clear(this.BackColor);

                        p.Location = StartLocation;
                        p.TurnRight(angle);

                        DrawSquare(p, 50);
                    }
                }
            }
        }
Exemple #16
0
        private void drawSpotMap(Form form)
        {
            using (Graphics g = form.CreateGraphics())
                using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(g))
                {
                    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                    g.Clear(form.BackColor);
                    p.PenWidth = (float)2;
                    p.PenColor = Color.FromName("White");

                    foreach (Coordinate c in spotMap)
                    {
                        if (c != null)
                        {
                            p.Location = new CPI.Plot3D.Point3D(c.getX(), c.getY(), 0);
                            //DrawPlayerMove(p);
                        }
                    }
                }
        }
Exemple #17
0
        private void btnRotateSquareAroundEdge_Click(object sender, EventArgs e)
        {
            using (Graphics g = this.CreateGraphics())
            {
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                for (int angle = 0; angle <= 360; angle += 3)
                {
                    using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(g))
                    {
                        System.Threading.Thread.Sleep(50);
                        g.Clear(this.BackColor);

                        p.Location = new CPI.Plot3D.Point3D(150, 150, 0);
                        p.TurnRight(angle);

                        DrawSquare(p, 50);
                    }
                }
            }
        }
Exemple #18
0
        public void DrawLayersBoard(Form form, Board board)
        {
            using (Graphics g = form.CreateGraphics())
                using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(g))
                {
                    //p.PenWidth = (float)1.5;
                    p.PenWidth = (float)2;
                    p.PenColor = Color.FromName("White");

                    //g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                    g.Clear(form.BackColor);


                    for (int q = 0; q < (planeDistance * 4); q += planeDistance)
                    {
                        p.Location = new CPI.Plot3D.Point3D(defaultXCord, defaultYCord + q, 0);
                        DrawRhombusPanel(p, q, board);
                    }
                }
        }
Exemple #19
0
		private void btnRunKMeans1_Click(object sender, EventArgs e)
		{
			string filePath = txtFilePath.Text;
			Dictionary<int, ClusterObject> m_lstData = DataLoader.LoadData(filePath);

			KMeansAlgorithm kmeans = new KMeansAlgorithm();
			kmeans.K = Int32.Parse(txtClusterCount.Text);
			kmeans.FilePath = filePath;
			kmeans.Run();

			using (Graphics g = pnlGraph.CreateGraphics())
			using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(g))
			{
				g.Clear(this.BackColor);
				
				foreach (KeyValuePair<int, ClusterObject> kvp in kmeans.ClusteredData)
				{
					p.Location = new CPI.Plot3D.Point3D((int)kvp.Value.Coordinates[0], (int)kvp.Value.Coordinates[1], 0);
					DrawSquare(p, 1, kvp.Value.ClusterId);
				}
			}
		}
Exemple #20
0
        public void displayBoard(Form form, int x, int y, int z)
        {
            Game  game  = (Game)form;
            Board board = game.getBoard();

            using (Graphics g = form.CreateGraphics())
                using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(g))
                {
                    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                    g.Clear(form.BackColor);


                    int i = 0;

                    for (int q = 0; q < (planeDistance * 4); q += planeDistance)
                    {
                        p.Location = new CPI.Plot3D.Point3D(defaultXCord, defaultYCord + q, 0);
                        DrawRhombusPanel(p, i, board);
                        i++;
                    }
                    drawMovePreview(p, x, y, z, board);
                }
        }
Exemple #21
0
        private void btnSphereMultiAxisRotate_Click(object sender, EventArgs e)
        {
            using (Graphics g = this.CreateGraphics())
            {
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                for (int angle = 0; angle <= 180; angle += 3)
                {
                    using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(g, new Point3D(200, 200, -600)))
                    {
                        System.Threading.Thread.Sleep(50);
                        g.Clear(this.BackColor);

                        p.Location = new CPI.Plot3D.Point3D(150, 150, 0);

                        // Move to the center of the sphere
                        p.PenUp();
                        p.Forward(50);
                        p.TurnRight(90);
                        p.Forward(50);

                        p.TurnDown(angle * 3);
                        p.TurnRight(angle * 2);


                        // Retrace your steps to move back to the starting point
                        p.TurnLeft(180);
                        p.Forward(50);
                        p.TurnLeft(90);
                        p.Forward(50);
                        p.TurnRight(180);
                        p.PenDown();

                        DrawSphere(p, 100);
                    }
                }
            }
        }
Exemple #22
0
		public void DrawSquare(Plotter3D p, float sideLength, int clusterId)
		{
			SetColor(p, clusterId);
			DrawSquare(p, sideLength);
		}
Exemple #23
0
        private void DrawCircle(Plotter3D p, float diameter)
        {
            float radius = diameter / 2;

            // Increasing this number will create a better approximation,
            // but will require more work to draw
            int sides = 64;

            float innerAngle = 360F / sides;

            float sideLength = (float)(radius * Math.Sin(Orientation3D.DegreesToRadians(innerAngle) / 2) * 2);

            // Save the initial position and orientation of the cursor
            Point3D initialLocation = p.Location;
            Orientation3D initialOrientation = p.Orientation.Clone();

            // Move to the starting point of the circle
            p.PenUp();
            p.Forward(radius - (sideLength / 2));
            p.PenDown();

            // Draw the circle
            for (int i = 0; i < sides; i++)
            {
                p.Forward(sideLength);
                p.TurnRight(innerAngle);
            }

            // Restore the position and orientation to what they were before
            // we drew the circle
            p.Location = initialLocation;
            p.Orientation = initialOrientation;
        }
Exemple #24
0
        void dominoes_PositionChanged(object sender, EventArgs e)
        {
            using (Graphics g = this.CreateGraphics())
            {
                System.Threading.Thread.Sleep(50);
                g.Clear(SystemColors.Control);

                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                using (Plotter3D p = new Plotter3D(g, new Point3D(350, 100, -600)))
                {
                    p.Location = new Point3D(100, 200, 0);

                    p.TurnDown(dominoRotationAngle);

                    ((Dominoes)sender).Render(p);
                }
            }
        }
Exemple #25
0
        private void btnSphereMultiAxisRotate_Click(object sender, EventArgs e)
        {
            using (Graphics g = this.CreateGraphics())
            {
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                for (int angle = 0; angle <= 180; angle += 3)
                {
                    using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(g, new Point3D(200, 200, -600)))
                    {
                        System.Threading.Thread.Sleep(50);
                        g.Clear(this.BackColor);

                        p.Location = new CPI.Plot3D.Point3D(150, 150, 0);

                        // Move to the center of the sphere
                        p.PenUp();
                        p.Forward(50);
                        p.TurnRight(90);
                        p.Forward(50);

                        p.TurnDown(angle * 3);
                        p.TurnRight(angle * 2);


                        // Retrace your steps to move back to the starting point
                        p.TurnLeft(180);
                        p.Forward(50);
                        p.TurnLeft(90);
                        p.Forward(50);
                        p.TurnRight(180);
                        p.PenDown();

                        DrawSphere(p, 100);
                    }
                }
            }
        }
Exemple #26
0
		private void SetColor(Plotter3D p, int clusterId)
		{
			switch (clusterId)
			{
				case 0 :  p.Pen = new Pen(Color.Blue); break;
				case 1 :  p.Pen = new Pen(Color.Red); break;
				case 2 :  p.Pen = new Pen(Color.Green); break;
				case 3 :  p.Pen = new Pen(Color.Yellow); break;
				case 4 :  p.Pen = new Pen(Color.White); break;
				case 5 :  p.Pen = new Pen(Color.Brown); break;
				case 6 :  p.Pen = new Pen(Color.BurlyWood); break;
				case 7 :  p.Pen = new Pen(Color.LawnGreen); break;
				case 8 :  p.Pen = new Pen(Color.LightSalmon); break;
				case 9:  p.Pen = new Pen(Color.Magenta); break;
				case 10:  p.Pen = new Pen(Color.MediumTurquoise); break;
				case 11:  p.Pen = new Pen(Color.PapayaWhip); break;
				case 12: p.Pen = new Pen(Color.AliceBlue); break;
				default:  p.Pen = new Pen(Color.Black); break;
			}
		}
Exemple #27
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////
        public void DrawTelescope3D(PaintEventArgs e)
        {
            using (Graphics graphicsObj = e.Graphics)
            //using (Graphics graphicsObj = panel1.CreateGraphics())
            {
                graphicsObj.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;


                Pen grayPen   = new Pen(Color.LightGray, 1);     //цвет линии  (NOT USED)
                Pen blackPen  = new Pen(Color.Black, 3);         //цвет линии  (NOT USED)
                Pen TracePen  = new Pen(Color.Red, 2);           //цвет линии  (NOT USED)
                Pen TracePen2 = new Pen(Color.PaleVioletRed, 2); //цвет линии  (NOT USED)


                //Настройки цветов
                Pen TelescopeColor = new Pen(Color.LightGray, 1);                     //вход телескопа виден
                Pen TelescopeObjectiveVisibleColor   = Pens.Blue;                     //вход телескопа виден
                Pen TelescopeObjectiveInvisibleColor = Pens.LightBlue;                //вход телескопа невиден

                Pen        AxisColor_PhysicalSideE = new Pen(Color.LightGray, 1);     //цвет оси RA/Dec когда телескоп с восточной стороны (телескоп ПЕРЕД монтировкой)
                Pen        AxisColor_PhysicalSideW = new Pen(Color.Black, 1);         //цвет оси RA/Dec когда телескоп с западной стороны (телескоп ЗА монтировкой)
                SolidBrush AxisPoint_PhysicalSideE = new SolidBrush(Color.LightGray); //закраска
                SolidBrush AxisPoint_PhysicalSideW = new SolidBrush(Color.Black);     //закраска

                //1. Сместить и повернуть холст
                //1.1. Сместить на центр, чтобы вращение было по точке соприкосновения с телескопом
                graphicsObj.TranslateTransform(X0, Y0);
                //1.2. Повернуть на широту
                graphicsObj.RotateTransform(LatitudeGrad);
                //1.3. Вернуть начало координат в начало
                graphicsObj.TranslateTransform(-X0, -Y0);

                //Обозначим цетр
                graphicsObj.FillEllipse((PoinitingPhysicalSideE ? AxisPoint_PhysicalSideE : AxisPoint_PhysicalSideW), X0 - 2, Y0 - 2, 4, 4);

                //1. Ось RA
                Rectangle recRAAxis = new Rectangle((int)(X0 - PARAM_RAAxix_Thick / 2), (int)(Y0), (int)(PARAM_RAAxix_Thick), (int)(PARAM_RAAxix_Len));
                graphicsObj.DrawRectangle((PoinitingPhysicalSideE ? AxisColor_PhysicalSideE : AxisColor_PhysicalSideW), recRAAxis);


                using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(graphicsObj, TelescopeColor, CameraPosition))
                {
                    //System.Threading.Thread.Sleep(50);
                    //g.Clear(this.BackColor);

                    //Camera positon
                    p.Location = StartDrawingPosition;

                    //2. Ось DEC
                    p.PenUp();
                    p.TurnLeft(90);
                    p.TurnDown(90);

                    p.TurnRight(HA_mech_grad); //Rotate Hour Angle

                    p.Forward(PARAM_DecAxix_Len / 2);
                    p.TurnRight(180);
                    p.PenDown();
                    p.Forward(PARAM_DecAxix_Len, (PoinitingPhysicalSideE ? AxisColor_PhysicalSideE : AxisColor_PhysicalSideW)); //Dec axis

                    //3. Телескоп
                    p.PenUp();
                    p.TurnDown(90);
                    p.TurnRight(90);

                    p.TurnRight(DEC_mech_grad); //Rotate DEC

                    // Move to telescope start
                    p.Forward(PARAM_Telescope_Len / 2);
                    p.TurnUp(90);
                    p.Forward(PARAM_Telescope_Thick);
                    p.TurnRight(90);
                    p.Forward(PARAM_Telescope_Thick / 2);
                    p.TurnRight(90);
                    p.TurnUp(90);
                    p.PenDown();


                    // Нарисовать телескоп
                    // Нулевое направление:
                    // - точка пересеения небесного меридиана/экватора на юге
                    // - расположение трубы восточная сторона на запад
                    Draw3DCube(p, PARAM_Telescope_Len, PARAM_Telescope_Thick, PARAM_Telescope_Thick);

                    /*
                     * //dir test
                     * p.Forward(20, TracePen);
                     * p.TurnDown(90);
                     * p.Forward(20, TracePen);
                     */

                    //4. Телексоп front
                    //4.1 Point P1
                    //initial pos: верхняя (меньшая по Y, помним, что Y увеличивается вниз) передняя (ближняя, по Z) точка фермы (when in zero pos, см. выше)
                    //initial dir: вдоль фермы вниз
                    //orientation: на зрителя
                    P1           = p.Location;
                    txtP1_X.Text = P1.X.ToString();
                    txtP1_Y.Text = P1.Y.ToString();
                    txtP1_Z.Text = P1.Z.ToString();
                    //Draw3DRect(p, 3, 3, TracePen); //draw point for debug

                    //4.2 Point P2
                    //initial pos: верхняя (меньшая по Y, помним, что Y увеличивается вниз) задняя (дальняя, по Z) точка фермы (when in zero pos, см. выше)
                    //после перехода к точке dir: вдоль фермы вниз
                    //после перехода к точке orientation: на зрителя
                    //go to it
                    p.PenUp();
                    p.TurnDown(90);
                    p.Forward(PARAM_Telescope_Thick);

                    P2           = p.Location;
                    txtP2_X.Text = P2.X.ToString();
                    txtP2_Y.Text = P2.Y.ToString();
                    txtP2_Z.Text = P2.Z.ToString();
                    //p.PenDown();
                    //Draw3DRect(p, 3, 3, TracePen2);//draw point for debug
                    //p.PenUp();

                    //Return from P2 to P1
                    p.TurnUp(180);
                    p.Forward(PARAM_Telescope_Thick);
                    p.TurnDown(90);
                    p.PenDown();
                    p.TurnDown(90);

                    // Определим - виден ли вход трубы?
                    if ((P1.Z < P2.Z) && (P1.X > P2.X) || (P1.Z > P2.Z) && (P1.X > P2.X))
                    {
                        if (PoinitingSideEtoW)
                        {
                            TelescopeObjectiveVisible = true;
                        }
                        else
                        {
                            TelescopeObjectiveVisible = false;
                        }
                    }
                    else
                    {
                        if (PoinitingSideEtoW)
                        {
                            TelescopeObjectiveVisible = false;
                        }
                        else
                        {
                            TelescopeObjectiveVisible = true;
                        }
                    }


                    Draw3DRect(p, PARAM_Telescope_Thick, PARAM_Telescope_Thick, (TelescopeObjectiveVisible ? TelescopeObjectiveVisibleColor : TelescopeObjectiveInvisibleColor));


                    /*
                     * p.TurnDown(90);
                     * if (p.Location.Z < -(PARAM_Telescope_Thick+ PARAM_DecAxix_Len / 2))
                     * {
                     *  Draw3DRect(p, PARAM_Telescope_Thick, PARAM_Telescope_Thick, Pens.Blue);
                     *  //Draw3DRect(p, PARAM_Telescope_Thick, PARAM_Telescope_Thick, (PoinitingPhysicalSideE ? Pens.Blue : Pens.LightBlue));
                     * }
                     * else
                     * {
                     *  Draw3DRect(p, PARAM_Telescope_Thick, PARAM_Telescope_Thick, Pens.LightBlue);
                     * }
                     */
                    //p.Forward(20, Pens.Red);



                    ////p.TurnDown(90);
                    //if (PoinitingSideWtoE)
                    //{
                    //    p.PenUp();
                    //    p.Forward(2);
                    //    p.TurnRight(90);
                    //    p.Forward(2);
                    //    p.TurnLeft(90);
                    //    p.PenDown();

                    //    Draw3DRect(p, PARAM_Telescope_Thick - 4, PARAM_Telescope_Thick - 4, new Pen(Color.Blue));
                    //}

                    ////5. Телексоп back
                    //p.TurnLeft(90);
                    //p.Forward(2, Pens.Red);
                    //p.TurnLeft(90);
                    //p.Forward(2, Pens.Red);
                    //p.TurnDown(90);
                    //p.Forward(PARAM_Telescope_Len, Pens.Green);
                    //p.TurnDown(90);
                    //p.Forward(PARAM_Telescope_Len, Pens.Orange);
                    ////p.Forward(100, Pens.Red);
                    //Draw3DRect(p, PARAM_Telescope_Thick, PARAM_Telescope_Thick, (PoinitingSideWtoE ? Pens.Red : Pens.Red));

                    ////5. Телексоп строна к монтировке
                    //p.PenUp();
                    //p.Forward(PARAM_Telescope_Thick);
                    //p.TurnUp(90);
                    //p.PenDown();
                    //Draw3DRect(p, PARAM_Telescope_Len, PARAM_Telescope_Thick, new Pen(Color.Silver));
                }
            }
        }
Exemple #28
0
        public void DrawSphere(Plotter3D p, float diameter)
        {
            Point3D initialLocation = p.Location;
            Orientation3D initialOrientation = p.Orientation.Clone();

            for (int i = 0; i < 180; i += 20)
            {
                p.PenUp();
                p.Forward(diameter / 2);

                // Rotate appropriately
                p.TurnDown(i);

                // Go back to the starting point
                p.TurnDown(180);
                p.Forward(diameter / 2);
                p.TurnDown(180);
                p.PenDown();

                DrawCircle(p, 100);

                p.Orientation = initialOrientation.Clone();
                p.Location = initialLocation;
            }
        }
Exemple #29
0
        private void btnDominoSetUpZ_Click(object sender, EventArgs e)
        {
            using (Graphics g = this.CreateGraphics())
            {
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                g.Clear(this.BackColor);
                using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(g, new Point3D(350, 100, -600)))
                {
                    p.Location = new Point3D(100, 200, 0);

                    p.TurnDown(90);

                    Dominoes d = new Dominoes(10, 60, 120, 16, 60);

                    d.Render(p);
                }
            }
        }
        public void Render(Plotter3D p)
        {
            Point3D startLocation = p.Location;
            Orientation3D startOrientation = p.Orientation.Clone();
            bool startPenDown = p.IsPenDown;
            AngleMeasurement startAngleMeasurement = p.AngleMeasurement;

            p.AngleMeasurement = AngleMeasurement.Degrees;

            // Move to the back edge of the domino
            p.IsPenDown = false;
            p.Forward(depth);
            p.TurnUp(90);
            p.IsPenDown = startPenDown;

            // Tilt the domino accordingly
            p.Orientation.RollLeft(90 - fallAngle);

            // Draw the back surface of the domino
            p.Forward(width);
            p.TurnLeft(90);
            p.Forward(height);
            p.TurnLeft(90);
            p.Forward(width);
            p.TurnLeft(90);
            p.Forward(height);
            p.TurnLeft(90);

            // Draw the middle bits of the domino
            p.TurnUp(90);
            p.Forward(depth);
            p.TurnDown(90);
            p.IsPenDown = false;
            p.Forward(width);
            p.TurnDown(90);
            p.IsPenDown = startPenDown;
            p.Forward(depth);
            p.TurnUp(90);
            p.TurnLeft(90);
            p.IsPenDown = false;
            p.Forward(height);
            p.TurnUp(90);
            p.IsPenDown = startPenDown;
            p.Forward(depth);
            p.TurnDown(90);
            p.TurnLeft(90);
            p.IsPenDown = false;
            p.Forward(width);
            p.TurnDown(90);
            p.IsPenDown = startPenDown;
            p.Forward(depth);
            p.IsPenDown = false;
            p.TurnUp(180);
            p.Forward(depth);
            p.TurnUp(90);
            p.Orientation.RollRight(180);
            p.IsPenDown = startPenDown;

            // Draw the front of the domino
            p.Forward(width);
            p.TurnRight(90);
            p.Forward(height);
            p.TurnRight(90);
            p.Forward(width);
            p.TurnRight(90);
            p.Forward(height);

            // Return the the start orientation and location, then advance to the back edge of the domino.
            p.IsPenDown = false;
            p.Orientation = startOrientation;
            p.Location = startLocation;
            p.Forward(depth);
            p.IsPenDown = startPenDown;
            p.AngleMeasurement = startAngleMeasurement;
        }
Exemple #31
0
        private void btnDrawSphere_Click(object sender, EventArgs e)
        {
            using (Graphics g = this.CreateGraphics())
            {
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(g, new Point3D(200, 200, -600)))
                {
                    System.Threading.Thread.Sleep(50);
                    g.Clear(this.BackColor);

                    p.Location = new CPI.Plot3D.Point3D(150, 150, 0);

                    DrawSphere(p, 100);
                }
            }
        }
Exemple #32
0
//////////////////////////////////////////////////////////////////////////////////////////////////////////
        public void Draw3DTelescope(PaintEventArgs e)
        {
            using (Graphics graphicsObj = e.Graphics)
            //using (Graphics graphicsObj = panel1.CreateGraphics())
            {
                graphicsObj.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

                //Create graph objects
                SolidBrush Brush1   = new SolidBrush(Color.LightGray); //закраска
                SolidBrush RedBrush = new SolidBrush(Color.Red);       //закраска

                Pen grayPen  = new Pen(Color.LightGray, 1);            //цвет линии
                Pen blackPen = new Pen(Color.Black, 3);                //цвет линии

                //1. Сместить и повернуть холст
                //1.1. Сместить на центр, чтобы вращение было по точке соприкосновения с телескопом
                graphicsObj.TranslateTransform(X0, Y0);
                //1.2. Повернуть на широту
                graphicsObj.RotateTransform(LatitudeGrad);
                //1.3. Вернуть начало координат в начало
                graphicsObj.TranslateTransform(-X0, -Y0);

                //Обозначим цетр
                graphicsObj.FillEllipse(RedBrush, X0 - 2, Y0 - 2, 4, 4);

                //1. Ось RA
                Rectangle recRAAxis_el1 = new Rectangle((int)(X0 - PARAM_RAAxix_Thick / 2), (int)(Y0), (int)(PARAM_RAAxix_Thick), (int)(PARAM_RAAxix_Len));
                graphicsObj.DrawRectangle(Pens.Black, recRAAxis_el1);


                using (CPI.Plot3D.Plotter3D p = new CPI.Plot3D.Plotter3D(graphicsObj, new Pen(Color.Black, 1), CameraPosition))
                {
                    //System.Threading.Thread.Sleep(50);
                    //g.Clear(this.BackColor);

                    //Camera positon
                    p.Location = StartDrawingPosition;

                    //2. Ось DEC
                    p.PenUp();
                    p.TurnLeft(90);
                    p.TurnDown(90);

                    p.TurnRight(HAGrad); //Rotate Hour Angle

                    p.Forward(PARAM_DecAxix_Len / 2);
                    p.TurnRight(180);
                    p.PenDown();
                    p.Forward(PARAM_DecAxix_Len); //Dec axis

                    //3. Телескоп
                    p.PenUp();
                    p.TurnDown(90);
                    p.TurnRight(90);

                    p.TurnRight(DECGrad); //Rotate DEC

                    // Move to telescope start
                    p.Forward(PARAM_Telescope_Len / 2);
                    p.TurnUp(90);
                    p.Forward(PARAM_Telescope_Thick);
                    p.TurnRight(90);
                    p.Forward(PARAM_Telescope_Thick / 2);
                    p.TurnRight(90);
                    p.TurnUp(90);
                    p.PenDown();

                    Draw3DCube(p, PARAM_Telescope_Len, PARAM_Telescope_Thick, PARAM_Telescope_Thick);

                    //4. Телексоп front
                    p.TurnDown(90);
                    Draw3DRect(p, PARAM_Telescope_Thick, PARAM_Telescope_Thick, new Pen(Color.Blue));

                    //5. Телексоп строна к монтировке
                    p.PenUp();
                    p.Forward(PARAM_Telescope_Thick);
                    p.TurnUp(90);
                    p.PenDown();
                    Draw3DRect(p, PARAM_Telescope_Len, PARAM_Telescope_Thick, new Pen(Color.Silver));
                }
            }
        }