圆弧是一种特殊的曲线,如果我们已经知道要创建的圆弧的每个点的位置,同样可以使用上一篇中的创建曲线的方法进行创建。但是在这一节我们要介绍的是SketchUp中提供的创建圆弧的方法和所创建的圆弧对象。
创建圆弧
因为圆弧是规则的形状曲线,所以需要更多的控制参数,所以创建圆弧的API要相对复杂:
add_arc(center, xaxis, normal, radius, start_angle, end_angle)
或
add_arc(center, xaxis, normal, radius, start_angle, end_angle, num_segments)
两组不同参数的差别只是后面多了一个段数参数,因为SketchUp中是用边线段集合来表示曲线的,可以在生成圆弧的时候指定段数,段数越多,表示出的曲线越精细,显示效果也就越好。如果不指定段数的话,生成的圆弧的段数是根据圆弧的角度来定的,具体段数的计算是:
并且每段边线所占的角度是均匀的。
创建圆弧的其余参数如下:
center:圆弧的圆心。
xaxis:圆弧的坐标系的X轴,也就是从圆弧的圆心指向一个基准方向的向量。
normal:圆弧的法向,表示的是圆弧是以这个向量为基准按右手定则旋转的。
radius:圆弧的半径。
start_angle:圆弧起始位置相对X轴的角度,也就是按右手定则从xaxis旋转的角度。
end_angle:圆弧终止位置相对X轴的角度。
例如:
entities = Sketchup.active_model.entities
center = Geom::Point3d.new(0, 0, 0)
xaxis = Geom::Vector3d.new(1, 0, 0)
normal = Geom::Vector3d.new(0, 0, 1)
entities.add_arc(center, xaxis, normal, 10, 0, 60.degrees)
可以得到弧线
返回值和创建曲线是一样的:
[#<Sketchup::Edge:0x000001ccbc9cd0f8>, #<Sketchup::Edge:0x000001ccbc9cd0d0>, #<Sketchup::Edge:0x000001ccbc9cd0a8>, #<Sketchup::Edge:0x000001ccbc9cd080>]
不同的是,通过edge.curve方法我们获取到的是一个ArcCurve对象,通过这个圆弧对象除可以获取到曲线的各种参数外,还可以获取到圆弧的圆心、半径等圆弧自身特有的参数。
创建圆
圆其实就是起始角度和终止角度之间的差刚好是360度的圆弧,所以完全可以通过创建圆弧的API来创建圆,但为了方便,SketchUp还提供了一个专门创建圆的方法:
add_circle(center, normal, radius, numsegs = 24)
参数比创建圆弧更简单,返回值和创建的曲线对象和创建圆弧的API没有任何区别。例如:
center = Geom::Point3d.new(0, 0, 0)
normal = Geom::Vector3d.new(0, 0, 1)
entities.add_circle(center, normal, 10)
可以得到一个圆:
同等的使用创建圆弧的API的方法是:
center = Geom::Point3d.new(0, 0, 0)
xaxis = Geom::Vector3d.new(1, 0, 0)
normal = Geom::Vector3d.new(0, 0, 1)
entities.add_arc(center, xaxis, normal, 10, 0, 360.degrees)