浏览问题
等待回复
精选文章
申请试用
资源中心
漏洞修复
注册
|
登录
SuperMap技术问答社区
我要
提问
智能客服
首页
/
浏览问题
/
组件GIS
/
问题详情
如何在三维球面场景中画圆
argentum
28EXP
2017年12月19日
想实现的是在三维场景中画圆,但是m_sceneControl.Action = Action3D.CreatePolygon中没有看见画圆的事件,怎么才能画圆呢
三维
net
画圆
请
登录
或者
注册
后回答这个问题。
1个回答
您好,这个只能在SceneControl.Tracked 事件或SceneControl.Trackeing事件去捕捉您绘制的对象,然后再把捕捉到的对象添加到跟踪图层显示。
胡林
5,985EXP
2017年12月19日
先这么写:
GeoCircle3D georegion3d = e.Geometry as GeoCircle3D;
然后在在SceneControl.Trackeing事件中这么写:
GeoCircle3D georegion3d = e.Geometry as GeoCircle3D;
GeoStyle3D style3d = new GeoStyle3D();
style3d.FillMode = FillMode3D.LineAndFill;
style3d.LineWidth = 2;
style3d.LineColor = Color.White;
georegion3d.Style3D = style3d;
m_sceneControl.Scene.TrackingLayer.Add(geomodel, "region3d");
但是这么写就会出错,我怎么去捕捉我绘制的对象正好是个圆呢
去tracked事件捕获完整对象,另外你选择的绘制模式是绘制面对象的,不是绘制圆的。
但是绘制模式中时没有绘制圆的
那你直接注册鼠标点击事件,点击第一个点作为圆的中心,点击第二个点,计算与第一个点的距离,作为圆的半径,这就就可以构造出来。
我去试了下,计算出来的距离是度的距离,怎么才能算出半径是米的距离呢
刚刚试了一下比较简单的方式,你用Action3D.MeasureDistance去绘制起点好终点,再到scenecontrol.Tracked事件里面去获取绘制的对象的长度,单位是米。
还有没有其他的办法呢,就是获取了这条线几何对象,怎么去得到它的长度,单位为米
方案如下:
1.刚刚上面说过了
2.点击一个点,另外直接指定一个半径来构造三维圆
3.先对获取到的点做投影转换,得到以米为坐标单位的点,再去计算两点之间的距离
另外 GeoCircle3D是模型对象。
那要想添加圆,是添加GeoCircle对象?
建议你在iDesktop里面绘制对象看看哪种对象是你想要构造的,然后看看它们的构造方法。
刚刚想到一个算距离的接口:Geometrist.ComputeGeodesicDistance这个是根据地球曲率来计算出两点之间的测地线(曲线距离),但是点距离比较小的时候,直线距离和测地线的距离几乎是一致的。
这个地球曲率便是相应坐标系下的曲率?
这个方法传参数的时候会让你传参考体的长轴和扁率
那便是目标坐标系下的长轴和扁率?
这种方法能求出线长度吗
Geometrist.ComputeLength
这个返回的是线对象,你自己测试一下获取线长度单位是不是米
请
登录
或者
注册
后再添加评论。
智能推荐
相关问题
相关文章
推荐教程
Android三维场景如何画一个圆面
uegeocircle 画圆的问题
如何在三维平面场景中画圆或多边形并实现拉伸?
如何在三维场景中画圆和长方形
C#开发如何在场景中画箭头
想在三维平面场景中画圆并实现拉伸,有相关示例吗?
使用代码在场景中添加球体圆锥柱体等含有曲面的要素
平面场景和球面场景初始化
热门文章
查看更多>
关注我们
超图软件官网
SuperMap Online
地图慧
帮助中心
备案信息
技术资源中心
...