From 30e8cba29862f764817d6615017b7d4c42f69c2e Mon Sep 17 00:00:00 2001 From: Octopus Octopus Date: Thu, 30 Jun 2022 16:19:48 -0500 Subject: [PATCH] recover split2DPlane and split3DModel from parts.go --- fightstick/misc.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/fightstick/misc.go b/fightstick/misc.go index 993a490..451c3a6 100644 --- a/fightstick/misc.go +++ b/fightstick/misc.go @@ -5,6 +5,7 @@ import ( "github.com/deadsy/sdfx/sdf" v2 "github.com/deadsy/sdfx/vec/v2" + v3 "github.com/deadsy/sdfx/vec/v3" ) func loggedMovement(input sdf.SDF2, displacement sdf.V2, label string) sdf.SDF2 { @@ -33,3 +34,32 @@ func trapezoid(base v2.Vec, xChange float64) sdf.SDF2 { return trapezoid } + +// split2DPlane splits a 2D plane in half. 0 is right side and 1 is left side. +func split2DPlane(plane sdf.SDF2, height float64) []sdf.SDF2 { + planes := make([]sdf.SDF2, 2) + + rPlane := sdf.Cut2D(plane, v2.Vec{X: 0, Y: 0}, v2.Vec{X: 0, Y: 1}) + planes[0] = rPlane + + lPlane := sdf.Transform2D(sdf.Cut2D(sdf.Transform2D(plane, sdf.MirrorY()), v2.Vec{X: 0, Y: 0}, v2.Vec{X: 0, Y: 1}), sdf.MirrorY()) + planes[0] = lPlane + + return planes +} + +// split3DModel splits a 3D model in half. 0 is right side and 1 is left side. +func split3DModel(model sdf.SDF3) []sdf.SDF3 { + models := make([]sdf.SDF3, 2) + //plane := sdf.Slice2D(model, v3.Vec{X: 0, Y: 0, Z: 0}, v3.Vec{X: 0, Y: 0, Z: 0}) + + //rPlane := sdf.Cut2D(plane, v2.Vec{X: 0, Y: 0}, v2.Vec{X: 0, Y: 1}) + rModel := sdf.Cut3D(model, v3.Vec{X: 0, Y: 0, Z: 0}, v3.Vec{X: 0, Y: 1, Z: 0}) + models[0] = rModel + + //lPlane := sdf.Transform2D(sdf.Cut2D(sdf.Transform2D(plane, sdf.MirrorY()), v2.Vec{X: 0, Y: 0}, v2.Vec{X: 0, Y: 1}), sdf.MirrorY()) + lModel := sdf.Transform3D(sdf.Cut3D(sdf.Transform3D(model, sdf.MirrorXY()), v3.Vec{X: 0, Y: 0, Z: 0}, v3.Vec{X: 0, Y: 1, Z: 0}), sdf.MirrorXY()) + models[1] = lModel + + return models +}