public void PrimitiveStructure(out VertexPositionColorTexture[] vertices, out short[] indeces) { List <VertexPositionColorTexture> vertexList = new List <VertexPositionColorTexture>(); List <short> indexList = new List <short>(); //Cut down a bit on boilerplate by adding a method void AddVertexIndex(Vector2 position, Vector2 TextureCoords) { indexList.Add((short)vertexList.Count); vertexList.Add(new VertexPositionColorTexture(new Vector3(position, 0), Color, TextureCoords)); } for (int i = 0; i <= RectangleCount; i++) { float progress = i / (float)RectangleCount; progress *= SlashProgress; float angle = MathHelper.Lerp(AngleRange.X, AngleRange.Y, progress); Vector2 minDistPoint = BasePosition + (DirectionUnit.RotatedBy(angle) * StartDistance); Vector2 maxDistPoint = BasePosition + (DirectionUnit.RotatedBy(angle) * EndDistance); AddVertexIndex(maxDistPoint, new Vector2(progress, 1)); AddVertexIndex(minDistPoint, new Vector2(progress, 0)); } vertices = vertexList.ToArray(); indeces = indexList.ToArray(); }
public Plan() { this.angleUnitsField = DirectionUnit.Degree; this.areaUnitsField = AreaUnit.Squaremeter; this.distanceUnitsField = DistanceUnit.Meter; this.directionFormatField = DirectionFormat.northazimuth; this.lineParametersField = CadastralLineParameter.bearingAndDistance; this.distanceAtGroundField = true; this.combinedGridFactorField = 1; this.trueMidBearingField = false; this.accuracyField = 0; this.oIDField = 0; this.internalAnglesField = false; }
void drawtool_DrawComplete(object sender, DrawEventArgs e) { e.Geometry.SpatialReference = MyMap.SpatialReference; Graphic graphic = new Graphic() { Geometry = e.Geometry }; if (e.Geometry is MapPoint) { graphic.Symbol = LayoutRoot.Resources["DrawPointSymbol"] as SimpleMarkerSymbol; } else if (e.Geometry is Polyline) { graphic.Symbol = LayoutRoot.Resources["DrawPolylineSymbol"] as SimpleLineSymbol; } else if (e.Geometry is Polygon || e.Geometry is Envelope) { graphic.Symbol = LayoutRoot.Resources["DrawPolygonSymbol"] as SimpleFillSymbol; } drawGraphicsLayer.Graphics.Add(graphic); draw.IsEnabled = false; Geometry fromGeometry = null; Geometry toGeometry = null; switch (mensurationOperation) { case MensurationOperation.DistanceAndAngle: case MensurationOperation.HeightFromBaseAndTop: case MensurationOperation.HeightFromBaseAndTopShadow: case MensurationOperation.HeightFromTopAndTopShadow: fromGeometry = (e.Geometry as Polyline).Paths[0][0]; fromGeometry.SpatialReference = MyMap.SpatialReference; toGeometry = (e.Geometry as Polyline).Paths[0][1]; toGeometry.SpatialReference = MyMap.SpatialReference; break; case MensurationOperation.AreaAndPerimeter: case MensurationOperation.Centroid: case MensurationOperation.Point: fromGeometry = e.Geometry; break; } esriUnits?LinearUnit = null; switch (comboLinearUnit.SelectedIndex) { case 0: LinearUnit = esriUnits.esriUnknownUnits; break; case 1: LinearUnit = esriUnits.esriInches; break; case 2: LinearUnit = esriUnits.esriPoints; break; case 3: LinearUnit = esriUnits.esriFeet; break; case 4: LinearUnit = esriUnits.esriYards; break; case 5: LinearUnit = esriUnits.esriMiles; break; case 6: LinearUnit = esriUnits.esriNauticalMiles; break; case 7: LinearUnit = esriUnits.esriMillimeters; break; case 8: LinearUnit = esriUnits.esriCentimeters; break; case 9: LinearUnit = esriUnits.esriMeters; break; case 10: LinearUnit = esriUnits.esriKilometers; break; case 11: LinearUnit = esriUnits.esriDecimalDegrees; break; case 12: LinearUnit = esriUnits.esriDecimeters; break; } DirectionUnit AngularUnit = DirectionUnit.Default; switch (comboAngularUnit.SelectedIndex) { case 0: AngularUnit = DirectionUnit.Default; break; case 1: AngularUnit = DirectionUnit.Radians; break; case 2: AngularUnit = DirectionUnit.DecimalDegrees; break; case 3: AngularUnit = DirectionUnit.DegreesMinutesSeconds; break; case 4: AngularUnit = DirectionUnit.Gradians; break; case 5: AngularUnit = DirectionUnit.Gons; break; } AreaUnit AreaUnits = AreaUnit.Default; switch (comboAreaUnit.SelectedIndex) { case 0: AreaUnits = AreaUnit.Default; break; case 1: AreaUnits = AreaUnit.SquareInches; break; case 2: AreaUnits = AreaUnit.SquareFeet; break; case 3: AreaUnits = AreaUnit.SquareYards; break; case 4: AreaUnits = AreaUnit.Acres; break; case 5: AreaUnits = AreaUnit.SquareMiles; break; case 6: AreaUnits = AreaUnit.SquareMillimeters; break; case 7: AreaUnits = AreaUnit.SquareCentimeters; break; case 8: AreaUnits = AreaUnit.SquareDecimeters; break; case 9: AreaUnits = AreaUnit.SquareMeters; break; case 10: AreaUnits = AreaUnit.Ares; break; case 11: AreaUnits = AreaUnit.Hectares; break; case 12: AreaUnits = AreaUnit.SquareKilometers; break; } if (!mensurationTask.IsBusy) { switch (mensurationOperation) { case MensurationOperation.AreaAndPerimeter: MensurationAreaParameter p1 = new MensurationAreaParameter(); p1.LinearUnit = LinearUnit; p1.AreaUnits = AreaUnits; mensurationTask.AreaAndPerimeterAsync(fromGeometry as Polygon, p1); break; case MensurationOperation.Centroid: MensurationPointParameter p3 = new MensurationPointParameter(); mensurationTask.CentroidAsync(fromGeometry as Polygon, p3); break; case MensurationOperation.DistanceAndAngle: MensurationLengthParameter p5 = new MensurationLengthParameter(); p5.LinearUnit = LinearUnit; p5.AngularUnit = AngularUnit; mensurationTask.DistanceAndAngleAsync(fromGeometry as MapPoint, toGeometry as MapPoint, p5); break; case MensurationOperation.Point: MensurationPointParameter p7 = new MensurationPointParameter(); mensurationTask.PointAsync(fromGeometry as MapPoint, p7); break; case MensurationOperation.HeightFromBaseAndTop: MensurationHeightParameter p9 = new MensurationHeightParameter(); p9.LinearUnit = LinearUnit; mensurationTask.HeightFromBaseAndTopAsync(fromGeometry as MapPoint, toGeometry as MapPoint, p9); break; case MensurationOperation.HeightFromBaseAndTopShadow: MensurationHeightParameter p10 = new MensurationHeightParameter(); p10.LinearUnit = LinearUnit; mensurationTask.HeightFromBaseAndTopShadowAsync(fromGeometry as MapPoint, toGeometry as MapPoint, p10); break; case MensurationOperation.HeightFromTopAndTopShadow: MensurationHeightParameter p11 = new MensurationHeightParameter(); p11.LinearUnit = LinearUnit; mensurationTask.HeightFromTopAndTopShadowAsync(fromGeometry as MapPoint, toGeometry as MapPoint, p11); break; } } }