Extensible 3D (X3D)
Part 1: Architecture and base components

14 Geometry2D component

二维几何体组件

--- X3D separator bar ---

cube 14.1 介绍

14.1.1 名称

这部分组件的名称是“Geometry2D”。当在 COMPONENT 语句中引用这个组件时需要使用这个名称(参见 7.2.3.4 Component 语句)。

14.1.2 概述

本条款描述了 ISO/IEC 19775 标准这部分中的 Geometry2D component(二维几何体组件)。其中包括指定的二维几何体及其可见的形状。表 14.1 列出了这一条款的主要主题。

表 14.1 — 主题

cube 14.2 概念

14.2.1 几何体概述

geometry2D 组件只由几何节点组成,因为只和 Shape 组件中定义的形,几何属性,外观节点一同使用。geometry2D 节点可以被认为是平面化的对象。

所有的 2D 坐标系中的 2D 节点被定义在当前 3D 坐标系中的一个 z=0 的平面上, 2D 坐标系的 x 轴和 y 轴和当前的 3D 坐标系一致。这个 2D 坐标系的原点定义为 3D 坐标系的原点。未指定的 2D 坐标的 z 分量值总被定义为 0。2D 节点的位置和方向受所有的 2D 变换或 3D 变换的影响。

2D 节点中的每个面都在定义其的 z=0 的坐标系中共面。面分向前的面和向后的面。向前的面定义为 z=0 平面的正面。面也象此标准中定义的 3D 几何体那样在渲染时做剔除。

在正对边的方向上看,2D 节点将会消失,因为它们是没有厚度的。

14.2.2 Shape 节点和几何节点

Shape 节点在 12 形组件 Shape component 中定义。

14.2.3 几何属性节点

许多几何节点都包含了作为几何属性节点的 Coordinate、Color、Normal、TextureCoordinate 节点。这些节点在 11 渲染组件 Rendering component 中定义。

14.2.4 Appearance 节点

Shape 节点可以指定一个 Appearance 节点用以描述应用到 Shape 节点中的几何体上的外观属性(材质和纹理)。Appearance 在 12 形组件 Shape component 中定义。

外观属性和几何节点之间相互作用的信息细节描述见 12 Shape component

cube 14.3 节点参考

14.3.1 Arc2D

Arc2D : X3DGeometryNode { 
  SFNode  [in,out] metadata   NULL  [X3DMetadataObject]
  SFFloat []       endAngle   π/2   [-2π,2π]
  SFFloat []       radius     1     (0,∞)
  SFFloat []       startAngle 0     [-2π,2π]
}

Arc(弧)指定一个线形圆弧,其圆心位于 (0,0) 并按角度由正 x 轴开始并向正 y 轴扫出。radius 域指定了弧所在的圆的半径。圆弧从 startAngle 开始逆时针扩展到 endAngleradius 值应大于 0。startAngleendAngle 的值应在 (0, 2π) 范围中。如果 startAngleendAngle 值相同,则指定为一个圆。

solid 域的完整描述见 11.2.3 一般几何域 Common geometry fields

附图 14.1 描述了一个 Arc2D 节点。

Arc2D node

附图 14.1 — Arc2D 节点

14.3.2 ArcClose2D

ArcClose2D : X3DGeometryNode { 
  SFNode   [in,out] metadata    NULL  [X3DMetadataObject]
  SFString []       closureType "PIE" ["PIE"|"CHORD"]
  SFFloat  []       endAngle    π/2   [-2π,2π]
  SFFloat  []       radius      1     (0,∞)
  SFBool   []       solid       FALSE
  SFFloat  []       startAngle  0     [-2π,2π]
}

ArcClose(闭合弧)节点指定了圆的一部分,其圆心位于 (0,0) 并按角度由正 x 轴开始并向正 y 轴扫出,其端点按 closureType 域中指定的方式连接起来。radius 域指定了弧所在的圆的半径。圆弧从 startAngle 开始逆时针扩展到 endAngleradius 值应大于 0。startAngleendAngle 的值应在 (0, 2π) 范围中。如果 startAngleendAngle 值相同,则指定为一个圆并忽略 closureType (闭合类型)域。

闭合类型为 "PIE" 值时,将定义两条直线段来连接终点和起点,先是终点连接到圆心,接着是圆心连接到起点。这将形成一个 附图 14.2 中表示的楔形饼图。

ArcClose2D node pie closure

附图 14.2 — ArcClose2D 节点("PIE" 闭合)

闭合类型为 "CHORD" 值时,将定义一条从终点到起点的直线段以连接终点和起点。这将形成一个 附图 14.3 中表示的弓形部分。

ArcClose2D node CHORD closure)

附图 14.3 — ArcClose2D node("CHORD" 闭合)

纹理将被独立地应用到 ArcClose2D 的每个面上。当从 +Z 方向观看时,在 ArcClose2D 的向前 (+Z) 的面和向后 (-Z) 的面上,图像将被按其通常在 2D 中显示的方向在每个面上贴图。TextureTransform 能影响 ArcClose2D 的纹理坐标(见 18.4.9 TextureTransform)。

solid 域的完整描述见 11.2.3 一般几何域 Common geometry fields

14.3.3 Circle2D

Circle2D : X3DGeometryNode { 
  SFNode  [in,out] metadata NULL  [X3DMetadataObject]
  SFFloat []       radius   1     (0,∞)
}

Circle2D(圆)节点指定了一个圆心位于局部坐标系 (0,0) 的圆。radius 域指定了 Circle2D 的半径。radius 的值应大于 0。附图 14.4 举例说明了一个应用了虚线线型的 Circle2D 节点。

circle2D node

附图 14.4 — Circle2D 节点

solid 域的完整描述见 11.2.3 一般几何域 Common geometry fields

14.3.4 Disk2D

Disk2D : X3DGeometryNode { 
 SFNode  [in,out] metadata    NULL  [X3DMetadataObject]
 SFFloat []       innerRadius 0     [0,∞)
 SFFloat []       outerRadius 1     (0,∞)
 SFBool  []       solid       FALSE
}

Disk2D(圆盘)节点指定了一个圆心位于局部坐标系 (0,0) 的圆盘。outerRadius 域 Disk2D 的外半径。innerRadius 域指定了 Disk2D 的内半径。outerRadius 的值应大于 0。innerRadius 的值应大于或等于 0 且小于或等于 outerRadius。如果 innerRadius 为 0,Disk2D 将被完全填充。否则 innerRadius 里面的区域将形成一个 Disk2D 上的洞。如果 innerRadius 等于 outerRadius,将使用当前的线属性绘制一个圆。附图 14.5 举例说明了一个包含非 0 innerRadius 值的 Disk2D 节点。

Disk2D node

附图 14.5 — Disk2D 节点

纹理将被独立地应用到 Disk2D 的每个面上。当从 +Z 方向观看时,在 ArcClose2D 的向前 (+Z) 的面和向后 (-Z) 的面上,图像将被按其通常在 2D 中显示的方向在每个面上贴图。TextureTransform 能影响 Disk2D 的纹理坐标(见 18.4.9 TextureTransform)。

solid 域的完整描述见 11.2.3 一般几何域 Common geometry fields

14.3.5 Polyline2D

Polyline2D : X3DGeometryNode { 
  SFNode  [in,out] metadata     NULL  [X3DMetadataObject]
  MFVec2f []       lineSegments []    (-∞,∞)
}

Polyline2D(折线)节点在局部 2D 坐标系中指定了一系列的连续的线段。lineSegments 域指定了将被连接的顶点。附图 14.6 举例说明了 Polyline2D 节点。

Polyline2D

附图 14.6 — Polyline2D 节点

solid 域的完整描述见 11.2.3 一般几何域 Common geometry fields

14.3.6 Polypoint2D

Polypoint2D : X3DGeometryNode { 
  SFNode  [in,out] metadata NULL [X3DMetadataObject]
  MFVec2f [in,out] point    []    (-∞,∞)
}

Polypoint2D 节点在局部 2D 坐标系中指定了一系列的顶点,这些顶点将显示为点。points 域指定了将显示的点。附图 14.7 举例说明了 Polypoint2D 节点。把这些点扩充为线的结果的图解就是 附图 14.6

Polypoint2D node

附图 14.7 — Polypoint2D 节点

solid 域的完整描述见 11.2.3 一般几何域 Common geometry fields

14.3.7 Rectangle2D

Rectangle2D : X3DGeometryNode { 
  SFNode  [in,out] metadata NULL  [X3DMetadataObject]
  SFVec2f []       size     2 2   (0,∞)
  SFBool  []       solid    FALSE
}

Rectangle2D 节点指定了一个中心位于当前局部 2D 坐标系 (0, 0) 且于此当前局部 2D 坐标系轴对其的矩形。缺省时为每个方向上 都为 -1 到 1 的 2 个单位长度的矩形。size 域指定了沿 X 轴和 Y 轴进行延伸的长度的对应分量,每个分量的值都应大于 0。附图 14.8 举例说明了一个附带 FillProperties 定义的阴影线样式的 Rectangle2D 节点。

Rectangle2D node

Figure 14.8 — Rectangle2D node

纹理将被独立地应用到 Rectangle2D 的每个面上。当从 +Z 方向观看时,在 ArcClose2D 的向前 (+Z) 的面和向后 (-Z) 的面上,图像将被按其通常在 2D 中显示的方向在每个面上贴图。TextureTransform 能影响 Rectangle2D 的纹理坐标(见 18.4.9 TextureTransform)。

solid 域的完整描述见 11.2.3 一般几何域 Common geometry fields

14.3.8 TriangleSet2D

TriangleSet2D : X3DGeometryNode { 
  SFNode  [in,out] metadata NULL  [X3DMetadataObject]
  MFVec2f [in,out] vertices []    (-∞,∞)
  SFBool  []       solid    FALSE
}

TriangleSet2D 节点在局部 2D 坐标系中指定了一系列三角形。vertices(顶点)域中指定了将要显示的三角形。提供的顶点数量应为可被三均分。多余的顶点将被忽略。附图 14.9 举例说明了 TriangleSet2D 节点。

TriangleSet2D node

附图 14.9 — TriangleSet2D 节点

solid 域的完整描述见 11.2.3 一般几何域 Common geometry fields

纹理将被独立地应用到 TriangleSet2D 的每个面上。当从 +Z 方向观看时,在 ArcClose2D 的向前 (+Z) 的面和向后 (-Z) 的面上,图像将被按其通常在 2D 中显示的方向在每个面上贴图。TextureTransform 能影响 TriangleSet2D 的纹理坐标(见 18.4.9 TextureTransform)。

14.4 支持级别

The Geometry2D component provides two levels of support as specified in Table 14.2. Level 1 provides the basic support for two-dimensional geometry with straight sides. Level 2 adds support for two-dimensional geometry with non-straight sides.

表 14.2 — Geometry2D 组件支持级别

级别
Level
必备条件 节点/特性 支持
1 Core 1
Grouping 1
Shape 1
Rendering 1
Polyline2D 所有域的完全支持
Polypoint2D 所有域的完全支持
Rectangle2D 所有域的完全支持
TriangleSet2D 所有域的完全支持
2 Core 1
Grouping 1
Shape 1
Rendering 1
Level 1 的所有 Geometry2D 节点 所有域的完全支持
Arc2D 所有域的完全支持
ArcClose2D 所有域的完全支持
Circle2D 所有域的完全支持
Disk2D 所有域的完全支持

--- X3D separator bar ---