# 相关概念

本章主要向开发者约定相关名词的统一说法及介绍相关概念。

## 唯杰地图 vjmap
[唯杰地图vjmap](https://vjmap.com/doc/)是指基于`vjmap`sdk开发的二维地图的相关服务和应用，其引擎是二维引擎，可叠加图层展示三维效果。

## 唯杰地图3D vjmap3d
[唯杰地图3D vjmap3d](https://vjmap.com/map3d)是指基于`vjmap3d`sdk开发的三维地图的相关服务和应用，其引擎三维引擎，该框架既可做为一个单独的3D引擎用于数据可视化、产品展示、数字孪生、智慧城市、三维GIS等多个领域的可视化开发, 也可以结合`唯杰地图VJMAP`做为一个`3D`图层，能够在保留二维图形信息的直观性同时，融入三维空间的深度感知和交互性，为用户带来更丰富、立体和沉浸式的视觉体验及数据分析能力。


## 应用 App

[App](https://vjmap.com/map3d/api/classes/App.html)是基于`vjmap3d`开发出的3d应用，他作为 vjmap3d 的核心，主要负责管理场景渲染, 事件交互等。


## 对象 Object3d
[Object3D](https://threejs.org/docs/index.html?q=Ob#api/en/core/Object3D)是指threejs中的object3d对象。`Object3D`是threejs中的基类，是一切的三维空间的基础，就是一个抽象概念，表示着一个可以在三维空间中自由移动、自由旋转、自由缩放，可以控制显示隐藏的物体.

## 实体 Entity
[Entity](https://vjmap.com/map3d/api/classes/Entity.html) 是模块的容器，用于连接各个模块。它和一个`Object3D`相关联，通过连接的模块功能，来实现对`Object3D`的各种操作。

## 模块 Module
`vjmap3d`基于模块化开发遵循 组合优于继承 的开发设计原则，实现了自己的模块系统。我们将传统复杂的逻辑划分为独立的、可重复利用的部分，每个部分可以单独封装运行逻辑。然后通过灵活组合的形式，将多个简单模块合并在一起运行从而表现复杂的功能和逻辑。

vjmap3d中的 App 和 Entity 都是基于模块化开发。


## 应用、实体、对象、模块的相互关系
![](https://vjmap.com/blogimages/image-20240523101004802.png)

- 一个App包含多个模块，由多个模块的功能所组成，一个App下面可能会有多个场景Scene.

- 一个场景下面有多个Object3D，树状结构

- 一个实体可以和一个场景中的一个Object3D对象相关联

- 一个实体可以加多个模块，通过模块的功能对Object3D对象进行操作，通过功能组合的形式增强Object3D对象的功能。