概要
Cesium中已经自带了多种形状的绘制,但是对于一些特殊的形状,需要我们自行定义。形状都是由点、线、面组成,对于复杂的图形其实可以拆解成多个简易形状组合而成。比如箭头可以看出是三角形和长方形的组合,但是这样做的话绘制的代码可能也会变复杂。所以,还是用点位直接描述最好,当然也可以用顶点描述。此处就用粗箭头来分析,如下图
其中,红色的点表示鼠标的点位,称为控制点,蓝色的则是形状点。分成控制点和形状点的目的是为了再次编辑的需要,比如方向错了,可以拖拽控制点编辑。当控制点达到两个时,以第一个点作为参考点,1号形状点就在控制点的正上方,7号形状点则在正下方,依次类推3、4、5号形状点,我们以1号控制点画一个圆,即可计算3、5号形状点的夹角。此种方法需要设定一些参数辅助,比如:箭头的夹角、长度等等,这些参数也可以让形状变得更灵活。如果webgl还行,可以直接用顶点构建自定义的Primitive。等有时间,准备把visio里的大部分图形实现一遍。因为用过Openlayers,里面的图形基本都可以总结为边框+填充,但是Cesium中Outline并不是那么容易,所以设计上均是参考Openlayers里面的Draw
效果
Cesium中实现燕尾箭头、双向箭头等绘制