Added tuple-typespec function
[cl-tuples.git] / line.lisp
blob5734aec095cce7cb0d2f42b76028dff376f15730
2 (in-package :cl-tuples)
4 (def-tuple-type line2d
5 :tuple-element-type single-float
6 :elements (sx sy ex ey))
8 (def-tuple-type line3d
9 :tuple-element-type single-float
10 :elements (sx sy sz ex ey ez))
12 (defmacro line->vector2d (line2d)
13 (with-line2d ,line2d
14 (sx sy ex ey)
15 (values (- ex sx) (- ey sy))))
17 (defmacro line-start->vertex2d (line2d)
18 (with-line2d ,line2d
19 (sx sy ex ey)
20 (values sx sy 1)))
22 (defmacro line-end->vertex2d (line2d)
23 (with-line2d ,line2d
24 (sx sy ex ey)
25 (values ex ey 1)))
27 (def-tuple-type line3d
28 :tuple-element-type single-float
29 :elements (sx sy sz ex ey ez))
31 (defmacro line-start->vertex3d (line3d)
32 (with-line3d ,line3d
33 (sx sy sz ex ey ez)
34 (values sx sy sz 1)))
36 (defmacro line-end->vertex3d (line3d)
37 (with-line3d ,line3d
38 (sx sy sz ex ey ez)
39 (values ex ey ez 1)))
41 (defmacro line->vector3d (line3d)
42 (with-line2d ,line2d
43 (sx sy sz ex ey ez)
44 (values (- ex sx) (- ey sy) (- sz ez))))