Documentation ¶
Index ¶
- Constants
- func Abs(x float64) float64
- func BenchmarkSDF2(description string, s SDF2)
- func BenchmarkSDF3(description string, s SDF3)
- func Clamp(x, a, b float64) float64
- func DtoR(degrees float64) float64
- func EqualFloat64(a, b, epsilon float64) bool
- func FloatDecode(x float64) string
- func FloatEncode(s int, f uint64, e int) float64
- func LoadFont(fname string) (*truetype.Font, error)
- func MakeGenevaCam(numSectors int, centerDistance float64, driverRadius float64, ...) (SDF2, SDF2, error)
- func MapCombinations(n, k int, f func([]int))
- func Max(a, b float64) float64
- func Min(a, b float64) float64
- func Mix(x, y, a float64) float64
- func NextCombination(n int, a []int) bool
- func RenderDXF(s SDF2, meshCells int, path string)
- func RenderDXFSlow(s SDF2, meshCells int, path string)
- func RenderSTL(s SDF3, meshCells int, path string)
- func RenderSTLSlow(s SDF3, meshCells int, path string)
- func RenderSVG(s SDF2, meshCells int, path string, lineStyle string) error
- func RenderSVGSlow(s SDF2, meshCells int, path string, lineStyle string) error
- func RtoD(radians float64) float64
- func Save3MF(path string, mesh []*Triangle3) error
- func SaveDXF(path string, mesh []*Line) error
- func SaveSTL(path string, mesh []*Triangle3) error
- func SaveSVG(path, lineStyle string, mesh []*Line) error
- func SawTooth(x, period float64) float64
- func Sign(x float64) float64
- func TriDiagonal(m []V3, d []float64) []float64
- func WriteDXF(wg *sync.WaitGroup, path string) (chan<- *Line, error)
- func WriteSTL(wg *sync.WaitGroup, path string) (chan<- *Triangle3, error)
- func WriteSVG(wg *sync.WaitGroup, path, lineStyle string) (chan<- *Line, error)
- func ZeroSmall(x, y, epsilon float64) float64
- type ArcSpiralSDF2
- type ArraySDF2
- type ArraySDF3
- type Bezier
- type BezierPolynomial
- type BezierSpline
- type BezierVertex
- type BoltParms
- type Box2
- func (a Box2) BottomLeft() V2
- func (a Box2) Center() V2
- func (a Box2) Equals(b Box2, tolerance float64) bool
- func (a Box2) Extend(b Box2) Box2
- func (a Box2) MinMaxDist2(p V2) V2
- func (b *Box2) Random() V2
- func (b *Box2) RandomSet(n int) V2Set
- func (a Box2) ScaleAboutCenter(k float64) Box2
- func (a Box2) Size() V2
- func (a Box2) TopLeft() V2
- func (a Box2) Translate(v V2) Box2
- func (a Box2) Vertices() V2Set
- type Box3
- func (a Box3) Center() V3
- func (a Box3) Equals(b Box3, tolerance float64) bool
- func (a Box3) Extend(b Box3) Box3
- func (a Box3) MinMaxDist2(p V3) V2
- func (b *Box3) Random() V3
- func (b *Box3) RandomSet(n int) V3Set
- func (a Box3) ScaleAboutCenter(k float64) Box3
- func (a Box3) Size() V3
- func (a Box3) Translate(v V3) Box3
- func (a Box3) Vertices() V3Set
- type BoxSDF2
- type BoxSDF3
- type CircleSDF2
- type ConeSDF3
- type CubicPolynomial
- type CubicSpline
- type CubicSplineSDF2
- type CutSDF2
- type CutSDF3
- type CylinderSDF3
- type DXF
- type DifferenceSDF2
- type DifferenceSDF3
- type EdgeI
- type ElongateSDF2
- type ElongateSDF3
- type ExtrudeFunc
- type ExtrudeRoundedSDF3
- type ExtrudeSDF3
- type FingerButtonParms
- type Flange1
- type FlatFlankCamSDF2
- type GearRackSDF2
- type IntersectionSDF3
- type Line
- type Line2
- type LineSDF2
- type LoftSDF3
- type M22
- type M33
- type M44
- type Map2
- type MaxFunc
- type MinFunc
- type MultiCircleSDF2
- type MultiCylinderSDF3
- type NutParms
- type OffsetSDF2
- type OffsetSDF3
- type P2
- type PNG
- type PanelBoxParms
- type PanelParms
- type PolySDF2
- type Polygon
- type PolygonVertex
- func (v *PolygonVertex) Arc(radius float64, facets int) *PolygonVertex
- func (v *PolygonVertex) Chamfer(size float64) *PolygonVertex
- func (v *PolygonVertex) Hide() *PolygonVertex
- func (v *PolygonVertex) Polar() *PolygonVertex
- func (v *PolygonVertex) Rel() *PolygonVertex
- func (v *PolygonVertex) Smooth(radius float64, facets int) *PolygonVertex
- type RotateCopySDF2
- type RotateCopySDF3
- type RotateUnionSDF2
- type RotateUnionSDF3
- type SDF2
- func ANSIButtressThread(radius float64, pitch float64) SDF2
- func AcmeThread(radius float64, pitch float64) SDF2
- func ArcSpiral2D(a, k float64, start, end float64, d float64) SDF2
- func Array2D(sdf SDF2, num V2i, step V2) SDF2
- func Box2D(size V2, round float64) SDF2
- func Center2D(s SDF2) SDF2
- func CenterAndScale2D(s SDF2, k float64) SDF2
- func Circle2D(radius float64) SDF2
- func CubicSpline2D(knot []V2) SDF2
- func Cut2D(sdf SDF2, a, v V2) SDF2
- func Difference2D(s0, s1 SDF2) SDF2
- func Elongate2D(sdf SDF2, h V2) SDF2
- func FingerButton2D(k *FingerButtonParms) SDF2
- func FlatFlankCam2D(distance float64, baseRadius float64, noseRadius float64) SDF2
- func GearRack2D(numberTeeth float64, gearModule float64, pressureAngle float64, ...) SDF2
- func ISOThread(radius float64, pitch float64, mode string) SDF2
- func InvoluteGear(numberTeeth int, gearModule float64, pressureAngle float64, backlash float64, ...) SDF2
- func InvoluteGearTooth(numberTeeth int, gearModule float64, rootRadius float64, baseRadius float64, ...) SDF2
- func KnurlProfile(radius float64, pitch float64, height float64) SDF2
- func Line2D(l, round float64) SDF2
- func LineOf2D(s SDF2, p0, p1 V2, pattern string) SDF2
- func MakeBoltCircle2D(holeRadius float64, circleRadius float64, numHoles int) SDF2
- func MakeFlatFlankCam(lift float64, duration float64, maxDiameter float64) (SDF2, error)
- func MakeThreeArcCam(lift float64, duration float64, maxDiameter float64, k float64) (SDF2, error)
- func MultiCircle2D(radius float64, positions V2Set) SDF2
- func NewFlange1(distance float64, centerRadius float64, sideRadius float64) SDF2
- func Offset2D(sdf SDF2, offset float64) SDF2
- func Panel2D(k *PanelParms) SDF2
- func PlasticButtressThread(radius float64, pitch float64) SDF2
- func Polygon2D(vertex []V2) SDF2
- func RotateCopy2D(sdf SDF2, n int) SDF2
- func RotateUnion2D(sdf SDF2, num int, step M33) SDF2
- func ScaleUniform2D(sdf SDF2, k float64) SDF2
- func Slice2D(sdf SDF3, a V3, n V3) SDF2
- func TextSDF2(f *truetype.Font, t *Text, h float64) (SDF2, error)
- func ThreeArcCam2D(distance float64, baseRadius float64, noseRadius float64, flankRadius float64) SDF2
- func Transform2D(sdf SDF2, m M33) SDF2
- func Union2D(sdf ...SDF2) SDF2
- type SDF3
- func Array3D(sdf SDF3, num V3i, step V3) SDF3
- func Bolt(k *BoltParms) (SDF3, error)
- func Box3D(size V3, round float64) SDF3
- func Capsule3D(radius, height float64) SDF3
- func ChamferedCylinder(s SDF3, kb, kt float64) SDF3
- func ChamferedHole3D(l float64, r float64, chRadius float64) SDF3
- func Cone3D(height, r0, r1, round float64) SDF3
- func CounterBoredHole3D(l float64, r float64, cbRadius float64, cbDepth float64) SDF3
- func CounterSunkHole3D(l float64, r float64) SDF3
- func Cut3D(sdf SDF3, a, n V3) SDF3
- func Cylinder3D(height, radius, round float64) SDF3
- func Difference3D(s0, s1 SDF3) SDF3
- func Elongate3D(sdf SDF3, h V3) SDF3
- func Extrude3D(sdf SDF2, height float64) SDF3
- func ExtrudeRounded3D(sdf SDF2, height, round float64) SDF3
- func HexHead3D(r float64, h float64, round string) SDF3
- func Intersect3D(s0, s1 SDF3) SDF3
- func Knurl3D(length float64, radius float64, pitch float64, height float64, theta float64) SDF3
- func KnurledHead3D(r float64, h float64, pitch float64) SDF3
- func LineOf3D(s SDF3, p0, p1 V3, pattern string) SDF3
- func Loft3D(sdf0, sdf1 SDF2, height, round float64) SDF3
- func MakeBoltCircle3D(holeDepth float64, holeRadius float64, circleRadius float64, numHoles int) SDF3
- func MultiCylinder3D(height, radius float64, positions V2Set) SDF3
- func Nut(k *NutParms) (SDF3, error)
- func Offset3D(sdf SDF3, offset float64) SDF3
- func PanelBox3D(k *PanelBoxParms) []SDF3
- func Revolve3D(sdf SDF2) SDF3
- func RevolveTheta3D(sdf SDF2, theta float64) SDF3
- func RotateCopy3D(sdf SDF3, num int) SDF3
- func RotateUnion3D(sdf SDF3, num int, step M44) SDF3
- func ScaleExtrude3D(sdf SDF2, height float64, scale V2) SDF3
- func ScaleTwistExtrude3D(sdf SDF2, height, twist float64, scale V2) SDF3
- func ScaleUniform3D(sdf SDF3, k float64) SDF3
- func Screw3D(thread SDF2, length float64, pitch float64, starts int) SDF3
- func Sphere3D(radius float64) SDF3
- func Standoff3D(k *StandoffParms) SDF3
- func Standoffs3D(k *StandoffParms, positions V3Set) SDF3
- func Transform3D(sdf SDF3, matrix M44) SDF3
- func TruncRectPyramid3D(k *TruncRectPyramidParms) SDF3
- func TwistExtrude3D(sdf SDF2, height, twist float64) SDF3
- func Union3D(sdf ...SDF3) SDF3
- func Washer3D(k *WasherParms) SDF3
- type STLHeader
- type STLTriangle
- type SVG
- type ScaleUniformSDF2
- type ScaleUniformSDF3
- type ScrewSDF3
- type SliceSDF2
- type SorSDF3
- type SphereSDF3
- type StandoffParms
- type Text
- type ThreadParameters
- type ThreeArcCamSDF2
- type ThreeMFItem
- type ThreeMFMesh
- type ThreeMFModel
- type ThreeMFObject
- type ThreeMFTriangle
- type ThreeMFVertex
- type TransformSDF2
- type TransformSDF3
- type Triangle2
- type Triangle3
- type TriangleI
- type TriangleIByIndex
- type TriangleISet
- type TruncRectPyramidParms
- type UnionSDF2
- type UnionSDF3
- type V2
- func (a V2) Abs() V2
- func (a V2) Add(b V2) V2
- func (a V2) AddScalar(b float64) V2
- func (a V2) CartesianToPolar() P2
- func (a V2) Ceil() V2
- func (a V2) Clamp(b, c V2) V2
- func (a V2) Cross(b V2) float64
- func (a V2) Div(b V2) V2
- func (a V2) DivScalar(b float64) V2
- func (a V2) Dot(b V2) float64
- func (a V2) Equals(b V2, tolerance float64) bool
- func (a V2) Length() float64
- func (a V2) Length2() float64
- func (a V2) Max(b V2) V2
- func (a V2) MaxComponent() float64
- func (a V2) Min(b V2) V2
- func (a V2) MinComponent() float64
- func (a V2) Mul(b V2) V2
- func (a V2) MulScalar(b float64) V2
- func (a V2) Neg() V2
- func (a V2) Normalize() V2
- func (a V2) Overlap(b V2) bool
- func (a V2) Sub(b V2) V2
- func (a V2) SubScalar(b float64) V2
- func (a V2) ToV2i() V2i
- func (a V2) ToV3(z float64) V3
- type V2Set
- type V2SetByX
- type V2i
- type V3
- func (a V3) Abs() V3
- func (a V3) Add(b V3) V3
- func (a V3) AddScalar(b float64) V3
- func (a V3) Ceil() V3
- func (a V3) Clamp(b, c V3) V3
- func (a V3) Cross(b V3) V3
- func (a V3) Div(b V3) V3
- func (a V3) DivScalar(b float64) V3
- func (a V3) Dot(b V3) float64
- func (a V3) Equals(b V3, tolerance float64) bool
- func (a V3) Length() float64
- func (a V3) Length2() float64
- func (a V3) Max(b V3) V3
- func (a V3) MaxComponent() float64
- func (a V3) Min(b V3) V3
- func (a V3) MinComponent() float64
- func (a V3) Mul(b V3) V3
- func (a V3) MulScalar(b float64) V3
- func (a V3) Neg() V3
- func (a V3) Normalize() V3
- func (a V3) Sub(b V3) V3
- func (a V3) SubScalar(b float64) V3
- func (a V3) ToV3i() V3i
- type V3Set
- type V3i
- type WasherParms
Constants ¶
const Mil = MillimetresPerInch / 1000.0
Mil is millimetres per 1/1000 of an inch
const MillimetresPerInch = 25.4
MillimetresPerInch is millimetres per inch (25.4)
const Pi = math.Pi
Pi (3.14159...)
const Tau = 2 * math.Pi
Tau (2 * Pi).
Variables ¶
This section is empty.
Functions ¶
func BenchmarkSDF2 ¶
BenchmarkSDF2 reports the evaluation speed for an SDF2.
func BenchmarkSDF3 ¶
BenchmarkSDF3 reports the evaluation speed for an SDF3.
func EqualFloat64 ¶
EqualFloat64 compares two float64 values for equality.
func FloatDecode ¶
FloatDecode returns a string that decodes the float64 bitfields.
func FloatEncode ¶
FloatEncode encodes a float64 from sign, fraction and exponent values.
func MakeGenevaCam ¶
func MakeGenevaCam( numSectors int, centerDistance float64, driverRadius float64, drivenRadius float64, pinRadius float64, clearance float64, ) (SDF2, SDF2, error)
MakeGenevaCam makes 2d profiles for the driver/driven wheels of a geneva cam.
func MapCombinations ¶
MapCombinations applies a function f to each k-length combination from 0 to n-1.
func NextCombination ¶
NextCombination generates the next k-length combination of 0 to n-1. (returns false when done).
func RenderDXFSlow ¶
RenderDXFSlow renders an SDF2 as a DXF file. (uses uniform grid sampling)
func RenderSTLSlow ¶
RenderSTLSlow renders an SDF3 as an STL file (uses uniform grid sampling).
func RenderSVGSlow ¶
RenderSVGSlow renders an SDF2 as an SVG file. (uses uniform grid sampling)
func TriDiagonal ¶
TriDiagonal solves the tridiagonal matrix equation m.x = d, returns x. See: https://en.wikipedia.org/wiki/Tridiagonal_matrix_algorithm
Types ¶
type ArcSpiralSDF2 ¶
type ArcSpiralSDF2 struct {
// contains filtered or unexported fields
}
ArcSpiralSDF2 is a 2d Archimedean spiral.
func (*ArcSpiralSDF2) BoundingBox ¶
func (s *ArcSpiralSDF2) BoundingBox() Box2
BoundingBox returns the bounding box of a 2d Archimedean spiral.
func (*ArcSpiralSDF2) Evaluate ¶
func (s *ArcSpiralSDF2) Evaluate(p V2) float64
Evaluate returns the minimum distance to a 2d Archimedean spiral.
type ArraySDF2 ¶
type ArraySDF2 struct {
// contains filtered or unexported fields
}
ArraySDF2 defines an XY grid array of an existing SDF2.
func (*ArraySDF2) BoundingBox ¶
BoundingBox returns the bounding box of a grid array of SDF2s.
type ArraySDF3 ¶
type ArraySDF3 struct {
// contains filtered or unexported fields
}
ArraySDF3 stores an XYZ array of a given SDF3
func (*ArraySDF3) BoundingBox ¶
BoundingBox returns the bounding box of an XYZ SDF3 array.
type Bezier ¶
type Bezier struct {
// contains filtered or unexported fields
}
Bezier curve specification..
func (*Bezier) Add ¶
func (b *Bezier) Add(x, y float64) *BezierVertex
Add an x,y vertex to a polygon.
func (*Bezier) AddV2 ¶
func (b *Bezier) AddV2(x V2) *BezierVertex
AddV2 adds a V2 vertex to a polygon.
type BezierPolynomial ¶
type BezierPolynomial struct {
// contains filtered or unexported fields
}
BezierPolynomial contains the bezier polynomial parameters.
func (*BezierPolynomial) Set ¶
func (p *BezierPolynomial) Set(x []float64)
Set calculates bezier polynomial coefficients given the end/control points.
type BezierSpline ¶
type BezierSpline struct {
// contains filtered or unexported fields
}
BezierSpline contains the x/y bezier curves for a 2D spline.
func NewBezierSpline ¶
func NewBezierSpline(p []V2) *BezierSpline
NewBezierSpline returns a bezier spline from the provided control/end points.
type BezierVertex ¶
type BezierVertex struct {
// contains filtered or unexported fields
}
BezierVertex specifies the vertex for a bezier curve.
func (*BezierVertex) Handle ¶
func (v *BezierVertex) Handle(theta, fwd, rev float64) *BezierVertex
Handle marks the vertex with a slope control handle.
func (*BezierVertex) HandleFwd ¶
func (v *BezierVertex) HandleFwd(theta, r float64) *BezierVertex
HandleFwd sets the slope handle in the forward direction.
func (*BezierVertex) HandleRev ¶
func (v *BezierVertex) HandleRev(theta, r float64) *BezierVertex
HandleRev sets the slope handle in the reverse direction.
func (*BezierVertex) Mid ¶
func (v *BezierVertex) Mid() *BezierVertex
Mid marks the vertex as a mid-curve control point.
type BoltParms ¶
type BoltParms struct { Thread string // name of thread Style string // head style "hex" or "knurl" Tolerance float64 // subtract from external thread radius TotalLength float64 // threaded length + shank length ShankLength float64 // non threaded length }
BoltParms defines the parameters for a bolt.
type Box2 ¶
type Box2 struct {
Min, Max V2
}
Box2 is a 2d bounding box.
func (Box2) BottomLeft ¶
BottomLeft returns the bottom left corner of a 2d bounding box.
func (Box2) MinMaxDist2 ¶
MinMaxDist2 returns the minimum and maximum dist * dist from a point to a box. Points within the box have minimum distance = 0.
func (Box2) ScaleAboutCenter ¶
ScaleAboutCenter returns a new 2d box scaled about the center of a box.
type Box3 ¶
type Box3 struct {
Min, Max V3
}
Box3 is a 3d bounding box.
func (Box3) MinMaxDist2 ¶
MinMaxDist2 returns the minimum and maximum dist * dist from a point to a box. Points within the box have minimum distance = 0.
func (Box3) ScaleAboutCenter ¶
ScaleAboutCenter returns a new 3d box scaled about the center of a box.
type BoxSDF2 ¶
type BoxSDF2 struct {
// contains filtered or unexported fields
}
BoxSDF2 is the 2d signed distance object for a rectangular box.
func (*BoxSDF2) BoundingBox ¶
BoundingBox returns the bounding box for a 2d box.
type BoxSDF3 ¶
type BoxSDF3 struct {
// contains filtered or unexported fields
}
BoxSDF3 is a 3d box.
func (*BoxSDF3) BoundingBox ¶
BoundingBox returns the bounding box for a 3d box.
type CircleSDF2 ¶
type CircleSDF2 struct {
// contains filtered or unexported fields
}
CircleSDF2 is the 2d signed distance object for a circle.
func (*CircleSDF2) BoundingBox ¶
func (s *CircleSDF2) BoundingBox() Box2
BoundingBox returns the bounding box of a 2d circle.
func (*CircleSDF2) Evaluate ¶
func (s *CircleSDF2) Evaluate(p V2) float64
Evaluate returns the minimum distance to a 2d circle.
type ConeSDF3 ¶
type ConeSDF3 struct {
// contains filtered or unexported fields
}
ConeSDF3 is a truncated cone.
func (*ConeSDF3) BoundingBox ¶
BoundingBox return the bounding box for the trucated cone..
type CubicPolynomial ¶
type CubicPolynomial struct {
// contains filtered or unexported fields
}
CubicPolynomial is a cubic polynomial
func (*CubicPolynomial) Set ¶
func (p *CubicPolynomial) Set(y0, y1, D0, D1 float64)
Set cubic polynomial coefficient values.
type CubicSpline ¶
type CubicSpline struct {
// contains filtered or unexported fields
}
CubicSpline is a 2d cubic spline.
func (*CubicSpline) BoundingBox ¶
func (s *CubicSpline) BoundingBox() Box2
BoundingBox returns the bounding box for a cubic spline.
type CubicSplineSDF2 ¶
type CubicSplineSDF2 struct {
// contains filtered or unexported fields
}
CubicSplineSDF2 is an SDF2 made from a set of cubic splines.
func (*CubicSplineSDF2) BoundingBox ¶
func (s *CubicSplineSDF2) BoundingBox() Box2
BoundingBox returns the 2d bounding box of a cubic spline.
func (*CubicSplineSDF2) Evaluate ¶
func (s *CubicSplineSDF2) Evaluate(p V2) float64
Evaluate returns the minimum distance from a point to the cubic spline SDF2. Note: This uses Newton-Raphson minimisation and is unstable in some circumstances. A simple (and slower) solution is to convert the cubic spline SDF2 to a polygon SDF2 and use that for rendering.
func (*CubicSplineSDF2) PolySpline2D ¶
func (s *CubicSplineSDF2) PolySpline2D(n int) SDF2
PolySpline2D returns a polygon SDF2 approximating a cubic spline SDF2.
func (*CubicSplineSDF2) Polygonize ¶
func (s *CubicSplineSDF2) Polygonize(n int) *Polygon
Polygonize returns a polygon approximating the cubic spline SDF2.
type CutSDF2 ¶
type CutSDF2 struct {
// contains filtered or unexported fields
}
CutSDF2 is an SDF2 made by cutting across an existing SDF2.
func (*CutSDF2) BoundingBox ¶
BoundingBox returns the bounding box for the cut SDF2.
type CutSDF3 ¶
type CutSDF3 struct {
// contains filtered or unexported fields
}
CutSDF3 makes a planar cut through an SDF3.
func (*CutSDF3) BoundingBox ¶
BoundingBox returns the bounding box of the cut SDF3.
type CylinderSDF3 ¶
type CylinderSDF3 struct {
// contains filtered or unexported fields
}
CylinderSDF3 is a cylinder.
func (*CylinderSDF3) BoundingBox ¶
func (s *CylinderSDF3) BoundingBox() Box3
BoundingBox returns the bounding box for a cylinder.
func (*CylinderSDF3) Evaluate ¶
func (s *CylinderSDF3) Evaluate(p V3) float64
Evaluate returns the minimum distance to a cylinder.
type DXF ¶
type DXF struct {
// contains filtered or unexported fields
}
DXF is a dxf drawing object.
type DifferenceSDF2 ¶
type DifferenceSDF2 struct {
// contains filtered or unexported fields
}
DifferenceSDF2 is the difference of two SDF2s.
func (*DifferenceSDF2) BoundingBox ¶
func (s *DifferenceSDF2) BoundingBox() Box2
BoundingBox returns the bounding box of the difference of two SDF2s.
func (*DifferenceSDF2) Evaluate ¶
func (s *DifferenceSDF2) Evaluate(p V2) float64
Evaluate returns the minimum distance to the difference of two SDF2s.
func (*DifferenceSDF2) SetMax ¶
func (s *DifferenceSDF2) SetMax(max MaxFunc)
SetMax sets the maximum function to control blending.
type DifferenceSDF3 ¶
type DifferenceSDF3 struct {
// contains filtered or unexported fields
}
DifferenceSDF3 is the difference of two SDF3s, s0 - s1.
func (*DifferenceSDF3) BoundingBox ¶
func (s *DifferenceSDF3) BoundingBox() Box3
BoundingBox returns the bounding box of the SDF3 difference.
func (*DifferenceSDF3) Evaluate ¶
func (s *DifferenceSDF3) Evaluate(p V3) float64
Evaluate returns the minimum distance to the SDF3 difference.
func (*DifferenceSDF3) SetMax ¶
func (s *DifferenceSDF3) SetMax(max MaxFunc)
SetMax sets the maximum function to control blending.
type ElongateSDF2 ¶
type ElongateSDF2 struct {
// contains filtered or unexported fields
}
ElongateSDF2 is the elongation of an SDF2.
func (*ElongateSDF2) BoundingBox ¶
func (s *ElongateSDF2) BoundingBox() Box2
BoundingBox returns the bounding box of an elongated SDF2.
func (*ElongateSDF2) Evaluate ¶
func (s *ElongateSDF2) Evaluate(p V2) float64
Evaluate returns the minimum distance to an elongated SDF2.
type ElongateSDF3 ¶
type ElongateSDF3 struct {
// contains filtered or unexported fields
}
ElongateSDF3 is the elongation of an SDF3.
func (*ElongateSDF3) BoundingBox ¶
func (s *ElongateSDF3) BoundingBox() Box3
BoundingBox returns the bounding box of an elongated SDF3.
func (*ElongateSDF3) Evaluate ¶
func (s *ElongateSDF3) Evaluate(p V3) float64
Evaluate returns the minimum distance to a elongated SDF2.
type ExtrudeFunc ¶
ExtrudeFunc maps V3 to V2 - the point used to evaluate the SDF2.
func ScaleExtrude ¶
func ScaleExtrude(height float64, scale V2) ExtrudeFunc
ScaleExtrude returns an extrusion functions that scales with z.
func ScaleTwistExtrude ¶
func ScaleTwistExtrude(height, twist float64, scale V2) ExtrudeFunc
ScaleTwistExtrude returns an extrusion function that scales and twists with z.
func TwistExtrude ¶
func TwistExtrude(height, twist float64) ExtrudeFunc
TwistExtrude returns an extrusion function that twists with z.
type ExtrudeRoundedSDF3 ¶
type ExtrudeRoundedSDF3 struct {
// contains filtered or unexported fields
}
ExtrudeRoundedSDF3 extrudes an SDF2 to an SDF3 with rounded edges.
func (*ExtrudeRoundedSDF3) BoundingBox ¶
func (s *ExtrudeRoundedSDF3) BoundingBox() Box3
BoundingBox returns the bounding box for a rounded extrusion.
func (*ExtrudeRoundedSDF3) Evaluate ¶
func (s *ExtrudeRoundedSDF3) Evaluate(p V3) float64
Evaluate returns the minimum distance to a rounded extrusion.
type ExtrudeSDF3 ¶
type ExtrudeSDF3 struct {
// contains filtered or unexported fields
}
ExtrudeSDF3 extrudes an SDF2 to an SDF3.
func (*ExtrudeSDF3) BoundingBox ¶
func (s *ExtrudeSDF3) BoundingBox() Box3
BoundingBox returns the bounding box for an extrusion.
func (*ExtrudeSDF3) Evaluate ¶
func (s *ExtrudeSDF3) Evaluate(p V3) float64
Evaluate returns the minimum distance to an extrusion.
func (*ExtrudeSDF3) SetExtrude ¶
func (s *ExtrudeSDF3) SetExtrude(extrude ExtrudeFunc)
SetExtrude sets the extrusion control function.
type FingerButtonParms ¶
type FingerButtonParms struct { Width float64 // finger width Gap float64 // gap between finger and body Length float64 // length of the finger }
FingerButtonParms defines the parameters for a 2D finger button.
type Flange1 ¶
type Flange1 struct {
// contains filtered or unexported fields
}
Flange1 is a flange shape made from a center circle with two side circles.
func (*Flange1) BoundingBox ¶
BoundingBox returns the bounding box for the flange.
type FlatFlankCamSDF2 ¶
type FlatFlankCamSDF2 struct {
// contains filtered or unexported fields
}
FlatFlankCamSDF2 is 2d cam profile. The profile is made from a base circle, a smaller nose circle and flat, tangential flanks.
func (*FlatFlankCamSDF2) BoundingBox ¶
func (s *FlatFlankCamSDF2) BoundingBox() Box2
BoundingBox returns the bounding box for the cam.
func (*FlatFlankCamSDF2) Evaluate ¶
func (s *FlatFlankCamSDF2) Evaluate(p V2) float64
Evaluate returns the minimum distance to the cam.
type GearRackSDF2 ¶
type GearRackSDF2 struct {
// contains filtered or unexported fields
}
GearRackSDF2 is a 2d linear gear rack.
func (*GearRackSDF2) BoundingBox ¶
func (s *GearRackSDF2) BoundingBox() Box2
BoundingBox returns the bounding box for the gear rack.
func (*GearRackSDF2) Evaluate ¶
func (s *GearRackSDF2) Evaluate(p V2) float64
Evaluate returns the minimum distance to the gear rack.
type IntersectionSDF3 ¶
type IntersectionSDF3 struct {
// contains filtered or unexported fields
}
IntersectionSDF3 is the intersection of two SDF3s.
func (*IntersectionSDF3) BoundingBox ¶
func (s *IntersectionSDF3) BoundingBox() Box3
BoundingBox returns the bounding box of an SDF3 intersection.
func (*IntersectionSDF3) Evaluate ¶
func (s *IntersectionSDF3) Evaluate(p V3) float64
Evaluate returns the minimum distance to the SDF3 intersection.
func (*IntersectionSDF3) SetMax ¶
func (s *IntersectionSDF3) SetMax(max MaxFunc)
SetMax sets the maximum function to control blending.
type Line ¶
type Line [2]V2
Line is a 2d line segment defined with 2 points.
func (Line) Degenerate ¶
Degenerate returns true if the line is degenerate.
type Line2 ¶
type Line2 struct {
// contains filtered or unexported fields
}
Line2 is a 2d line defined as either point/point or point/vector.
func (Line2) Distance ¶
Distance returns the distance to the line. Greater than 0 implies to the right of the line vector.
type LineSDF2 ¶
type LineSDF2 struct {
// contains filtered or unexported fields
}
LineSDF2 is the 2d signed distance object for a line.
func (*LineSDF2) BoundingBox ¶
BoundingBox returns the bounding box for a 2d line.
type LoftSDF3 ¶
type LoftSDF3 struct {
// contains filtered or unexported fields
}
LoftSDF3 is an extrusion between two SDF2s.
func (*LoftSDF3) BoundingBox ¶
BoundingBox returns the bounding box for a loft extrusion.
type M22 ¶
type M22 struct {
// contains filtered or unexported fields
}
M22 is a 2x2 matrix.
func (M22) Determinant ¶
Determinant returns the determinant of a 2x2 matrix.
func (M22) MulPosition ¶
MulPosition multiplies a V2 position with a rotate matrix.
type M33 ¶
type M33 struct {
// contains filtered or unexported fields
}
M33 is a 3x3 matrix.
func Scale2d ¶
Scale2d returns a 3x3 scaling matrix. Scaling does not preserve distance. See: ScaleUniform2D().
func (M33) Determinant ¶
Determinant returns the determinant of a 3x3 matrix.
func (M33) MulPosition ¶
MulPosition multiplies a V2 position with a rotate/translate matrix.
type M44 ¶
type M44 struct {
// contains filtered or unexported fields
}
M44 is a 4x4 matrix.
func MirrorXY ¶
func MirrorXY() M44
MirrorXY returns a 4x4 matrix with mirroring across the XY plane.
func MirrorXZ ¶
func MirrorXZ() M44
MirrorXZ returns a 4x4 matrix with mirroring across the XZ plane.
func MirrorYZ ¶
func MirrorYZ() M44
MirrorYZ returns a 4x4 matrix with mirroring across the YZ plane.
func Scale3d ¶
Scale3d returns a 4x4 scaling matrix. Scaling does not preserve distance. See: ScaleUniform3D()
func (M44) Determinant ¶
Determinant returns the determinant of a 4x4 matrix.
func (M44) MulPosition ¶
MulPosition multiplies a V3 position with a rotate/translate matrix.
type Map2 ¶
type Map2 struct {
// contains filtered or unexported fields
}
Map2 maps a 2d region to integer grid coordinates.
type MinFunc ¶
MinFunc is a minimum functions for SDF blending.
func ChamferMin ¶
ChamferMin returns a minimum function that makes a 45-degree chamfered edge (the diagonal of a square of size <r>). TODO: why the holes in the rendering?
type MultiCircleSDF2 ¶
type MultiCircleSDF2 struct {
// contains filtered or unexported fields
}
MultiCircleSDF2 is an SDF2 made from multiple circles (used for hole patterns).
func (*MultiCircleSDF2) BoundingBox ¶
func (s *MultiCircleSDF2) BoundingBox() Box2
BoundingBox returns the bounding box for multiple circles.
func (*MultiCircleSDF2) Evaluate ¶
func (s *MultiCircleSDF2) Evaluate(p V2) float64
Evaluate returns the minimum distance to multiple circles.
type MultiCylinderSDF3 ¶
type MultiCylinderSDF3 struct {
// contains filtered or unexported fields
}
MultiCylinderSDF3 is an SDF3 containing multiple cylinders.
func (*MultiCylinderSDF3) BoundingBox ¶
func (s *MultiCylinderSDF3) BoundingBox() Box3
BoundingBox return the bounding box for multiple cylinders.
func (*MultiCylinderSDF3) Evaluate ¶
func (s *MultiCylinderSDF3) Evaluate(p V3) float64
Evaluate return the minimum distance to multiple cylinders.
type NutParms ¶
type NutParms struct { Thread string // name of thread Style string // head style "hex" or "knurl" Tolerance float64 // add to internal thread radius }
NutParms defines the parameters for a nut.
type OffsetSDF2 ¶
type OffsetSDF2 struct {
// contains filtered or unexported fields
}
OffsetSDF2 offsets the distance function of an existing SDF2.
func (*OffsetSDF2) BoundingBox ¶
func (s *OffsetSDF2) BoundingBox() Box2
BoundingBox returns the bounding box of an offset SDF2.
func (*OffsetSDF2) Evaluate ¶
func (s *OffsetSDF2) Evaluate(p V2) float64
Evaluate returns the minimum distance to an offset SDF2.
type OffsetSDF3 ¶
type OffsetSDF3 struct {
// contains filtered or unexported fields
}
OffsetSDF3 offsets the distance function of an existing SDF3.
func (*OffsetSDF3) BoundingBox ¶
func (s *OffsetSDF3) BoundingBox() Box3
BoundingBox returns the bounding box of an offset SDF3.
func (*OffsetSDF3) Evaluate ¶
func (s *OffsetSDF3) Evaluate(p V3) float64
Evaluate returns the minimum distance to an offset SDF3.
type P2 ¶
type P2 struct {
R, Theta float64
}
P2 is a 2d float64 polar vector.
func (P2) PolarToCartesian ¶
PolarToCartesian converts a polar to a cartesian coordinate.
type PNG ¶
type PNG struct {
// contains filtered or unexported fields
}
PNG is a png image object.
func (*PNG) RenderSDF2 ¶
RenderSDF2 renders a 2d signed distance field as gray scale.
type PanelBoxParms ¶
type PanelBoxParms struct { Size V3 // outer box dimensions (width, height, length) Wall float64 // wall thickness Panel float64 // front/back panel thickness Rounding float64 // radius of corner rounding FrontInset float64 // inset depth of box front BackInset float64 // inset depth of box back Clearance float64 // fit clearance (typically 0.05) Hole float64 // diameter of screw holes SideTabs string // tab pattern b/B (bottom) t/T (top) . (empty) }
PanelBoxParms defines the parameters for a 4 part panel box.
type PanelParms ¶
type PanelParms struct { Size V2 CornerRadius float64 HoleDiameter float64 HoleMargin [4]float64 // top, right, bottom, left HolePattern [4]string // top, right, bottom, left }
PanelParms defines the parameters for a 2D panel.
type PolySDF2 ¶
type PolySDF2 struct {
// contains filtered or unexported fields
}
PolySDF2 is an SDF2 made from a closed set of line segments.
func (*PolySDF2) BoundingBox ¶
BoundingBox returns the bounding box of a 2d polygon.
type Polygon ¶
type Polygon struct {
// contains filtered or unexported fields
}
Polygon stores a set of 2d polygon vertices.
func (*Polygon) Add ¶
func (p *Polygon) Add(x, y float64) *PolygonVertex
Add an x,y vertex to a polygon.
func (*Polygon) AddV2 ¶
func (p *Polygon) AddV2(x V2) *PolygonVertex
AddV2 adds a V2 vertex to a polygon.
type PolygonVertex ¶
type PolygonVertex struct {
// contains filtered or unexported fields
}
PolygonVertex is a polygon vertex.
func (*PolygonVertex) Arc ¶
func (v *PolygonVertex) Arc(radius float64, facets int) *PolygonVertex
Arc replaces a line segment with a circular arc.
func (*PolygonVertex) Chamfer ¶
func (v *PolygonVertex) Chamfer(size float64) *PolygonVertex
Chamfer marks the polygon vertex for chamfering.
func (*PolygonVertex) Hide ¶
func (v *PolygonVertex) Hide() *PolygonVertex
Hide hides the line segment for this vertex in the dxf render.
func (*PolygonVertex) Polar ¶
func (v *PolygonVertex) Polar() *PolygonVertex
Polar treats the polygon vertex values as polar coordinates (r, theta).
func (*PolygonVertex) Rel ¶
func (v *PolygonVertex) Rel() *PolygonVertex
Rel positions the polygon vertex relative to the prior vertex.
func (*PolygonVertex) Smooth ¶
func (v *PolygonVertex) Smooth(radius float64, facets int) *PolygonVertex
Smooth marks the polygon vertex for smoothing.
type RotateCopySDF2 ¶
type RotateCopySDF2 struct {
// contains filtered or unexported fields
}
RotateCopySDF2 copies an SDF2 n times in a full circle.
func (*RotateCopySDF2) BoundingBox ¶
func (s *RotateCopySDF2) BoundingBox() Box2
BoundingBox returns the bounding box of a rotate/copy SDF2.
func (*RotateCopySDF2) Evaluate ¶
func (s *RotateCopySDF2) Evaluate(p V2) float64
Evaluate returns the minimum distance to a rotate/copy SDF2.
type RotateCopySDF3 ¶
type RotateCopySDF3 struct {
// contains filtered or unexported fields
}
RotateCopySDF3 rotates and creates N copies of an SDF3 about the z-axis.
func (*RotateCopySDF3) BoundingBox ¶
func (s *RotateCopySDF3) BoundingBox() Box3
BoundingBox returns the bounding box of a rotate/copy SDF3.
func (*RotateCopySDF3) Evaluate ¶
func (s *RotateCopySDF3) Evaluate(p V3) float64
Evaluate returns the minimum distance to a rotate/copy SDF3.
type RotateUnionSDF2 ¶
type RotateUnionSDF2 struct {
// contains filtered or unexported fields
}
RotateUnionSDF2 defines a union of rotated SDF2s.
func (*RotateUnionSDF2) BoundingBox ¶
func (s *RotateUnionSDF2) BoundingBox() Box2
BoundingBox returns the bounding box of a union of rotated SDF2s.
func (*RotateUnionSDF2) Evaluate ¶
func (s *RotateUnionSDF2) Evaluate(p V2) float64
Evaluate returns the minimum distance to a union of rotated SDF2s.
func (*RotateUnionSDF2) SetMin ¶
func (s *RotateUnionSDF2) SetMin(min MinFunc)
SetMin sets the minimum function to control blending.
type RotateUnionSDF3 ¶
type RotateUnionSDF3 struct {
// contains filtered or unexported fields
}
RotateUnionSDF3 creates a union of SDF3s rotated about the z-axis.
func (*RotateUnionSDF3) BoundingBox ¶
func (s *RotateUnionSDF3) BoundingBox() Box3
BoundingBox returns the bounding box of a rotate/union object.
func (*RotateUnionSDF3) Evaluate ¶
func (s *RotateUnionSDF3) Evaluate(p V3) float64
Evaluate returns the minimum distance to a rotate/union object.
func (*RotateUnionSDF3) SetMin ¶
func (s *RotateUnionSDF3) SetMin(min MinFunc)
SetMin sets the minimum function to control blending.
type SDF2 ¶
SDF2 is the interface to a 2d signed distance function object.
func ANSIButtressThread ¶
ANSIButtressThread returns the 2d profile for an ANSI 45/7 buttress thread. https://en.wikipedia.org/wiki/Buttress_thread AMSE B1.9-1973
func AcmeThread ¶
AcmeThread returns the 2d profile for an acme thread.
func ArcSpiral2D ¶
ArcSpiral2D returns a 2d Archimedean spiral (r = m*theta + b).
func CenterAndScale2D ¶
CenterAndScale2D centers the origin of an SDF2 on it's bounding box, and then scales it. Distance is correct with scaling.
func CubicSpline2D ¶
CubicSpline2D returns an SDF2 made from a set of cubic splines.
func Cut2D ¶
Cut2D cuts the SDF2 along a line from a in direction v. The SDF2 to the right of the line remains.
func Difference2D ¶
Difference2D returns the difference of two SDF2 objects, s0 - s1.
func Elongate2D ¶
Elongate2D returns the elongation of an SDF2.
func FingerButton2D ¶
func FingerButton2D(k *FingerButtonParms) SDF2
FingerButton2D returns a 2D cutout for a finger button.
func FlatFlankCam2D ¶
FlatFlankCam2D creates a 2D cam profile. The profile is made from a base circle, a smaller nose circle and flat, tangential flanks. The base circle is centered on the origin. The nose circle is located on the positive y axis.
func GearRack2D ¶
func GearRack2D( numberTeeth float64, gearModule float64, pressureAngle float64, backlash float64, baseHeight float64, ) SDF2
GearRack2D returns the 2D profile for a gear rack.
func ISOThread ¶
ISOThread returns the 2d profile for an ISO/UTS thread. https://en.wikipedia.org/wiki/ISO_metric_screw_thread https://en.wikipedia.org/wiki/Unified_Thread_Standard
func InvoluteGear ¶
func InvoluteGear( numberTeeth int, gearModule float64, pressureAngle float64, backlash float64, clearance float64, ringWidth float64, facets int, ) SDF2
InvoluteGear returns an 2D polygon for an involute gear.
func InvoluteGearTooth ¶
func InvoluteGearTooth( numberTeeth int, gearModule float64, rootRadius float64, baseRadius float64, outerRadius float64, backlash float64, facets int, ) SDF2
InvoluteGearTooth returns a 2D profile for a single involute tooth.
func KnurlProfile ¶
KnurlProfile returns a 2D knurl profile.
func MakeBoltCircle2D ¶
MakeBoltCircle2D returns a 2D profile for a flange bolt circle.
func MakeFlatFlankCam ¶
MakeFlatFlankCam makes a flat flank cam profile from design parameters.
func MakeThreeArcCam ¶
func MakeThreeArcCam( lift float64, duration float64, maxDiameter float64, k float64, ) (SDF2, error)
MakeThreeArcCam makes a three arc cam profile from design parameters.
func MultiCircle2D ¶
MultiCircle2D returns an SDF2 for multiple circles.
func NewFlange1 ¶
NewFlange1 returns a flange shape made from a center circle with two side circles.
func PlasticButtressThread ¶
PlasticButtressThread returns the 2d profile for a screw top style plastic buttress thread. Similar to ANSI 45/7 - but with more corner rounding
func RotateCopy2D ¶
RotateCopy2D rotates and copies an SDF2 n times in a full circle.
func RotateUnion2D ¶
RotateUnion2D returns a union of rotated SDF2s.
func ScaleUniform2D ¶
ScaleUniform2D scales an SDF2 by k on each axis. Distance is correct with scaling.
func ThreeArcCam2D ¶
func ThreeArcCam2D( distance float64, baseRadius float64, noseRadius float64, flankRadius float64, ) SDF2
ThreeArcCam2D creates a 2D cam profile. The profile is made from a base circle, a smaller nose circle and circular flank arcs. The base circle is centered on the origin. The nose circle is located on the positive y axis. The flank arcs are tangential to the base and nose circles.
func Transform2D ¶
Transform2D applies a transformation matrix to an SDF2. Distance is *not* preserved with scaling.
type SDF3 ¶
SDF3 is the interface to a 3d signed distance function object.
func ChamferedCylinder ¶
ChamferedCylinder intersects a chamfered cylinder with an SDF3.
func ChamferedHole3D ¶
ChamferedHole3D returns the SDF3 for a chamfered hole (45 degrees).
func CounterBoredHole3D ¶
CounterBoredHole3D returns the SDF3 for a counterbored hole.
func CounterSunkHole3D ¶
CounterSunkHole3D returns the SDF3 for a countersunk hole (45 degrees).
func Cut3D ¶
Cut3D cuts an SDF3 along a plane passing through a with normal n. The SDF3 on the same side as the normal remains.
func Cylinder3D ¶
Cylinder3D return an SDF3 for a cylinder (rounded edges with round > 0).
func Difference3D ¶
Difference3D returns the difference of two SDF3s, s0 - s1.
func Elongate3D ¶
Elongate3D returns the elongation of an SDF3.
func ExtrudeRounded3D ¶
ExtrudeRounded3D does a linear extrude ao SDF2 with rounded edges.
func Intersect3D ¶
Intersect3D returns the intersection of two SDF3s.
func KnurledHead3D ¶
KnurledHead3D returns a cylindrical knurled head.
func MakeBoltCircle3D ¶
func MakeBoltCircle3D( holeDepth float64, holeRadius float64, circleRadius float64, numHoles int, ) SDF3
MakeBoltCircle3D returns a 3D object for a flange bolt circle.
func MultiCylinder3D ¶
MultiCylinder3D return an SDF3 for multiple cylinders.
func RevolveTheta3D ¶
RevolveTheta3D returns an SDF3 for a solid of revolution.
func RotateCopy3D ¶
RotateCopy3D rotates and creates N copies of an SDF3 about the z-axis.
func RotateUnion3D ¶
RotateUnion3D creates a union of SDF3s rotated about the z-axis.
func ScaleExtrude3D ¶
ScaleExtrude3D extrudes an SDF2 and scales it over the height of the extrusion.
func ScaleTwistExtrude3D ¶
ScaleTwistExtrude3D extrudes an SDF2 and scales and twists it over the height of the extrusion.
func ScaleUniform3D ¶
ScaleUniform3D uniformly scales an SDF3 on all axes.
func Standoff3D ¶
func Standoff3D(k *StandoffParms) SDF3
Standoff3D returns a single board standoff.
func Standoffs3D ¶
func Standoffs3D(k *StandoffParms, positions V3Set) SDF3
Standoffs3D returns multiple board standoffs at various positions.
func Transform3D ¶
Transform3D applies a transformation matrix to an SDF3.
func TruncRectPyramid3D ¶
func TruncRectPyramid3D(k *TruncRectPyramidParms) SDF3
TruncRectPyramid3D returns a truncated rectangular pyramid with rounded edges.
func TwistExtrude3D ¶
TwistExtrude3D extrudes an SDF2 while rotating by twist radians over the height of the extrusion.
func Washer3D ¶
func Washer3D(k *WasherParms) SDF3
Washer3D returns a washer. This is also used to create circular walls.
type STLHeader ¶
type STLHeader struct { Count uint32 // Number of triangles // contains filtered or unexported fields }
STLHeader defines the STL file header.
type STLTriangle ¶
type STLTriangle struct {
Normal, Vertex1, Vertex2, Vertex3 [3]float32
// contains filtered or unexported fields
}
STLTriangle defines the triangle data within an STL file.
type SVG ¶
type SVG struct {
// contains filtered or unexported fields
}
SVG represents an SVG renderer.
type ScaleUniformSDF2 ¶
type ScaleUniformSDF2 struct {
// contains filtered or unexported fields
}
ScaleUniformSDF2 scales another SDF2 on each axis.
func (*ScaleUniformSDF2) BoundingBox ¶
func (s *ScaleUniformSDF2) BoundingBox() Box2
BoundingBox returns the bounding box of an SDF2 with uniform scaling.
func (*ScaleUniformSDF2) Evaluate ¶
func (s *ScaleUniformSDF2) Evaluate(p V2) float64
Evaluate returns the minimum distance to an SDF2 with uniform scaling.
type ScaleUniformSDF3 ¶
type ScaleUniformSDF3 struct {
// contains filtered or unexported fields
}
ScaleUniformSDF3 is an SDF3 scaled uniformly in XYZ directions.
func (*ScaleUniformSDF3) BoundingBox ¶
func (s *ScaleUniformSDF3) BoundingBox() Box3
BoundingBox returns the bounding box of a uniformly scaled SDF3.
func (*ScaleUniformSDF3) Evaluate ¶
func (s *ScaleUniformSDF3) Evaluate(p V3) float64
Evaluate returns the minimum distance to a uniformly scaled SDF3. The distance is correct with scaling.
type ScrewSDF3 ¶
type ScrewSDF3 struct {
// contains filtered or unexported fields
}
ScrewSDF3 is a 3d screw form.
func (*ScrewSDF3) BoundingBox ¶
BoundingBox returns the bounding box for a 3d screw form.
type SliceSDF2 ¶
type SliceSDF2 struct {
// contains filtered or unexported fields
}
SliceSDF2 creates an SDF2 from a planar slice through an SDF3.
func (*SliceSDF2) BoundingBox ¶
BoundingBox returns the bounding box of the sliced SDF2.
type SorSDF3 ¶
type SorSDF3 struct {
// contains filtered or unexported fields
}
SorSDF3 solid of revolution, SDF2 to SDF3.
func (*SorSDF3) BoundingBox ¶
BoundingBox returns the bounding box for a solid of revolution.
type SphereSDF3 ¶
type SphereSDF3 struct {
// contains filtered or unexported fields
}
SphereSDF3 is a sphere.
func (*SphereSDF3) BoundingBox ¶
func (s *SphereSDF3) BoundingBox() Box3
BoundingBox returns the bounding box for a sphere.
func (*SphereSDF3) Evaluate ¶
func (s *SphereSDF3) Evaluate(p V3) float64
Evaluate returns the minimum distance to a sphere.
type StandoffParms ¶
type StandoffParms struct { PillarHeight float64 PillarDiameter float64 HoleDepth float64 // > 0 is a hole, < 0 is a support stub HoleDiameter float64 NumberWebs int // number of triangular gussets around the standoff base WebHeight float64 WebDiameter float64 WebWidth float64 }
StandoffParms defines the parameters for a board standoff pillar.
type Text ¶
type Text struct {
// contains filtered or unexported fields
}
Text stores a UTF8 string and it's rendering parameters.
type ThreadParameters ¶
type ThreadParameters struct { Name string // name of screw thread Radius float64 // nominal major radius of screw Pitch float64 // thread to thread distance of screw HexFlat2Flat float64 // hex head flat to flat distance Units string // "inch" or "mm" }
ThreadParameters stores the values that define a thread.
func ThreadLookup ¶
func ThreadLookup(name string) (*ThreadParameters, error)
ThreadLookup lookups the parameters for a thread by name.
func (*ThreadParameters) HexHeight ¶
func (t *ThreadParameters) HexHeight() float64
HexHeight returns the hex head height (empirical).
func (*ThreadParameters) HexRadius ¶
func (t *ThreadParameters) HexRadius() float64
HexRadius returns the hex head radius.
type ThreeArcCamSDF2 ¶
type ThreeArcCamSDF2 struct {
// contains filtered or unexported fields
}
ThreeArcCamSDF2 is 2d cam profile. The profile is made from a base circle, a smaller nose circle and circular flank arcs.
func (*ThreeArcCamSDF2) BoundingBox ¶
func (s *ThreeArcCamSDF2) BoundingBox() Box2
BoundingBox returns the bounding box for the cam.
func (*ThreeArcCamSDF2) Evaluate ¶
func (s *ThreeArcCamSDF2) Evaluate(p V2) float64
Evaluate returns the minimum distance to the cam.
type ThreeMFItem ¶
type ThreeMFMesh ¶
type ThreeMFMesh struct { Vertices []ThreeMFVertex `xml:"vertices"` Triangles []ThreeMFTriangle `xml:"triangles"` }
type ThreeMFModel ¶
type ThreeMFModel struct { XMLName xml.Name `xml:"model"` Lang string `xml:"xml:lang,attr"` Schema string `xml:"xmlns,attr"` Unit string `xml:"unit,attr"` // These aren't grouping into the array field Resources []ThreeMFObject `xml:"resources>object"` Build []ThreeMFItem `xml:"build>item"` }
ThreeMFModel top level structure of a model for output to 3mf
type ThreeMFObject ¶
type ThreeMFObject struct { XMLName xml.Name `xml:"object"` ID string `xml:"id,attr"` Type string `xml:"type,attr"` Mesh ThreeMFMesh `xml:"mesh"` }
type ThreeMFTriangle ¶
type ThreeMFVertex ¶
type TransformSDF2 ¶
type TransformSDF2 struct {
// contains filtered or unexported fields
}
TransformSDF2 transorms an SDF2 with rotation, translation and scaling.
func (*TransformSDF2) BoundingBox ¶
func (s *TransformSDF2) BoundingBox() Box2
BoundingBox returns the bounding box of a transformed SDF2.
func (*TransformSDF2) Evaluate ¶
func (s *TransformSDF2) Evaluate(p V2) float64
Evaluate returns the minimum distance to a transformed SDF2. Distance is *not* preserved with scaling.
type TransformSDF3 ¶
type TransformSDF3 struct {
// contains filtered or unexported fields
}
TransformSDF3 is an SDF3 transformed with a 4x4 transformation matrix.
func (*TransformSDF3) BoundingBox ¶
func (s *TransformSDF3) BoundingBox() Box3
BoundingBox returns the bounding box of a transformed SDF3.
func (*TransformSDF3) Evaluate ¶
func (s *TransformSDF3) Evaluate(p V3) float64
Evaluate returns the minimum distance to a transformed SDF3. Distance is *not* preserved with scaling.
type Triangle2 ¶
type Triangle2 [3]V2
Triangle2 is a 2D triangle
func (Triangle2) Circumcenter ¶
Circumcenter returns the circumcenter of a triangle.
func (Triangle2) InCircumcircle ¶
InCircumcircle return inside == true if the point is inside the circumcircle of the triangle. Returns done == true if the vertex and the subsequent x-ordered vertices are outside the circumcircle.
type Triangle3 ¶
type Triangle3 struct {
V [3]V3
}
Triangle3 is a 3D triangle
func NewTriangle3 ¶
NewTriangle3 returns a new 3D triangle.
func RenderSlow ¶
RenderSlow renders an SDF3 as an mesh (uses uniform grid sampling).
func (*Triangle3) Degenerate ¶
Degenerate returns true if the triangle is degenerate.
type TriangleI ¶
type TriangleI [3]int
TriangleI is a 2d/3d triangle referencing a list of vertices.
func (*TriangleI) Canonical ¶
func (t *TriangleI) Canonical()
Canonical converts a triangle to it's lowest index first form. Preserve the winding order.
func (TriangleI) ToTriangle2 ¶
ToTriangle2 given vertex indices and the vertex array, return the triangle with real vertices.
type TriangleIByIndex ¶
type TriangleIByIndex []TriangleI
TriangleIByIndex sorts triangles by index.
func (TriangleIByIndex) Len ¶
func (a TriangleIByIndex) Len() int
func (TriangleIByIndex) Less ¶
func (a TriangleIByIndex) Less(i, j int) bool
func (TriangleIByIndex) Swap ¶
func (a TriangleIByIndex) Swap(i, j int)
type TriangleISet ¶
type TriangleISet []TriangleI
TriangleISet is a set of triangles defined by vertice indices.
func (TriangleISet) Canonical ¶
func (ts TriangleISet) Canonical() []TriangleI
Canonical converts a triangle set to it's canonical form. This common form is used to facilitate comparison between the results of different implementations.
func (TriangleISet) Equals ¶
func (ts TriangleISet) Equals(s TriangleISet) bool
Equals tests two triangle sets for equality.
type TruncRectPyramidParms ¶
type TruncRectPyramidParms struct { Size V3 // size of truncated pyramid BaseAngle float64 // base angle of pyramid (radians) BaseRadius float64 // base corner radius RoundRadius float64 // edge rounding radius }
TruncRectPyramidParms defines the parameters for a truncated rectangular pyramid.
type UnionSDF2 ¶
type UnionSDF2 struct {
// contains filtered or unexported fields
}
UnionSDF2 is a union of multiple SDF2 objects.
func (*UnionSDF2) BoundingBox ¶
BoundingBox returns the bounding box of an SDF2 union.
func (*UnionSDF2) EvaluateSlow ¶
EvaluateSlow returns the minimum distance to the SDF2 union.
type UnionSDF3 ¶
type UnionSDF3 struct {
// contains filtered or unexported fields
}
UnionSDF3 is a union of SDF3s.
func (*UnionSDF3) BoundingBox ¶
BoundingBox returns the bounding box of an SDF3 union.
type V2 ¶
type V2 struct {
X, Y float64
}
V2 is a 2d float64 cartesian vector.
func (V2) CartesianToPolar ¶
CartesianToPolar converts a cartesian to a polar coordinate.
func (V2) MaxComponent ¶
MaxComponent returns the maximum component of the vector.
func (V2) MinComponent ¶
MinComponent returns the minimum component of the vector.
type V2Set ¶
type V2Set []V2
V2Set is a set of 2d float64 vectors.
func GenerateMesh2D ¶
GenerateMesh2D generates a set of internal mesh points for an SDF2.
func (V2Set) Delaunay2d ¶
func (vs V2Set) Delaunay2d() (TriangleISet, error)
Delaunay2d returns the delaunay triangulation of a 2d point set.
func (V2Set) Delaunay2dSlow ¶
func (vs V2Set) Delaunay2dSlow() (TriangleISet, error)
Delaunay2dSlow returns the delaunay triangulation of a 2d point set. This is a slow reference implementation for testing faster algorithms. See: Computational Geometry, Joseph O'Rourke, 2nd edition, Code 5.1
func (V2Set) MulVertices ¶
MulVertices multiples a set of V2 vertices by a rotate/translate matrix.
func (V2Set) SuperTriangle ¶
SuperTriangle return the super triangle of a point set, ie: 3 vertices enclosing all points.
type V2i ¶
type V2i [2]int
V2i is a 2D integer vector.
type V3 ¶
type V3 struct {
X, Y, Z float64
}
V3 is a 3d float64 cartesian vector.
func (V3) MaxComponent ¶
MaxComponent returns the maximum component of the vector.
func (V3) MinComponent ¶
MinComponent returns the minimum component of the vector.
type V3Set ¶
type V3Set []V3
V3Set is a set of 3d float64 vectors.
func (V3Set) MulVertices ¶
MulVertices multiples a set of V3 vertices by a rotate/translate matrix.
Source Files ¶
- 3mf.go
- benchmark.go
- bezier.go
- box.go
- cams.go
- delaunay.go
- dxf.go
- flange.go
- gears.go
- line.go
- march2.go
- march2x.go
- march3.go
- march3x.go
- matrix.go
- panelbox.go
- png.go
- poly.go
- quadratic.go
- render.go
- screw.go
- sdf2.go
- sdf3.go
- shapes2.go
- shapes3.go
- spiral.go
- spline.go
- stl.go
- svg.go
- text.go
- triangle.go
- utils.go
- vecf.go
- veci.go