77 lines
2.5 KiB
Go
77 lines
2.5 KiB
Go
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)
|
|
|
|
corner = sdf.Transform3D(corner, sdf.MirrorYZ())
|
|
corner = sdf.Transform3D(corner, sdf.Rotate3d(v3.Vec{X: 0, Y: 0, Z: 1}, sdf.DtoR(270)))
|
|
|
|
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)
|
|
|
|
corner = sdf.Transform3D(corner, sdf.Rotate3d(v3.Vec{X: 0, Y: 0, Z: 1}, sdf.DtoR(180)))
|
|
|
|
return corner
|
|
}
|
|
|
|
//wallBackRight is the back right wall.
|
|
//TODO: ROTATE
|
|
func wallBackRight() sdf.SDF3 {
|
|
corner := wallCorner()
|
|
corner = sdf.Transform2D(corner, sdf.Rotate2d(sdf.DtoR(270)))
|
|
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(270)))
|
|
corner = sdf.Transform2D(corner, sdf.MirrorY())
|
|
return sdf.Extrude3D(corner, WALLS_HEIGHT)
|
|
}
|