Example #1
0
        public override bool TryGetPosForItemIndex(int itemIndex, out Vector3 pos)
        {
            pos = Vector3.zero;
            if (itemIndex < _presenter.SelectedMinItem || itemIndex >= _presenter.SelectedMaxItem)
            {
                return(false);
            }
            int   dimNum   = _presenter.NumberOfDimensions;
            var   zoomArea = _zoomMax - ZoomMin;
            float valueX   = VisViewHelper.GetItemValue(_presenter, 0, itemIndex, true, _displayRelativeValues);
            float valueY   = VisViewHelper.GetItemValue(_presenter, 1, itemIndex, true, _displayRelativeValues);
            float valueZ   = dimNum < 3 ? 0 : VisViewHelper.GetItemValue(_presenter, 2, itemIndex, true, _displayRelativeValues);

            if (valueX < _zoomMin.x || valueX > _zoomMax.x ||
                valueY < _zoomMin.y || valueY > _zoomMax.y ||
                (dimNum > 2 && (valueZ < _zoomMin.z || valueZ > _zoomMax.z))
                )
            {
                return(false);
            }
            pos = new Vector3(
                (valueX - _zoomMin.x) / zoomArea.x * _size.x,
                (valueY - _zoomMin.y) / zoomArea.y * _size.y,
                (valueZ - _zoomMin.z) / zoomArea.z * _size.z
                );
            return(true);
        }
Example #2
0
        protected override void RebuildVisualization()
        {
            if (_presenter == null || _presenter.NumberOfDimensions < 2)
            {
                Debug.LogError("Presenter is either null or has not enough dimensions to represent this visualization");
                return;
            }
            List <Vector3> vertices = new List <Vector3>();
            List <int>     indices  = new List <int>();
            List <Color>   colors   = new List <Color>();

            //int offset = (int)_presenter.SelectedMinItem;
            //int length = (int)_presenter.SelectedMaxItem - offset;
            int dimNum   = _presenter.NumberOfDimensions;
            var zoomArea = _zoomMax - ZoomMin;

            for (int itemIndex = _presenter.SelectedMinItem; itemIndex < _presenter.SelectedMaxItem; itemIndex++)
            {
                float valueX = VisViewHelper.GetItemValue(_presenter, 0, itemIndex, true, _displayRelativeValues);
                float valueY = VisViewHelper.GetItemValue(_presenter, 1, itemIndex, true, _displayRelativeValues);
                float valueZ = dimNum < 3 ? 0 : VisViewHelper.GetItemValue(_presenter, 2, itemIndex, true, _displayRelativeValues);

                if (valueX < _zoomMin.x || valueX > _zoomMax.x ||
                    valueY < _zoomMin.y || valueY > _zoomMax.y ||
                    (dimNum > 2 && (valueZ < _zoomMin.z || valueZ > _zoomMax.z))
                    )
                {
                    continue;
                }
                vertices.Add(new Vector3(
                                 (valueX - _zoomMin.x) / zoomArea.x * _size.x,
                                 (valueY - _zoomMin.y) / zoomArea.y * _size.y,
                                 (valueZ - _zoomMin.z) / zoomArea.z * _size.z
                                 ));
                colors.Add(_style.GetColorContinous(_presenter.IsItemHighlighted(itemIndex), valueX, valueY, valueZ));
                indices.Add(vertices.Count - 1);
            }

            var mesh = new Mesh();

            mesh.name     = "ScatterplotMesh";
            mesh.vertices = vertices.ToArray();
            mesh.colors   = colors.ToArray();
            mesh.SetIndices(indices.ToArray(), MeshTopology.Points, 0);

            var meshFilter = GetComponent <MeshFilter>();

            Destroy(meshFilter.sharedMesh);
            meshFilter.sharedMesh = mesh;
        }