WorldWind Java 版学习:6、三角剖分过程

1、在 mouseMoved 响应事件中会得到鼠标所在的屏幕坐标,然后设置给 StereoOptionSceneController
AWTInputHandler.mouseMoved(MouseEvent) line: 516
StereoOptionSceneController(AbstractSceneController).setPickPoint(Point) line: 222

2、在 initializeDrawContext 方法中把之前得到的 pickPoint 设置给 dc
StereoOptionSceneController(AbstractSceneController).repaint() line: 334
StereoOptionSceneController(AbstractSceneController).initializeDrawContext(DrawContext) line: 399
DrawContextImpl.setPickPoint(Point) line: 367

3、在 pickTerrain 方法中把 dc 的 pickPoint 添加给 AbstractSceneController 的 pickPoints,然后对每个点进行裁剪计算,在 resolvePick 方法中计算了点所在屏幕坐标所对应的三维空间坐标,然后将 PickedObject 对象添加到 AbstractSceneController 的 pickedObjects 列表中
StereoOptionSceneController(BasicSceneController).doRepaint(DrawContext) line: 25
StereoOptionSceneController(AbstractSceneController).pick(DrawContext) line: 705
StereoOptionSceneController(AbstractSceneController).pickTerrain(DrawContext) line: 560
SectorGeometryList.pick(DrawContext, List<Point>) line: 238
RectangularTessellator$RectTile.pick(DrawContext, List<Point>) line: 277
RectangularTessellator.pick(DrawContext, RectTile, List<Point>) line: 1132
RectangularTessellator.resolvePick(DrawContext, RectangularTessellator$RectTile, Point) line: 1357
PickedObject.<init>(Point, int, Object, Angle, Angle, double, boolean) line: 60
PickedObject.setPosition(Position) line: 97

4、得到 AbstractSceneController 的 pickedObjects 后,再逐个添加到 dc 的 pickedObjects 中,此时 dc 中就有了包含位置信息的 PickedObject 对象
StereoOptionSceneController(AbstractSceneController).pick(DrawContext) line: 705
StereoOptionSceneController(AbstractSceneController).pickTerrain(DrawContext) line: 569
DrawContextImpl.addPickedObject(PickedObject) line: 435

5、在 mousePressed 响应事件中得到点击的点以及位置信息
MeasureToolController.mousePressed(MouseEvent) line: 225
MeasureTool.addControlPoint() line: 1025
WorldWindowGLCanvas.getCurrentPosition() line: 358
WorldWindowGLAutoDrawable(WorldWindowImpl).getCurrentPosition() line: 193
PickedObject.getPosition() line: 103

6、在 updateMeasureShape 方法中设置 SurfacePolygon 的范围
MeasureToolController.mousePressed(MouseEvent) line: 225
MeasureTool.addControlPoint() line: 1076
MeasureTool.updateMeasureShape() line: 1895
SurfacePolygon.setLocations(Iterable<LatLon>) line: 116

7、在 doDrawGeographic 方法中先调用 determineActiveGeometry,继而调用 createGeometry 方法通过计算得到一系列的点,然后在 determineActiveGeometry 方法中将得到的点列添加到 activeGeometry 对象中
StereoOptionSceneController(BasicSceneController).doRepaint(DrawContext) line: 23
StereoOptionSceneController(AbstractSceneController).preRender(DrawContext) line: 512
MeasureTool$CustomRenderableLayer(AbstractLayer).preRender(DrawContext) line: 217
MeasureTool$CustomRenderableLayer(RenderableLayer).doPreRender(DrawContext) line: 356
MeasureTool$CustomRenderableLayer(RenderableLayer).doPreRender(DrawContext, Iterable<Renderable>) line: 378
MeasureTool$CustomRenderableLayer(AbstractLayer).preRender(DrawContext) line: 217
MeasureTool$CustomRenderableLayer(RenderableLayer).doPreRender(DrawContext) line: 356
MeasureTool$CustomRenderableLayer(RenderableLayer).doPreRender(DrawContext, Iterable<Renderable>) line: 378
SurfacePolygon(AbstractSurfaceObject).preRender(DrawContext) line: 216
SurfacePolygon(AbstractSurfaceShape).makeOrderedPreRenderable(DrawContext) line: 552
SurfacePolygon(AbstractSurfaceObject).makeOrderedPreRenderable(DrawContext) line: 456
SurfacePolygon(AbstractSurfaceObject).buildPickRepresentation(DrawContext) line: 650
SurfaceObjectTileBuilder.buildTiles(DrawContext, Iterable<?>) line: 345
SurfaceObjectTileBuilder.updateTiles(DrawContext) line: 489
SurfaceObjectTileBuilder.updateTile(DrawContext, SurfaceObjectTileBuilder$SurfaceObjectTile) line: 554
SurfacePolygon(AbstractSurfaceObject).render(DrawContext) line: 268
SurfacePolygon(AbstractSurfaceObject).drawOrderedRenderable(DrawContext) line: 595
SurfacePolygon(AbstractSurfaceShape).drawGeographic(DrawContext, SurfaceTileDrawContext) line: 574
SurfacePolygon(AbstractSurfaceShape).doDrawGeographic(DrawContext, SurfaceTileDrawContext) line: 641
SurfacePolygon(AbstractSurfaceShape).determineActiveGeometry(DrawContext, SurfaceTileDrawContext) line: 711
SurfacePolygon(AbstractSurfaceShape).getCachedGeometry(DrawContext, SurfaceTileDrawContext) line: 1003
SurfacePolygon.createGeometry(Globe, SurfaceTileDrawContext) line: 178
SurfacePolygon(AbstractSurfaceShape).generateIntermediateLocations(Iterable<LatLon>, double, boolean, List<LatLon>) line: 1190
SurfacePolygon(AbstractSurfaceShape).addIntermediateLocations(LatLon, LatLon, double, List<LatLon>) line: 1215

8、在 doTessellateInterior 方法中,先构造了 tessellator 和 callback,然后在 tessellateInteriorVertices 方法中完成三角剖分
SurfacePolygon(AbstractSurfaceShape).drawGeographic(DrawContext, SurfaceTileDrawContext) line: 574
SurfacePolygon(AbstractSurfaceShape).doDrawGeographic(DrawContext, SurfaceTileDrawContext) line: 644
SurfacePolygon(AbstractSurfaceShape).drawInterior(DrawContext, SurfaceTileDrawContext) line: 936
SurfacePolygon(AbstractSurfaceShape).tessellateInterior(DrawContext) line: 1273
SurfacePolygon(AbstractSurfaceShape).doTessellateInterior(DrawContext) line: 1300
SurfacePolygon(AbstractSurfaceShape).tessellateInteriorVertices(GLU, GLUtessellator) line: 1316

posted on 2012-11-09 17:58  redfler  阅读(518)  评论(0编辑  收藏  举报

导航