Module Dometyl.Column

module Join : sig ... end

A hull between Key.ts of a column, and thin scads for each of the outer faces (available for hulling between columns in Bridge.).

type config = {
  1. key : Key.t;
  2. n_keys : int;
  3. curve : int -> Key.t -> Key.t;
}
type t = {
  1. config : config;
  2. scad : OSCADml.Scad.d3;
  3. keys : Key.t IMap.t;
  4. joins : Join.t IMap.t;
}
val translate : OCADml.V3.t -> t -> t
val xtrans : float -> t -> t
val ytrans : float -> t -> t
val ztrans : float -> t -> t
val rotate : ?about:OCADml.V3.t -> OCADml.V3.t -> t -> t
val xrot : ?about:OCADml.V3.t -> float -> t -> t
val yrot : ?about:OCADml.V3.t -> float -> t -> t
val zrot : ?about:OCADml.V3.t -> float -> t -> t
val axis_rotate : ?about:OCADml.V3.t -> OCADml.V3.t -> float -> t -> t
val quaternion : ?about:OCADml.V3.t -> OCADml.Quaternion.t -> t -> t
val scale : OCADml.V3.t -> t -> t
val xscale : float -> t -> t
val yscale : float -> t -> t
val zscale : float -> t -> t
val mirror : OCADml.V3.t -> t -> t
val affine : OCADml.Affine3.t -> t -> t
val make : ?join_ax:[< `EW | `NS NS ] -> n_keys:int -> curve:(int -> Key.t -> Key.t) -> caps:(int -> OSCADml.Scad.d3) -> Key.t -> t

make ?join_ax ~n_keys ~curve ~caps key

Create a column by distributing n_keys copies of key using the distribution function curve, which will position each Key.t according to the index (from 0 to n_keys - 1), before they are joined via Scad.hull between the Key.t.faces along the axis indicated by join_ax. The caps lookup places a key cap above each Key.t corresponding to the index (examples/defaults can be found in Caps).

val to_scad : t -> OSCADml.Scad.d3