Skip to content

jsl/geometry/basics

Package name: jsl/geometry/basics

Summary

General Definitions

Function Description
contains? Is B entirely enclosed by A ?
RoundedRectangle
to-radius Diameter to Radius Converter
compute-circle Given 3 Points - compute the circle
to-polygon
GeneralRoundedRectangle (+ 1)
scale-union Recursively scale the shapes of a Union
scale-pts
Capsule
ChamferedRectangle
Rectangle
convex-hull Compute the Convex Hull of the passed Shape
scale-pose
bounds Compute the bounding Dims object that encapsulates the sequence of passed Dims.
GeneralChamferedRectangle (+ 1)
expand (+ 1) Increase the size of a Dims by amount on all sides
expand-union Expand for Union shapes
DShape
scale-shape Scale a Shape by a factor
to-point

Definitions

General Definitions

contains?

Is B entirely enclosed by A ?

public defn contains? (a:Dims, b:Dims) -> True|False

  • Returns True|False

RoundedRectangle

public defn RoundedRectangle (size:Dims, r:Double -- anchor:Anchor = ?)

to-radius

Diameter to Radius Converter

public defn to-radius (diam:Double) -> Double

  • Returns Double

compute-circle

Given 3 Points - compute the circle

public defn compute-circle (b:Point, e:Point, c:Point) -> Circle

  • Returns Circle

See here: https://math.stackexchange.com/questions/2836274/3-point-to-circle-and-get-radius

to-polygon

public defn to-polygon (x:Shape -- top-level?:True|False, num-points:Int = ?) -> Polygon|Union

  • Returns Polygon|Union

GeneralRoundedRectangle

public defn GeneralRoundedRectangle (size:Dims, r:Double, m:CornerModifier -- anchor:Anchor = ?)

GeneralRoundedRectangle

public defn GeneralRoundedRectangle (size:Dims, r:Tuple<Double> -- anchor:Anchor = ?)

scale-union

Recursively scale the shapes of a Union

public defn scale-union (x:Shape|Union, scale:Double) -> Shape

  • Returns Shape

scale-pts

public defn scale-pts (pts:Tuple<Point>, scale:Double) -> Tuple<Point>

  • Returns Tuple<Point>

Capsule

public defn Capsule (size:Dims -- anchor:Anchor = ?)

ChamferedRectangle

public defn ChamferedRectangle (size:Dims, r:Double -- anchor:Anchor = ?)

Rectangle

public defn Rectangle (size:Dims -- anchor:Anchor = ?, pose:Pose = ?)

convex-hull

Compute the Convex Hull of the passed Shape

public defn convex-hull (x:Shape -- num-points:Int = ?) -> Polygon

  • x: Shape - Shape object to construct the convex hull of
  • num-points: Int - Some objects need to be polygonized to be able to run the convex hull algorithm. This parameter determines how many points will be used for each shape. Alternatively, the user can pass in pre-polygonized shapes and this value will be ignored.
  • Returns Polygon

This function uses Jarvis's Gift wrapping algorithm for non-trivial polygon shapes. It is a brute-force algorithm that is not optimized for performance.

References

  • https://en.wikipedia.org/wiki/Gift_wrapping_algorithm

scale-pose

public defn scale-pose (p:Pose, scale:Double) -> Pose

  • Returns Pose

bounds

Compute the bounding Dims object that encapsulates the sequence of passed Dims.

public defn bounds (objs:Collection<Dims> -- expand-by:Double = ?) -> Dims

  • objs: Collection<Dims> - The set of objects that will be reviewed.
  • expand-by: Double - Add additional margin on all sides by this amount. The resultant Dims object will be 2.0 * expand-by greater than the maximum outline Default value is 0.0.
  • Returns Dims

GeneralChamferedRectangle

public defn GeneralChamferedRectangle (size:Dims, r:Double, m:CornerModifier -- anchor:Anchor = ?)

GeneralChamferedRectangle

public defn GeneralChamferedRectangle (size:Dims, r:Tuple<Double> -- anchor:Anchor = ?)

expand

Increase the size of a Dims by amount on all sides

public defn expand (d:Dims, amount:Double) -> Dims

  • d: Dims - Originating Dims instance that this method will expand.
  • amount: Double - quantity for expansion on all sides.
  • Returns Dims

Effective width and height are larger by 2.0 * amount

expand

Increase the size of a Dims by different x and y amounts.

public defn expand (d:Dims, amount:Dims) -> Dims

  • d: Dims - Originating Dims instance that this method will expand.
  • amount: Dims - Dims that encodes the expansion amount of the X and Y axis as two different values.
  • Returns Dims

expand-union

Expand for Union shapes

public defn expand-union (x:Shape|Union, amount:Double) -> Shape

  • Returns Shape

This is provides an implementation that supports Union by recursively applying the expand operation on all shapes in the Union.

DShape

public defn DShape (size:Dims, r:Double -- anchor:Anchor = ?)

scale-shape

Scale a Shape by a factor

public defn scale-shape (s:Shape, scale:Double) -> Shape

  • Returns Shape

Scale in X/Y by factor scale

to-point

public defn to-point (pt:Point|[Double, Double]|[Int, Int]) -> Point

  • Returns Point