Exemplo n.º 1
0
        public void OnMouseMove(Point pt, Viewport3D viewport3d, Int32 nModelIndex)
        {
            if (nModelIndex != -1)
            {
                var meshGeometry = Model3D.GetGeometry(viewport3d, nModelIndex);

                if (meshGeometry != null)
                {
                    var pt2 = TransformMatrix.ScreenPtToViewportPt(pt, viewport3d);
                    _x2 = pt2.X;
                    _y2 = pt2.Y;
                    SetRect();
                    UpdatePositions(meshGeometry);
                }
            }
        }
Exemplo n.º 2
0
        // add the axes mesh to the Mesh3D array
        // if you are using the projection matrix which is not uniform along all the axess, you need change this function
        public void AddAxesMeshes(ArrayList meshs)
        {
            if (!m_bUseAxes)
            {
                return;
            }

            float radius = (m_xAxisLength + m_yAxisLength + m_zAxisLength) / (3 * m_axisLengthWidthRatio);

            Mesh3D xAxisCylinder = new Cylinder3D(radius, radius, m_xAxisLength, 6);

            xAxisCylinder.SetColor(m_axisColor);
            TransformMatrix.Transform(xAxisCylinder, new Point3D(m_xAxisCenter + m_xAxisLength / 2, m_yAxisCenter, m_zAxisCenter), 0, 90);
            meshs.Add(xAxisCylinder);

            Mesh3D xAxisCone = new Cone3D(2 * radius, 2 * radius, radius * 5, 6);

            xAxisCone.SetColor(m_axisColor);
            TransformMatrix.Transform(xAxisCone, new Point3D(m_xAxisCenter + m_xAxisLength, m_yAxisCenter, m_zAxisCenter), 0, 90);
            meshs.Add(xAxisCone);

            Mesh3D yAxisCylinder = new Cylinder3D(radius, radius, m_yAxisLength, 6);

            yAxisCylinder.SetColor(m_axisColor);
            TransformMatrix.Transform(yAxisCylinder, new Point3D(m_xAxisCenter, m_yAxisCenter + m_yAxisLength / 2, m_zAxisCenter), 90, 90);
            meshs.Add(yAxisCylinder);

            Mesh3D yAxisCone = new Cone3D(2 * radius, 2 * radius, radius * 5, 6);

            yAxisCone.SetColor(m_axisColor);
            TransformMatrix.Transform(yAxisCone, new Point3D(m_xAxisCenter, m_yAxisCenter + m_yAxisLength, m_zAxisCenter), 90, 90);
            meshs.Add(yAxisCone);

            Mesh3D zAxisCylinder = new Cylinder3D(radius, radius, m_zAxisLength, 6);

            zAxisCylinder.SetColor(m_axisColor);
            TransformMatrix.Transform(zAxisCylinder, new Point3D(m_xAxisCenter, m_yAxisCenter, m_zAxisCenter + m_zAxisLength / 2), 0, 0);
            meshs.Add(zAxisCylinder);

            Mesh3D zAxisCone = new Cone3D(2 * radius, 2 * radius, radius * 5, 6);

            zAxisCone.SetColor(m_axisColor);
            TransformMatrix.Transform(zAxisCone, new Point3D(m_xAxisCenter, m_yAxisCenter, m_zAxisCenter + m_zAxisLength), 0, 0);
            meshs.Add(zAxisCone);
        }
Exemplo n.º 3
0
        // add the axes mesh to the Mesh3D array
        // if you are using the projection matrix which is not uniform along all the axess, you need change this function
        public void AddAxesMeshes(ArrayList meshs)
        {
            if (!_mBUseAxes)
            {
                return;
            }

            var radius = (_mXAxisLength + _mYAxisLength + _mZAxisLength) / (3 * m_axisLengthWidthRatio);

            Mesh3D xAxisCylinder = new Cylinder3D(radius, radius, _mXAxisLength, 6);

            xAxisCylinder.SetColor(MAxisColor);
            TransformMatrix.Transform(xAxisCylinder, new Point3D(_mXAxisCenter + _mXAxisLength / 2, _mYAxisCenter, _mZAxisCenter), 0, 90);
            meshs.Add(xAxisCylinder);

            Mesh3D xAxisCone = new Cone3D(2 * radius, 2 * radius, radius * 5, 6);

            xAxisCone.SetColor(MAxisColor);
            TransformMatrix.Transform(xAxisCone, new Point3D(_mXAxisCenter + _mXAxisLength, _mYAxisCenter, _mZAxisCenter), 0, 90);
            meshs.Add(xAxisCone);

            Mesh3D yAxisCylinder = new Cylinder3D(radius, radius, _mYAxisLength, 6);

            yAxisCylinder.SetColor(MAxisColor);
            TransformMatrix.Transform(yAxisCylinder, new Point3D(_mXAxisCenter, _mYAxisCenter + _mYAxisLength / 2, _mZAxisCenter), 90, 90);
            meshs.Add(yAxisCylinder);

            Mesh3D yAxisCone = new Cone3D(2 * radius, 2 * radius, radius * 5, 6);

            yAxisCone.SetColor(MAxisColor);
            TransformMatrix.Transform(yAxisCone, new Point3D(_mXAxisCenter, _mYAxisCenter + _mYAxisLength, _mZAxisCenter), 90, 90);
            meshs.Add(yAxisCone);

            Mesh3D zAxisCylinder = new Cylinder3D(radius, radius, _mZAxisLength, 6);

            zAxisCylinder.SetColor(MAxisColor);
            TransformMatrix.Transform(zAxisCylinder, new Point3D(_mXAxisCenter, _mYAxisCenter, _mZAxisCenter + _mZAxisLength / 2), 0, 0);
            meshs.Add(zAxisCylinder);

            Mesh3D zAxisCone = new Cone3D(2 * radius, 2 * radius, radius * 5, 6);

            zAxisCone.SetColor(MAxisColor);
            TransformMatrix.Transform(zAxisCone, new Point3D(_mXAxisCenter, _mYAxisCenter, _mZAxisCenter + _mZAxisLength), 0, 0);
            meshs.Add(zAxisCone);
        }
Exemplo n.º 4
0
        public override void Select(ViewportRect rect, TransformMatrix matrix, Viewport3D viewport3d)
        {
            var nDotNo = GetDataNo();

            if (nDotNo != 0)
            {
                var xMin = rect.MinX();
                var xMax = rect.MaxX();
                var yMin = rect.MinY();
                var yMax = rect.MaxY();

                for (var i = 0; i < nDotNo; i++)
                {
                    var pt = matrix.VertexToViewportPt(new Point3D(_vertices[i].X, _vertices[i].Y, _vertices[i].Z), viewport3d);
                    _vertices[i].IsSelected = (pt.X > xMin) && (pt.X < xMax) && (pt.Y > yMin) && (pt.Y < yMax);
                }
            }
        }
Exemplo n.º 5
0
        public void AddAxesMeshes(List <Mesh3D> meshs)
        {
            if (_bUseAxes)
            {
                var radius = (_xAxisLength + _yAxisLength + _zAxisLength) / (3 * _axisLengthWidthRatio);

                var xAxisCylinder = new Cylinder3D(radius, radius, _xAxisLength, 6);
                xAxisCylinder.SetColor(_axisColor);
                TransformMatrix.Transform(xAxisCylinder, new Point3D(_xAxisCenter + _xAxisLength / 2, _yAxisCenter, _zAxisCenter), 0, 90);
                meshs.Add(xAxisCylinder);

                var xAxisCone = new Cone3D(2 * radius, 2 * radius, radius * 5, 6);
                xAxisCone.SetColor(_axisColor);
                TransformMatrix.Transform(xAxisCone, new Point3D(_xAxisCenter + _xAxisLength, _yAxisCenter, _zAxisCenter), 0, 90);
                meshs.Add(xAxisCone);

                var yAxisCylinder = new Cylinder3D(radius, radius, _yAxisLength, 6);
                yAxisCylinder.SetColor(_axisColor);
                TransformMatrix.Transform(yAxisCylinder, new Point3D(_xAxisCenter, _yAxisCenter + _yAxisLength / 2, _zAxisCenter), 90, 90);
                meshs.Add(yAxisCylinder);

                var yAxisCone = new Cone3D(2 * radius, 2 * radius, radius * 5, 6);
                yAxisCone.SetColor(_axisColor);
                TransformMatrix.Transform(yAxisCone, new Point3D(_xAxisCenter, _yAxisCenter + _yAxisLength, _zAxisCenter), 90, 90);
                meshs.Add(yAxisCone);

                var zAxisCylinder = new Cylinder3D(radius, radius, _zAxisLength, 6);
                zAxisCylinder.SetColor(_axisColor);
                TransformMatrix.Transform(zAxisCylinder, new Point3D(_xAxisCenter, _yAxisCenter, _zAxisCenter + _zAxisLength / 2), 0, 0);
                meshs.Add(zAxisCylinder);

                var zAxisCone = new Cone3D(2 * radius, 2 * radius, radius * 5, 6);
                zAxisCone.SetColor(_axisColor);
                TransformMatrix.Transform(zAxisCone, new Point3D(_xAxisCenter, _yAxisCenter, _zAxisCenter + _zAxisLength), 0, 0);
                meshs.Add(zAxisCone);
            }
        }
Exemplo n.º 6
0
 // select
 public virtual void Select(ViewportRect rect, TransformMatrix matrix, Viewport3D viewport3d)
 {
 }
Exemplo n.º 7
0
        // convert the 3D scatter plot into a array of Mesh3D object
        public ArrayList GetMeshes()
        {
            var nDotNo = GetDataNo();

            if (nDotNo == 0)
            {
                return(null);
            }
            var meshs = new ArrayList();

            var nVertIndex = 0;

            for (var i = 0; i < nDotNo; i++)
            {
                var plotItem = Get(i);
                if (plotItem == null)
                {
                    continue;
                }
                var    nType = plotItem.shape % ShapeNo;
                var    w     = plotItem.w;
                var    h     = plotItem.h;
                Mesh3D dot;
                MVertices[i].nMinI = nVertIndex;
                switch (nType)
                {
                case (int)Shape.Bar:
                    dot = new Bar3D(0, 0, 0, w, w, h);
                    break;

                case (int)Shape.Cone:
                    dot = new Cone3D(w, w, h, 7);
                    break;

                case (int)Shape.Cylinder:
                    dot = new Cylinder3D(w, w, h, 7);
                    break;

                case (int)Shape.Ellipse:
                    dot = new Ellipse3D(w, w, h, 7);
                    break;

                case (int)Shape.Pyramid:
                    dot = new Pyramid3D(w, w, h);
                    break;

                default:
                    dot = new Bar3D(0, 0, 0, w, w, h);
                    break;
                }
                nVertIndex        += dot.GetVertexNo();
                MVertices[i].nMaxI = nVertIndex - 1;

                TransformMatrix.Transform(dot, new Point3D(plotItem.x, plotItem.y, plotItem.z), 0, 0);
                dot.SetColor(plotItem.color);
                meshs.Add(dot);
            }
            AddAxesMeshes(meshs);

            return(meshs);
        }