[page:Curve] → [page:CurvePath] →

# 形状路径（[name]）

该类用于转换一系列的形状为一个[page:Path]数组，例如转换SVG中的Path为three.js中的Path（请参阅下方的example）。 在内部它由[page:Font]所使用，用于将JSON字体转换为一系列路径。

## 示例

[example:webgl_geometry_extrude_shapes2 geometry / extrude / shapes2]

## 构造函数

### [name]( )

创建一个新的ShapePath。和[page:Path]不同，因为ShapePath被设计为在创建之后生成，所以没有点被传入到构造函数中。

## 属性

### [property:array subPaths]

[page:Path]数组。

### [property:array currentPath]

当前将要被生成的路径。

## 方法

### [method:this moveTo]( [param:Float x], [param:Float y] )

创建一个新的[page:Path]，并在[page:Path]上调用[page:Path.moveTo]( x, y )。

### [method:this lineTo]( [param:Float x], [param:Float y] )

这一方法从[page:ShapePath.currentPath currentPath]（当前路径）的偏移量创建一条到X和Y的线，并将偏移量更新为X和Y。

### [method:this quadraticCurveTo]( [param:Float cpX], [param:Float cpY], [param:Float x], [param:Float y] )

这一方法从[page:ShapePath.currentPath currentPath]（当前路径）创建一条到X和Y的二次曲线，cpX和cpY作为控制点， 并将[page:ShapePath.currentPath currentPath]的偏移量更新为x和y。

### [method:this bezierCurveTo]( [param:Float cp1X], [param:Float cp1Y], [param:Float cp2X], [param:Float cp2Y], [param:Float x], [param:Float y] )

这一方法从[page:ShapePath.currentPath currentPath]（当前路径）的偏移量创建一条到X和Y的贝塞尔曲线， cp1X、cp1Y和cp1X、cp1Y为控制点，并将[page:ShapePath.currentPath currentPath]的偏移量更新为x和y。

### [method:this splineThru] ( [param:Array points] )

points - 一个[page:Vector2]数组。

连接一个新的[page:SplineCurve]（样条曲线）到[page:ShapePath.currentPath currentPath]（当前路径）。

### [method:Array toShapes]( [param:Boolean isCCW], [param:Boolean noHoles] )

isCCW -- 更改实体形状和孔洞的生成方式。
noHoles -- 是否创建孔洞。

将[page:ShapePath.subPaths subPaths]数组转换为到Shapes数组。默认情况下，实体形状按照顺时针（CW）来定义，孔洞按照逆时针（CCW）来定义。 如果isCCW被设置为true，则孔洞和实体形状的定义将被反转。如果noHoles参数设置为true，则所有路径将被设置为实体形状，isCCW将被忽略。

## 源代码

[link:https://github.com/mrdoob/three.js/blob/master/src/extras/core/Path.js src/extras/core/Path.js]