From 0c2c21ce0ee5bfffdd8288a239604b3356e1f255 Mon Sep 17 00:00:00 2001 From: Octopus Octopus Date: Thu, 30 Jun 2022 23:01:45 -0500 Subject: [PATCH] model out wallcorners --- fightstick/body3D.go | 69 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/fightstick/body3D.go b/fightstick/body3D.go index 06ab7d0..79bb86b 100644 --- a/fightstick/body3D.go +++ b/fightstick/body3D.go @@ -1 +1,70 @@ package main + +import ( + "log" + + "github.com/deadsy/sdfx/sdf" + v2 "github.com/deadsy/sdfx/vec/v2" + v3 "github.com/deadsy/sdfx/vec/v3" +) + +const ( + TOP_HEIGHT = 3.0 + WALLS_HEIGHT = 45.0 + BOTTOM_HEIGHT = 3.0 +) + +// wallFrontRight is the front right wall. This houses the neutrik connector. +// TODO: Test that measurement because this shit will be infuriating if i print it wrong +func wallFrontRight() sdf.SDF3 { + corner2D := wallCorner() + corner := sdf.Extrude3D(corner2D, WALLS_HEIGHT) + + neutrik2D, err := sdf.Circle2D(BUTTON24_DIAMETER / 2) + if err != nil { + log.Printf("error: %v\n", err) + } + m3Screw, err := sdf.Circle2D(3 / 2) + if err != nil { + log.Printf("error: %v\n", err) + } + neutrik2D = sdf.Union2D(neutrik2D, sdf.Transform2D(m3Screw, sdf.Translate2d(v2.Vec{X: -19 / 2, Y: 24 / 2}))) + neutrik2D = sdf.Union2D(neutrik2D, sdf.Transform2D(m3Screw, sdf.Translate2d(v2.Vec{X: 19 / 2, Y: -24 / 2}))) + + neutrik := sdf.Extrude3D(neutrik2D, WALL_THICKNESS) + neutrik = sdf.Transform3D(neutrik, sdf.RotateY(sdf.DtoR(90))) + neutrik = sdf.Transform3D(neutrik, sdf.Translate3d(v3.Vec{X: BODY_SIZE_X/3 + (WALL_THICKNESS / 2), Y: BODY_SIZE_Y / 3, Z: 0})) + corner = sdf.Difference3D(corner, neutrik) + + return corner +} + +//wallFrontLeft is the front left wall. This houses 4 24mm buttons. +func wallFrontLeft() sdf.SDF3 { + corner2D := wallCorner() + corner2D = sdf.Transform2D(corner2D, sdf.Rotate2d(sdf.DtoR(270))) + corner := sdf.Extrude3D(corner2D, WALLS_HEIGHT) + + functionButtons := sdf.Extrude3D(functionRow(), WALL_THICKNESS) + functionButtons = sdf.Transform3D(functionButtons, sdf.RotateX(sdf.DtoR(90))) + functionButtons = sdf.Transform3D(functionButtons, sdf.Translate3d(v3.Vec{X: BODY_SIZE_X/4.5 + (WALL_THICKNESS / 2), Y: -BODY_SIZE_Y / 2, Z: 0})) + corner = sdf.Difference3D(corner, functionButtons) + + return corner +} + +//wallBackRight is the back right wall. +//TODO: ROTATE +func wallBackRight() sdf.SDF3 { + corner := wallCorner() + corner = sdf.Transform2D(corner, sdf.Rotate2d(sdf.DtoR(90))) + return sdf.Extrude3D(corner, WALLS_HEIGHT) +} + +//wallBackLeft is the back left wall. +//TODO: ROTATE +func wallBackLeft() sdf.SDF3 { + corner := wallCorner() + corner = sdf.Transform2D(corner, sdf.Rotate2d(sdf.DtoR(180))) + return sdf.Extrude3D(corner, WALLS_HEIGHT) +}