ArcGIS Pro SDK (九)几何 2 坐标
创始人
2025-01-10 20:08:23
0

ArcGIS Pro SDK (九)几何 2 坐标

文章目录

  • ArcGIS Pro SDK (九)几何 2 坐标
    • 1 矢量极坐标
    • 2 获取矢量倾角
    • 3 获取矢量方位角
    • 4 向量运算
    • 5 2D 矢量操作
    • 6 生成器

环境:Visual Studio 2022 + .NET6 + ArcGIS Pro SDK 3.0

1 矢量极坐标

Coordinate3D polarVector = new Coordinate3D(0, 7, 0); Tuple polarComponents = polarVector.QueryPolarComponents(); // polarComponents.Item1 = 0  (方位角) // polarComponents.Item2 = 0 (倾角) // polarComponents.Item3 = 7 (大小)  polarVector.SetPolarComponents(Math.PI / 4, Math.PI / 2, 8); polarComponents = polarVector.QueryComponents(); // polarComponents.Item1 = 0 (x) // polarComponents.Item2 = 0 (y) // polarComponents.Item3 = 7 (z) 

2 获取矢量倾角

Coordinate3D v = new Coordinate3D(0, 0, 7); double inclination = v.Inclination;         // inclination = PI/2  v.SetComponents(-2, -3, 0); inclination = v.Inclination;                // inclination = 0  v.SetComponents(0, 0, -2); inclination = v.Inclination;                // inclination = -PI/2 

3 获取矢量方位角

Coordinate3D vector = new Coordinate3D(0, 7, 0); double azimuth = vector.Azimuth;      // azimuth = 0  vector.SetComponents(1, 1, 42); azimuth = vector.Azimuth; double degrees = AngularUnit.Degrees.ConvertFromRadians(azimuth);       // degrees = 45  vector.SetComponents(-8, 8, 2); azimuth = vector.Azimuth; degrees = AngularUnit.Degrees.ConvertFromRadians(azimuth);              // degrees = 315 

4 向量运算

// 简单的3D向量 Coordinate3D v = new Coordinate3D(0, 1, 0); // v.Magnitude = 1  Coordinate3D other = new Coordinate3D(-1, 0, 0); // other.Magnitude = -1  double dotProduct = v.DotProduct(other);      // dotProduct = 0  Coordinate3D crossProduct = v.CrossProduct(other); // crossProduct.X = 0 // crossProduct.Y = 0 // crossProduct.Z = 1  Coordinate3D addVector = v.AddCoordinate3D(other); // addVector.X = -1 // addVector.Y = 1 // addVector.Z = 0  // 绕x轴旋转 Coordinate3D w = v; w.Rotate(Math.PI, other); // w.X = 0 // w.Y = -1 // w.Z = 0  w.Scale(0.5); // w.X = 0 // w.Y = -0.5 // w.Z = 0  w.Scale(-4); // w.X = 0 // w.Y = 2 // w.Z = 0 // w.Magnitude = 2  w.Move(3, 2, 0); // w.X = 3 // w.Y = 4 // w.Z = 0 // w.Magnitude = 5  Coordinate3D emptyVector = new Coordinate3D(); // emptyVector = (0, 0, 0) emptyVector.SetEmpty(); // emptyVector = (Nan, Nan, Nan)  Coordinate3D c1 = new Coordinate3D(2, 3, 4); Coordinate3D c2 = new Coordinate3D(9, -1, 3);  var result_add = c1 + c2; // result_add = (11, 2, 7) var result_sub = c1 - c2; // result_sub = (-7, 4, 1)  var b = result_sub != result_add; // b = true  result_add = emptyVector + c1; // result_add = (Nan, Nan, Nan)  b = result_add == emptyVector; // b = true 

5 2D 矢量操作

Coordinate2D v = new Coordinate2D(0, 1); // v.Magnitude = 1  Coordinate2D other = new Coordinate2D(-1, 0); double dotProduct = v.DotProduct(other); // dotProduct = 0  Coordinate2D w = v + other; // w = (-1, 1)  w += other; // w = (-2, 1)  w -= other; // w = (-1, 1)  w = v; w.Rotate(Math.PI, other); // w = (-2, -1)  w = other;  w.Scale(-4); // w = (4, 0) // w.Magnitude = 4  w.Move(-1, 4); // w = (3, 4) // w.Magnitude = 5  w.Move(-6, -1); Tuple components = w.QueryComponents(); // components = (-3, 3) // w.Magnitude = 3 * Math.Sqrt(2)  Coordinate2D unitVector = w.GetUnitVector(); // w = (-Math.Sqrt(2) / 2, Math.Sqrt(2) / 2) // w.Magnitude = 1  w.SetComponents(3, 4); 

6 生成器

// 点列表 List points = new List {   MapPointBuilderEx.CreateMapPoint(0, 0, 2, 3, 1),   MapPointBuilderEx.CreateMapPoint(1, 1, 5, 6),   MapPointBuilderEx.CreateMapPoint(2, 1, 6),   MapPointBuilderEx.CreateMapPoint(0, 0) };  // 将有属性,因为它是通过便捷方法创建的 Polyline polylineWithAttrs = PolylineBuilderEx.CreatePolyline(points); bool hasZ = polylineWithAttrs.HasZ;          // hasZ = true bool hasM = polylineWithAttrs.HasM;          // hasM = true bool hasID = polylineWithAttrs.HasID;        // hasID = true  // 将没有属性,因为它被指定为参数 Polyline polylineWithoutAttrs =    PolylineBuilderEx.CreatePolyline(points, AttributeFlags.None); hasZ = polylineWithoutAttrs.HasZ;          // hasZ = false hasM = polylineWithoutAttrs.HasM;          // hasM = false hasID = polylineWithoutAttrs.HasID;        // hasID = false  // 将有属性,因为它是通过便捷方法创建的 Polygon polygonWithAttrs = PolygonBuilderEx.CreatePolygon(points); hasZ = polygonWithAttrs.HasZ;               // hasZ = true hasM = polygonWithAttrs.HasM;               // hasM = true hasID = polygonWithAttrs.HasID;             // hasID = true  // 将没有属性,因为它被指定为参数 Polygon polygonWithoutAttrs =        PolygonBuilderEx.CreatePolygon(points, AttributeFlags.None); hasZ = polygonWithoutAttrs.HasZ;               // hasZ = false hasM = polygonWithoutAttrs.HasM;               // hasM = false hasID = polygonWithoutAttrs.HasID;             // hasID = false  // 将没有属性,因为它被指定为参数 PolylineBuilderEx polylineB =             new PolylineBuilderEx(points, AttributeFlags.None); hasZ = polylineB.HasZ;                      // hasZ = false hasM = polylineB.HasM;                      // hasM = false hasID = polylineB.HasID;                    // hasID = false  // 将有属性,因为它传递了一个带属性的折线 polylineB = new PolylineBuilderEx(polylineWithAttrs); hasZ = polylineB.HasZ;                      // hasZ = true hasM = polylineB.HasM;                      // hasM = true hasID = polylineB.HasID;                    // hasID = true  // 将没有属性,因为它传递了一个不带属性的折线 polylineB = new PolylineBuilderEx(polylineWithoutAttrs); hasZ = polylineB.HasZ;                      // hasZ = false hasM = polylineB.HasM;                      // hasM = false hasID = polylineB.HasID;                    // hasID = false  // 将没有属性,因为它被指定为参数 PolygonBuilderEx polygonB = new PolygonBuilderEx(points, AttributeFlags.None); hasZ = polygonB.HasZ;                       // hasZ = false hasM = polygonB.HasM;                       // hasM = false hasID = polygonB.HasID;                     // hasID = false  // 将有属性,因为它传递了一个带属性的多边形 polygonB = new PolygonBuilderEx(polygonWithAttrs); hasZ = polygonB.HasZ;                       // hasZ = true hasM = polygonB.HasM;                       // hasM = true hasID = polygonB.HasID;                     // hasID = true  // 将没有属性,因为它传递了一个不带属性的多边形 polygonB = new PolygonBuilderEx(polygonWithoutAttrs); hasZ = polygonB.HasZ;                       // hasZ = true hasM = polygonB.HasM;                       // hasM = true hasID = polygonB.HasID;                     // hasID = true 

相关内容

热门资讯

详情一下!乐酷副厅外卖辅助,传... 详情一下!乐酷副厅外卖辅助,传送屋高仿版辅助,本来真的有挂(哔哩哔哩)乐酷副厅外卖辅助脚本下载中分为...
科普一下!超凡辅助软件,永胜联... 科普一下!超凡辅助软件,永胜联盟辅助器,原来真的是有挂(哔哩哔哩)1、进入到超凡辅助软件是否有挂之后...
专业一下!随意玩有没有辅助,全... 专业一下!随意玩有没有辅助,全民比鸡bug,切实是有挂(哔哩哔哩)在进入随意玩有没有辅助软件靠谱后,...
了解一下!打哈儿辅助软件,方片... 了解一下!打哈儿辅助软件,方片十三张脚本,原来是有挂(哔哩哔哩)1、超多福利:超高返利,海量正版游戏...
教你一下!决战卡五星辅助ios... 教你一下!决战卡五星辅助ios,微乐家乡自建房辅助app,一直真的是有挂(哔哩哔哩)微乐家乡自建房辅...
辅助一下!微乐降序自建房辅助a... 辅助一下!微乐降序自建房辅助app,战神辅助官网,真是真的有挂(哔哩哔哩)1、进入到微乐降序自建房辅...
详细一下!微乐辅助靠谱麻,新5... 详细一下!微乐辅助靠谱麻,新518互游脚本下载,真是真的是有挂(哔哩哔哩)1、玩家可以在新518互游...
了解一下!广西优乐免费辅助,途... 了解一下!广西优乐免费辅助,途游辅助软件网站,一直是有挂(哔哩哔哩)1.途游辅助软件网站 选牌创建新...
辅助一下!创思维激k辅助器免费... 辅助一下!创思维激k辅助器免费,玖天乐游辅助,本来有挂(哔哩哔哩)1、上手简单,内置详细流程视频教学...
必备一下!四川游戏家园通用辅助... 必备一下!四川游戏家园通用辅助,葫芦娃七子降妖破解版,确实存在有挂(哔哩哔哩)1、玩家可以在四川游戏...