void calculateDataPointPositionsOnCone() { Vector2 cone2DPosition = new Vector2(transform.position.x, transform.position.z); //Vector2 cone2DPosition = new Vector2(0, 0); //Vector2 cone2DPosition = new Vector2(49.1f, 38.1f); float maxMagnitude = 0; MapDataPoint furthestPoint = new MapDataPoint(); foreach (MapDataPoint dataPoint in _dataPoints) { // Calculate the position of datapoint relative to the cone position Vector2 point2DPosition = new Vector2(dataPoint.WorldPosition.x, dataPoint.WorldPosition.z); //Debug.Log("Bar position (to 0xy): " + point2DPosition); dataPoint.ConePosition = point2DPosition - cone2DPosition; //Debug.Log("Bar position (to Cone): " + dataPoint.ConePosition); // Find the furthest datapoint float magnitude = dataPoint.ConePosition.magnitude; if (maxMagnitude < magnitude) { maxMagnitude = magnitude; furthestPoint = dataPoint; } } //Debug.Log("Max magnitude: " + maxMagnitude); //Debug.Log("Furthest point: " + furthestPoint.Name + furthestPoint.ConePosition); Debug.Log("Max magnitude: " + maxMagnitude); scaleDataPoints(maxMagnitude); //scaleDataPoints(1050); //scaleDataPoints(1); }
public void ShowInfo(MapDataPoint dataPoint) { //Show panel with info PointInfoPrefab.SetActive(true); PointInfoPrefab.transform.position = dataPoint.top; var mapData = DataLoader.data; TimeValue currentValue = dataPoint.point.values.Find(el => el.timestamp == date); if (currentValue == null) { return; } PointInfoPrefab.transform.LookAt(Camera.main.transform.position); float yAxe = PointInfoPrefab.transform.eulerAngles.y; PointInfoPrefab.transform.eulerAngles = new Vector3(0, yAxe + 180, 0); if (WithLegend) { HeightLegendCanvas.transform.position = dataPoint.bottom; HeightLegendCanvas.transform.eulerAngles = new Vector3(0, yAxe + 180, 90); HeightLegendCanvas.SetActive(true); } shownInfo = dataPoint; updateInfoPanel(dataPoint); }
private void CreatePoint(DataPoint point) { Vector2d latLng = new Vector2d(point.point[1], point.point[0]); Vector3 pos = map.GeoToWorldPosition(latLng, false); GameObject dataPoint = Instantiate(PointPrefab, pos, Quaternion.identity, pointsGroup.transform); MapDataPoint parameters = dataPoint.GetComponent <MapDataPoint>(); var secondaryField = DataLoader.secondaryField; var primaryField = DataLoader.primaryField; parameters.point = point; TimeValue currentValue = point.values.Find(el => el.timestamp == date); if (primaryVizualizer != null) { if (currentValue != null) { FieldValue val = currentValue.fields.Find(el => el.id == primaryField.id); if (val != null) { parameters.height = primaryVizualizer.getVizualization(float.Parse(val.value, CultureInfo.InvariantCulture)); } else { parameters.height = 0; } } else { parameters.height = 0; } } else { parameters.height = 1; } if (secondaryDiscreteVizualizer != null && currentValue != null) { FieldValue val = currentValue.fields.Find(el => el.id == secondaryField.id); if (val != null) { parameters.color = secondaryDiscreteVizualizer.getVizualization(val.value); } } else if (rangeColorVizualizer != null && currentValue != null) { FieldValue val = currentValue.fields.Find(el => el.id == secondaryField.id); if (val != null) { parameters.color = rangeColorVizualizer.getVizualization(float.Parse(val.value, CultureInfo.InvariantCulture)); } } parameters.scale = pointsScale; }
void UpdatePointTime(GameObject datapoint) { MapDataPoint dataPointScript = datapoint.GetComponent <MapDataPoint>(); MapDataPoint parameters = datapoint.GetComponent <MapDataPoint>(); var secondaryField = DataLoader.secondaryField; var primaryField = DataLoader.primaryField; TimeValue currentValue = dataPointScript.point.values.Find(el => el.timestamp == date); if (primaryVizualizer != null) { if (currentValue != null) { FieldValue val = currentValue.fields.Find(el => el.id == primaryField.id); if (val != null) { parameters.height = primaryVizualizer.getVizualization(float.Parse(val.value, CultureInfo.InvariantCulture)); } else { parameters.height = 0; } } else { parameters.height = 0; } } else { parameters.height = 1; } if (secondaryDiscreteVizualizer != null && currentValue != null) { FieldValue val = currentValue.fields.Find(el => el.id == secondaryField.id); if (val != null) { parameters.color = secondaryDiscreteVizualizer.getVizualization(val.value); } } else if (rangeColorVizualizer != null && currentValue != null) { FieldValue val = currentValue.fields.Find(el => el.id == secondaryField.id); if (val != null) { parameters.color = rangeColorVizualizer.getVizualization(float.Parse(val.value, CultureInfo.InvariantCulture)); } } }
void drawProjectionLine(MapDataPoint point, GameObject bar) { var lineWidth = 0.05f; LineRenderer line = bar.GetComponentInChildren <LineRenderer>(); line.enabled = true; line.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; var traperzoid = bar.GetComponent <TrapezoidBarBehavior>(); line.positionCount = 2; lineWidth = 0.005514949f * 2; line.startWidth = lineWidth; line.endWidth = lineWidth * Vector3.Distance(traperzoid.BottomBar().transform.position, point.WorldPosition) / 8.0f; line.SetPosition(0, traperzoid.BottomBar().transform.position); line.SetPosition(1, point.WorldPosition); }
void loadTestDataset(Dataset dataset) { StudyPlot.Instance.setUserId(_userId); StudyPlot.Instance.setDataset(dataset, _participantGroup); string data = System.IO.File.ReadAllText(StudyPlot.Instance.getDatasetFile()); string[] lines = data.Split('\n'); List <MapDataPoint> dataPoints = new List <MapDataPoint>(); float maxValue = 1; DataPointsManager.Instance.mapDataPoints.Clear(); // Skip the header for (int i = 1; i < lines.Length; i++) { string[] lineData = lines[i].Split(','); if (lineData.Length < 4) { continue; } MapDataPoint point = new MapDataPoint(); point.Name = "Point " + lineData[0]; point.Value = float.Parse(lineData[3]); var rawX = float.Parse(lineData[1]); var rawY = float.Parse(lineData[2]); Debug.Log("Point " + point.Name + ", X: " + rawX + ", Y: " + rawY); point.RawPosition = new Vector2(rawX, rawY); //Debug.Log("Pos " + i + " : " + point.WorldPosition.ToString()); DataPointsManager.Instance.mapDataPoints.Add(point); } needToReloadBars = true; Debug.Log("Dataset: " + dataset + " - " + StudyPlot.Instance._questions.Count + " questions" + " - " + DataPointsManager.Instance.mapDataPoints.Count + " datapoints"); DataPointsManager.Instance.maxValue = maxValue; }
void updateInfoPanel(MapDataPoint dataPoint) { var mapData = DataLoader.data; TimeValue currentValue = dataPoint.point.values.Find(el => el.timestamp == date); List <string[]> lstValue = currentValue.fields.Select(el => { var def = mapData.dataset.fields.Find(f => f.id == el.id); if (def != null) { return(new string[] { def.displayname, el.value }); } else { return(new string[] { el.id, el.value }); } }).ToList(); foreach (Transform text in PanelTransform) { Destroy(text.gameObject); } lstValue.ForEach(txt => { GameObject textInfoDescription = Instantiate(PointInfoText, PanelTransform.position, PointInfoPrefab.transform.rotation, PanelTransform); textInfoDescription.GetComponent <Text>().text = txt[0]; GameObject textInfoValue = Instantiate(PointInfoText, PanelTransform.position, PointInfoPrefab.transform.rotation, PanelTransform); textInfoValue.GetComponent <Text>().text = txt[1]; }); var layout = PanelTransform.GetComponent <GridLayoutGroup>(); var height = lstValue.Count * layout.cellSize.y + layout.padding.vertical; var panelRect = PanelTransform.GetComponent <RectTransform>(); panelRect.sizeDelta = new Vector2(panelRect.sizeDelta.x, height); var distanceToFloor = (PointInfoPrefab.transform.position.y - ((height + layout.padding.bottom) * PointInfoPrefab.transform.localScale.y)) - dataPoint.bottom.y; if (distanceToFloor < 0) { PointInfoPrefab.transform.Translate(new Vector3(0, Math.Abs(distanceToFloor), 0)); } }
public void HideInfo() { PointInfoPrefab.SetActive(false); shownInfo = null; HideLegend(); }
private void UpdatePoint(GameObject datapoint) { MapDataPoint dataPointScript = datapoint.GetComponent <MapDataPoint>(); Vector2d latLng = new Vector2d(dataPointScript.point.point[1], dataPointScript.point.point[0]); Vector3 pos = map.GeoToWorldPosition(latLng, false); datapoint.transform.position = pos; dataPointScript.ResetPosition(); if (boundingBox.Contains(pos)) { datapoint.SetActive(true); } else { datapoint.SetActive(false); } if (zoomMap != null && zoomMap.activeSelf) { Bounds zoombb = zoomMap.GetComponent <DataHandler>().boundingBox; zoombb.min = new Vector3(zoombb.min.x, transform.position.y - 0.1f, zoombb.min.z); if (zoombb.Contains(pos)) { dataPointScript.muted = true; } else { dataPointScript.muted = false; } } else { dataPointScript.muted = false; } MapDataPoint parameters = datapoint.GetComponent <MapDataPoint>(); var secondaryField = DataLoader.secondaryField; var primaryField = DataLoader.primaryField; TimeValue currentValue = dataPointScript.point.values.Find(el => el.timestamp == date); if (primaryVizualizer != null) { if (currentValue != null) { FieldValue val = currentValue.fields.Find(el => el.id == primaryField.id); if (val != null) { parameters.height = primaryVizualizer.getVizualization(float.Parse(val.value, CultureInfo.InvariantCulture)); } else { parameters.height = 0; } } else { parameters.height = 0; } } else { parameters.height = 1; } if (secondaryDiscreteVizualizer != null && currentValue != null) { FieldValue val = currentValue.fields.Find(el => el.id == secondaryField.id); if (val != null) { parameters.color = secondaryDiscreteVizualizer.getVizualization(val.value); } } else if (rangeColorVizualizer != null && currentValue != null) { FieldValue val = currentValue.fields.Find(el => el.id == secondaryField.id); if (val != null) { parameters.color = rangeColorVizualizer.getVizualization(float.Parse(val.value, CultureInfo.InvariantCulture)); } } }