import javafx.geometry.Point2D; import javafx.scene.Scene; import javafx.scene.shape.Circle; import javafx.scene.shape.Ellipse; import javafx.stage.Stage; import com.fxutil.ik.Bone; import com.fxutil.ik.Skeleton; def skeleton = Skeleton{ } def head: Bone = Bone { skeleton: skeleton currentHead: Point2D {x: 200, y: 70} currentAngle: 90 currentLength: 30 content: Ellipse {radiusX: 20, radiusY: 15} } def torso: Bone = Bone { parent: head currentAngle: 0 currentLength: 80 content: Ellipse {radiusX: 50, radiusY: 20, centerX: 40} } def upperArm: Bone[] = for (i in [0..1]) { Bone { parent: head currentLength: 60 currentAngle: 60 - 90 * i content: Ellipse {radiusX: 30, radiusY: 12.5, centerX: 22.5} } } def lowerArm: Bone[] = for (i in [0..1]) { Bone { parent: upperArm[i] currentLength: 60 currentAngle: -90 content: [ Circle {radius: 12.5} Ellipse {radiusX: 20, radiusY: 12.5, centerX: 30} Circle {radius: 12.5, centerX: 60} ] } } def upperLeg: Bone[] = for (i in [0..1]) { Bone { parent: torso currentLength: 60 currentAngle: 30 - 90 * i content: Ellipse {radiusX: 30, radiusY: 15, centerX: 20} } } def lowerLeg: Bone[] = for (i in [0..1]) { Bone { parent: upperLeg[i] currentLength: 75 currentAngle: 90 content: [ Circle {radius: 15} Ellipse {radiusX: 30, radiusY: 15, centerX: 40} Ellipse {radiusX: 10, radiusY: 22.5, centerX: 75, centerY: -10} ] } } Stage { width: 400 height: 400 scene: Scene {content: skeleton} }