44 lines
654 B
Go
44 lines
654 B
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/deadsy/sdfx/sdf"
|
|
)
|
|
|
|
type Circle struct {
|
|
size float64
|
|
rimSize float64
|
|
}
|
|
|
|
// member functions
|
|
|
|
func (c Circle) Top2D(size float64) sdf.SDF2 {
|
|
circle, err := sdf.Circle2D(size / 2)
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
return circle
|
|
}
|
|
|
|
func (c Circle) Rim2D(size float64) sdf.SDF2 {
|
|
rimNegative, err := sdf.Circle2D((size - c.rimSize) / 2)
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
return sdf.Difference2D(c.Top2D(size), rimNegative)
|
|
}
|
|
|
|
func (c Circle) Size() float64 {
|
|
return c.size
|
|
}
|
|
|
|
// new
|
|
|
|
func circleNew(size, rimSize float64) Circle {
|
|
var c Circle
|
|
c.size = size
|
|
c.rimSize = rimSize
|
|
return c
|
|
}
|