MCPcopy
hub / github.com/fogleman/ln / MulBox

Method MulBox

ln/matrix.go:159–177  ·  view source on GitHub ↗
(box Box)

Source from the content-addressed store, hash-verified

157}
158
159func (a Matrix) MulBox(box Box) Box {
160 // http://dev.theomader.com/transform-bounding-boxes/
161 r := Vector{a.x00, a.x10, a.x20}
162 u := Vector{a.x01, a.x11, a.x21}
163 b := Vector{a.x02, a.x12, a.x22}
164 t := Vector{a.x03, a.x13, a.x23}
165 xa := r.MulScalar(box.Min.X)
166 xb := r.MulScalar(box.Max.X)
167 ya := u.MulScalar(box.Min.Y)
168 yb := u.MulScalar(box.Max.Y)
169 za := b.MulScalar(box.Min.Z)
170 zb := b.MulScalar(box.Max.Z)
171 xa, xb = xa.Min(xb), xa.Max(xb)
172 ya, yb = ya.Min(yb), ya.Max(yb)
173 za, zb = za.Min(zb), za.Max(zb)
174 min := xa.Add(ya).Add(za).Add(t)
175 max := xb.Add(yb).Add(zb).Add(t)
176 return Box{min, max}
177}
178
179func (a Matrix) Transpose() Matrix {
180 return Matrix{

Callers 1

BoundingBoxMethod · 0.80

Calls 4

MulScalarMethod · 0.95
MinMethod · 0.45
MaxMethod · 0.45
AddMethod · 0.45

Tested by

no test coverage detected