FooCAD Source Codeclass Snake : Model {
var width = 30
var height = 20
var gap = 0.3
meth segmentShape() : Shape2d {
val c = Circle(width/2)
val main = Hull2d( c.translateX( width/2 ).also() )
val cut = c.offset( gap ).translateX(-width/2)
return main - cut
}
meth segmentA() : Shape3d {
val shape = segmentShape()
val topBottom = shape.extrude( height/3 )
.topTo( height ).also()
val middle = shape.mirrorX().extrude( height/3 )
.bottomTo( height / 3 )
return topBottom + middle
}
override fun build() : Shape3d {
val a = segmentA().color("Green")
val b = segmentA().translateX(width).color("Orange")
return a + b //.mirrorX().also()
}
}