Add math functions
This commit is contained in:
@@ -1,9 +1,180 @@
|
|||||||
(ns play-clj.math
|
(ns play-clj.math
|
||||||
(:import [com.badlogic.gdx.math Vector2 Vector3]))
|
(:require [play-clj.utils :as u])
|
||||||
|
(:import [com.badlogic.gdx.math Bezier Bresenham2 BSpline CatmullRomSpline
|
||||||
|
Circle ConvexHull DelaunayTriangulator EarClippingTriangulator
|
||||||
|
Ellipse FloatCounter Frustum Vector2 Vector3]))
|
||||||
|
|
||||||
|
; bezier
|
||||||
|
|
||||||
|
(defn bezier*
|
||||||
|
([]
|
||||||
|
(Bezier.))
|
||||||
|
([points]
|
||||||
|
(Bezier. (into-array points) 0 (count points))))
|
||||||
|
|
||||||
|
(defmacro bezier
|
||||||
|
[points & options]
|
||||||
|
`(u/calls! ^Bezier (bezier* ~points) ~@options))
|
||||||
|
|
||||||
|
(defmacro bezier!
|
||||||
|
[object k & options]
|
||||||
|
`(u/call! ^Bezier ~object ~k ~@options))
|
||||||
|
|
||||||
|
; bresenham2
|
||||||
|
|
||||||
|
(defn bresenham2*
|
||||||
|
[]
|
||||||
|
(Bresenham2.))
|
||||||
|
|
||||||
|
(defmacro bresenham2
|
||||||
|
[& options]
|
||||||
|
`(u/calls! ^Bresenham2 (bresenham2*) ~@options))
|
||||||
|
|
||||||
|
(defmacro bresenham2!
|
||||||
|
[object k & options]
|
||||||
|
`(u/call! ^Bresenham2 ~object ~k ~@options))
|
||||||
|
|
||||||
|
; b-spline
|
||||||
|
|
||||||
|
(defn b-spline*
|
||||||
|
([]
|
||||||
|
(BSpline.))
|
||||||
|
([points degree cont?]
|
||||||
|
(BSpline. (into-array points) degree cont?)))
|
||||||
|
|
||||||
|
(defmacro b-spline
|
||||||
|
[points degree cont? & options]
|
||||||
|
`(u/calls! ^BSpline (b-spline* ~points ~degree ~cont?) ~@options))
|
||||||
|
|
||||||
|
(defmacro b-spline!
|
||||||
|
[object k & options]
|
||||||
|
`(u/call! ^BSpline ~object ~k ~@options))
|
||||||
|
|
||||||
|
; catmull-rom-spline
|
||||||
|
|
||||||
|
(defn catmull-rom-spline*
|
||||||
|
([]
|
||||||
|
(CatmullRomSpline.))
|
||||||
|
([points cont?]
|
||||||
|
(CatmullRomSpline. (into-array points) cont?)))
|
||||||
|
|
||||||
|
(defmacro catmull-rom-spline
|
||||||
|
[points cont? & options]
|
||||||
|
`(u/calls! ^CatmullRomSpline (catmull-rom-spline* ~points ~cont?) ~@options))
|
||||||
|
|
||||||
|
(defmacro catmull-rom-spline!
|
||||||
|
[object k & options]
|
||||||
|
`(u/call! ^BSpline ~object ~k ~@options))
|
||||||
|
|
||||||
|
; circle
|
||||||
|
|
||||||
|
(defn circle*
|
||||||
|
([]
|
||||||
|
(Circle.))
|
||||||
|
([x y radius]
|
||||||
|
(Circle. x y radius)))
|
||||||
|
|
||||||
|
(defmacro circle
|
||||||
|
[x y radius & options]
|
||||||
|
`(u/calls! ^Circle (circle* ~x ~y ~radius) ~@options))
|
||||||
|
|
||||||
|
(defmacro circle!
|
||||||
|
[object k & options]
|
||||||
|
`(u/call! ^Circle ~object ~k ~@options))
|
||||||
|
|
||||||
|
; convex-hull
|
||||||
|
|
||||||
|
(defn convex-hull*
|
||||||
|
[]
|
||||||
|
(ConvexHull.))
|
||||||
|
|
||||||
|
(defmacro convex-hull
|
||||||
|
[& options]
|
||||||
|
`(u/calls! ^ConvexHull (convex-hull*) ~@options))
|
||||||
|
|
||||||
|
(defmacro convex-hull!
|
||||||
|
[object k & options]
|
||||||
|
`(u/call! ^ConvexHull ~object ~k ~@options))
|
||||||
|
|
||||||
|
; delaunay-triangulator
|
||||||
|
|
||||||
|
(defn delaunay-triangulator*
|
||||||
|
[]
|
||||||
|
(DelaunayTriangulator.))
|
||||||
|
|
||||||
|
(defmacro delaunay-triangulator
|
||||||
|
[& options]
|
||||||
|
`(u/calls! ^DelaunayTriangulator (delaunay-triangulator*) ~@options))
|
||||||
|
|
||||||
|
(defmacro delaunay-triangulator!
|
||||||
|
[object k & options]
|
||||||
|
`(u/call! ^DelaunayTriangulator ~object ~k ~@options))
|
||||||
|
|
||||||
|
; ear-clipping-triangulator
|
||||||
|
|
||||||
|
(defn ear-clipping-triangulator*
|
||||||
|
[]
|
||||||
|
(EarClippingTriangulator.))
|
||||||
|
|
||||||
|
(defmacro ear-clipping-triangulator
|
||||||
|
[& options]
|
||||||
|
`(u/calls! ^EarClippingTriangulator (ear-clipping-triangulator*) ~@options))
|
||||||
|
|
||||||
|
(defmacro ear-clipping-triangulator!
|
||||||
|
[object k & options]
|
||||||
|
`(u/call! ^EarClippingTriangulator ~object ~k ~@options))
|
||||||
|
|
||||||
|
; ellipse
|
||||||
|
|
||||||
|
(defn ellipse*
|
||||||
|
([]
|
||||||
|
(Ellipse.))
|
||||||
|
([x y width height]
|
||||||
|
(Ellipse. x y width height)))
|
||||||
|
|
||||||
|
(defmacro ellipse
|
||||||
|
[x y width height & options]
|
||||||
|
`(u/calls! ^Ellipse (ellipse* ~x ~y ~width ~height) ~@options))
|
||||||
|
|
||||||
|
(defmacro ellipse!
|
||||||
|
[object k & options]
|
||||||
|
`(u/call! ^Ellipse ~object ~k ~@options))
|
||||||
|
|
||||||
|
; float-counter
|
||||||
|
|
||||||
|
(defn float-counter*
|
||||||
|
[window-size]
|
||||||
|
(FloatCounter. window-size))
|
||||||
|
|
||||||
|
(defmacro float-counter
|
||||||
|
[window-size & options]
|
||||||
|
`(u/calls! ^FloatCounter (float-counter* ~window-size) ~@options))
|
||||||
|
|
||||||
|
(defmacro float-counter!
|
||||||
|
[object k & options]
|
||||||
|
`(u/call! ^FloatCounter ~object ~k ~@options))
|
||||||
|
|
||||||
|
; frustum
|
||||||
|
|
||||||
|
(defn frustum*
|
||||||
|
[]
|
||||||
|
(Frustum.))
|
||||||
|
|
||||||
|
(defmacro frustum
|
||||||
|
[& options]
|
||||||
|
`(u/calls! ^Frustum (frustum*) ~@options))
|
||||||
|
|
||||||
|
(defmacro frustum!
|
||||||
|
[object k & options]
|
||||||
|
`(u/call! ^Frustum ~object ~k ~@options))
|
||||||
|
|
||||||
|
; vector-2
|
||||||
|
|
||||||
(defn vector-2*
|
(defn vector-2*
|
||||||
[x y]
|
([]
|
||||||
(Vector2. x y))
|
(Vector2.))
|
||||||
|
([x y]
|
||||||
|
(Vector2. x y)))
|
||||||
|
|
||||||
(defmacro vector-2
|
(defmacro vector-2
|
||||||
[x y & options]
|
[x y & options]
|
||||||
@@ -13,9 +184,13 @@
|
|||||||
[object k & options]
|
[object k & options]
|
||||||
`(u/call! ^Vector2 ~object ~k ~@options))
|
`(u/call! ^Vector2 ~object ~k ~@options))
|
||||||
|
|
||||||
|
; vector-3
|
||||||
|
|
||||||
(defn vector-3*
|
(defn vector-3*
|
||||||
[x y z]
|
([]
|
||||||
(Vector3. x y z))
|
(Vector3.))
|
||||||
|
([x y z]
|
||||||
|
(Vector3. x y z)))
|
||||||
|
|
||||||
(defmacro vector-3
|
(defmacro vector-3
|
||||||
[x y z & options]
|
[x y z & options]
|
||||||
|
|||||||
Reference in New Issue
Block a user