modeling

package
v0.17.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 17, 2024 License: MIT Imports: 13 Imported by: 2

Documentation

Index

Constants

View Source
const (
	PositionAttribute  = "Position"
	NormalAttribute    = "Normal"
	ColorAttribute     = "Color"
	TexCoordAttribute  = "TexCoord"
	ClassAttribute     = "Class"
	IntensityAttribute = "Intensity"
	JointAttribute     = "Joint"
	WeightAttribute    = "Weight"
	ScaleAttribute     = "Scale"
	RotationAttribute  = "Rotation"
	OpacityAttribute   = "Opacity"
	FDCAttribute       = "FDC"
)

Variables

This section is empty.

Functions

func Clamp

func Clamp(v, min, max float64) float64

func Multiply3x3by3x1

func Multiply3x3by3x1(m Matrix, v vector3.Float64) vector3.Float64

func ToNormal

func ToNormal(inEulerAngle vector3.Float64) vector3.Float64

Types

type Line

type Line struct {
	// contains filtered or unexported fields
}

func (Line) BoundingBox

func (l Line) BoundingBox(atr string) geometry.AABB

func (Line) ClosestPoint

func (l Line) ClosestPoint(atr string, point vector3.Float64) vector3.Float64

func (Line) P1 added in v0.2.0

func (l Line) P1() int

P1 is the first point on our triangle, which is an index to the vertices array of a mesh

func (Line) P2 added in v0.2.0

func (l Line) P2() int

P2 is the second point on our triangle, which is an index to the vertices array of a mesh

func (Line) Scope

func (l Line) Scope(attribute string) trees.Element

type Material

type Material struct {
	Name string

	// Account for light that is scattered about the entire scene
	AmbientColor color.Color

	// The main color
	DiffuseColor color.Color

	// Color seen where the surface is shiny and mirror like
	SpecularColor color.Color

	// Typically between 0 - 1000, with a high value resulting in a tight,
	// concentrated highlight
	//
	// Defines the focus of the specular highlight
	SpecularHighlight float64

	// Index of refraction, between 0.001 to 10, 1.0 means light does not bend
	// as it passes through the object
	OpticalDensity float64

	// Specifies how much this material dissolves into the background. A factor
	// of 0.0 is fully opaque. A factor of 1.0 is completely transparent.
	Transparency float64

	ColorTextureURI *string

	NormalTextureURI *string

	SpecularTextureURI *string
}

Material is just a clone of obj's MTL format at the moment cause man this problem scares me.

func DefaultColorMaterial

func DefaultColorMaterial(c color.Color) Material

func DefaultMaterial

func DefaultMaterial() Material

type Matrix

type Matrix [][]float64

Matrix is row major

func Multiply3x3

func Multiply3x3(m1, m2 Matrix) Matrix

func Rx

func Rx(theta float64) Matrix

func RxT

func RxT(theta float64) Matrix

func Ry

func Ry(theta float64) Matrix

func RyT

func RyT(theta float64) Matrix

func Rz

func Rz(theta float64) Matrix

func RzT

func RzT(theta float64) Matrix

func Transpose

func Transpose(in Matrix) Matrix

type Mesh

type Mesh struct {
	// contains filtered or unexported fields
}

func EmptyMesh

func EmptyMesh(topo Topology) Mesh

Creates a new mesh with the specified topology that has no vertices or attribute data

func EmptyPointcloud added in v0.15.0

func EmptyPointcloud() Mesh

Creates a new mesh with point topology that has no vertices or attribute data

func NewLineStripMesh

func NewLineStripMesh(
	v3Data map[string][]vector3.Float64,
	v2Data map[string][]vector2.Float64,
	v1Data map[string][]float64,
	materials []MeshMaterial,
) Mesh

func NewMesh

func NewMesh(topo Topology, indices []int) Mesh

New Mesh creates a new mesh with the specified topology with all empty attribute data arrays stripped.

func NewPointCloud

func NewPointCloud(
	v4Data map[string][]vector4.Float64,
	v3Data map[string][]vector3.Float64,
	v2Data map[string][]vector2.Float64,
	v1Data map[string][]float64,
	materials []MeshMaterial,
) Mesh

func NewTriangleMesh added in v0.8.0

func NewTriangleMesh(indices []int) Mesh

NewTriangleMesh creates a new triangle mesh with all empty attribute data arrays stripped.

func (Mesh) Append

func (m Mesh) Append(other Mesh) Mesh

func (Mesh) AttributeLength

func (m Mesh) AttributeLength() int

func (Mesh) BoundingBox

func (m Mesh) BoundingBox(atr string) geometry.AABB

func (Mesh) ClearAttributeData added in v0.8.0

func (m Mesh) ClearAttributeData() Mesh

func (Mesh) CopyFloat1Attribute added in v0.7.0

func (m Mesh) CopyFloat1Attribute(src Mesh, attr string) Mesh

func (Mesh) CopyFloat2Attribute added in v0.7.0

func (m Mesh) CopyFloat2Attribute(src Mesh, attr string) Mesh

func (Mesh) CopyFloat3Attribute added in v0.7.0

func (m Mesh) CopyFloat3Attribute(src Mesh, attr string) Mesh

func (Mesh) CopyFloat4Attribute added in v0.7.0

func (m Mesh) CopyFloat4Attribute(src Mesh, attr string) Mesh

func (Mesh) Float1Attribute added in v0.8.0

func (m Mesh) Float1Attribute(attr string) *iter.ArrayIterator[float64]

func (Mesh) Float1Attributes

func (m Mesh) Float1Attributes() []string

func (Mesh) Float2Attribute added in v0.8.0

func (m Mesh) Float2Attribute(attr string) *iter.ArrayIterator[vector2.Float64]

func (Mesh) Float2Attributes

func (m Mesh) Float2Attributes() []string

func (Mesh) Float3Attribute added in v0.8.0

func (m Mesh) Float3Attribute(attr string) *iter.ArrayIterator[vector3.Float64]

func (Mesh) Float3Attributes

func (m Mesh) Float3Attributes() []string

func (Mesh) Float4Attribute added in v0.8.0

func (m Mesh) Float4Attribute(attr string) *iter.ArrayIterator[vector4.Float64]

func (Mesh) Float4Attributes added in v0.5.0

func (m Mesh) Float4Attributes() []string

func (Mesh) HasFloat1Attribute

func (m Mesh) HasFloat1Attribute(attribute string) bool

func (Mesh) HasFloat2Attribute

func (m Mesh) HasFloat2Attribute(attribute string) bool

func (Mesh) HasFloat3Attribute

func (m Mesh) HasFloat3Attribute(attribute string) bool

func (Mesh) HasFloat4Attribute added in v0.5.0

func (m Mesh) HasFloat4Attribute(attribute string) bool

func (Mesh) HasVertexAttribute

func (m Mesh) HasVertexAttribute(attribute string) bool

func (Mesh) Indices added in v0.8.0

func (m Mesh) Indices() *iter.ArrayIterator[int]

func (Mesh) LineStrip

func (m Mesh) LineStrip(i int) Line

func (Mesh) Materials

func (m Mesh) Materials() []MeshMaterial

func (Mesh) ModifyFloat1Attribute

func (m Mesh) ModifyFloat1Attribute(atr string, f func(i int, v float64) float64) Mesh

func (Mesh) ModifyFloat1AttributeParallel

func (m Mesh) ModifyFloat1AttributeParallel(atr string, f func(i int, v float64) float64) Mesh

func (Mesh) ModifyFloat1AttributeParallelWithPoolSize

func (m Mesh) ModifyFloat1AttributeParallelWithPoolSize(atr string, size int, f func(i int, v float64) float64) Mesh

func (Mesh) ModifyFloat2Attribute

func (m Mesh) ModifyFloat2Attribute(atr string, f func(i int, v vector2.Float64) vector2.Float64) Mesh

func (Mesh) ModifyFloat2AttributeParallel

func (m Mesh) ModifyFloat2AttributeParallel(atr string, f func(i int, v vector2.Float64) vector2.Float64) Mesh

func (Mesh) ModifyFloat2AttributeParallelWithPoolSize

func (m Mesh) ModifyFloat2AttributeParallelWithPoolSize(atr string, size int, f func(i int, v vector2.Float64) vector2.Float64) Mesh

func (Mesh) ModifyFloat3Attribute

func (m Mesh) ModifyFloat3Attribute(atr string, f func(i int, v vector3.Float64) vector3.Float64) Mesh

func (Mesh) ModifyFloat3AttributeParallel

func (m Mesh) ModifyFloat3AttributeParallel(atr string, f func(i int, v vector3.Float64) vector3.Float64) Mesh

func (Mesh) ModifyFloat3AttributeParallelWithPoolSize

func (m Mesh) ModifyFloat3AttributeParallelWithPoolSize(atr string, size int, f func(i int, v vector3.Float64) vector3.Float64) Mesh

func (Mesh) OctTree added in v0.3.0

func (m Mesh) OctTree() *trees.OctTree

func (Mesh) OctTreeDepth added in v0.3.0

func (m Mesh) OctTreeDepth(depth int) *trees.OctTree

func (Mesh) OctTreeWithAttributeAndDepth added in v0.3.0

func (m Mesh) OctTreeWithAttributeAndDepth(atr string, depth int) *trees.OctTree

func (Mesh) PrimitiveCount

func (m Mesh) PrimitiveCount() int

func (Mesh) Rotate

func (m Mesh) Rotate(q quaternion.Quaternion) Mesh

func (Mesh) Scale

func (m Mesh) Scale(amount vector3.Float64) Mesh

func (Mesh) ScanFloat1Attribute

func (m Mesh) ScanFloat1Attribute(atr string, f func(i int, v float64)) Mesh

func (Mesh) ScanFloat1AttributeParallel

func (m Mesh) ScanFloat1AttributeParallel(atr string, f func(i int, v float64)) Mesh

func (Mesh) ScanFloat1AttributeParallelWithPoolSize

func (m Mesh) ScanFloat1AttributeParallelWithPoolSize(atr string, size int, f func(i int, v float64)) Mesh

func (Mesh) ScanFloat2Attribute

func (m Mesh) ScanFloat2Attribute(atr string, f func(i int, v vector2.Float64)) Mesh

func (Mesh) ScanFloat2AttributeParallel

func (m Mesh) ScanFloat2AttributeParallel(atr string, f func(i int, v vector2.Float64)) Mesh

func (Mesh) ScanFloat2AttributeParallelWithPoolSize

func (m Mesh) ScanFloat2AttributeParallelWithPoolSize(atr string, size int, f func(i int, v vector2.Float64)) Mesh

func (Mesh) ScanFloat3Attribute

func (m Mesh) ScanFloat3Attribute(atr string, f func(i int, v vector3.Float64)) Mesh

func (Mesh) ScanFloat3AttributeParallel

func (m Mesh) ScanFloat3AttributeParallel(atr string, f func(i int, v vector3.Float64)) Mesh

func (Mesh) ScanFloat3AttributeParallelWithPoolSize

func (m Mesh) ScanFloat3AttributeParallelWithPoolSize(atr string, size int, f func(i int, v vector3.Float64)) Mesh

func (Mesh) ScanFloat4Attribute added in v0.5.0

func (m Mesh) ScanFloat4Attribute(atr string, f func(i int, v vector4.Float64)) Mesh

func (Mesh) ScanPrimitives

func (m Mesh) ScanPrimitives(f func(i int, p Primitive)) Mesh

func (Mesh) ScanPrimitivesParallel

func (m Mesh) ScanPrimitivesParallel(f func(i int, p Primitive)) Mesh

func (Mesh) ScanPrimitivesParallelWithPoolSize

func (m Mesh) ScanPrimitivesParallelWithPoolSize(size int, f func(i int, p Primitive)) Mesh

func (Mesh) SetFloat1Attribute

func (m Mesh) SetFloat1Attribute(attr string, data []float64) Mesh

func (Mesh) SetFloat1Data added in v0.5.0

func (m Mesh) SetFloat1Data(data map[string][]float64) Mesh

func (Mesh) SetFloat2Attribute

func (m Mesh) SetFloat2Attribute(attr string, data []vector2.Float64) Mesh

func (Mesh) SetFloat2Data added in v0.5.0

func (m Mesh) SetFloat2Data(data map[string][]vector2.Float64) Mesh

func (Mesh) SetFloat3Attribute

func (m Mesh) SetFloat3Attribute(attr string, data []vector3.Float64) Mesh

func (Mesh) SetFloat3Data added in v0.5.0

func (m Mesh) SetFloat3Data(data map[string][]vector3.Float64) Mesh

func (Mesh) SetFloat4Attribute added in v0.5.0

func (m Mesh) SetFloat4Attribute(attr string, data []vector4.Float64) Mesh

func (Mesh) SetFloat4Data added in v0.5.0

func (m Mesh) SetFloat4Data(data map[string][]vector4.Float64) Mesh

func (Mesh) SetIndices added in v0.8.0

func (m Mesh) SetIndices(indices []int) Mesh

func (Mesh) SetMaterial

func (m Mesh) SetMaterial(mat Material) Mesh

func (Mesh) SetMaterials added in v0.5.0

func (m Mesh) SetMaterials(mat []MeshMaterial) Mesh

func (Mesh) ToPointCloud added in v0.8.0

func (m Mesh) ToPointCloud() Mesh

Transforms the mesh into having a point topology. All original indice information is dropped and is replaced by a flat reference to all attribute data previously defined

func (Mesh) Topology

func (m Mesh) Topology() Topology

Returns the topology of the mesh

func (Mesh) Transform added in v0.8.0

func (m Mesh) Transform(ops ...Transformer) Mesh

func (Mesh) Translate

func (m Mesh) Translate(v vector3.Float64) Mesh

func (Mesh) Tri

func (m Mesh) Tri(i int) Tri

func (Mesh) VertexNeighborTable

func (m Mesh) VertexNeighborTable() VertexLUT

func (Mesh) WeldByFloat3Attribute

func (m Mesh) WeldByFloat3Attribute(attribute string, decimalPlace int) Mesh

type MeshMaterial

type MeshMaterial struct {
	PrimitiveCount int
	Material       *Material
}

type Point

type Point struct {
	// contains filtered or unexported fields
}

func (Point) BoundingBox

func (p Point) BoundingBox(atr string) geometry.AABB

func (Point) Clips

func (p Point) Clips(plane geometry.Plane, atr string) bool

func (Point) ClosestPoint

func (p Point) ClosestPoint(atr string, point vector3.Float64) vector3.Float64

func (Point) Scope

func (p Point) Scope(attribute string) trees.Element

type Primitive

type Primitive interface {
	BoundingBox(attribute string) geometry.AABB
	ClosestPoint(attribute string, p vector3.Float64) vector3.Float64
	Scope(attribute string) trees.Element
}

type Topology

type Topology int
const (
	TriangleTopology Topology = iota
	PointTopology
	QuadTopology
	LineTopology
	LineStripTopology
	LineLoopTopology
)

func (Topology) IndexSize

func (t Topology) IndexSize() int

func (Topology) String

func (t Topology) String() string

type Transformer added in v0.8.0

type Transformer interface {
	Transform(m Mesh) (Mesh, error)
}

type Tri

type Tri struct {
	// contains filtered or unexported fields
}

Tri provides utility functions to a specific underlying mesh

func (Tri) Area3D added in v0.10.0

func (t Tri) Area3D(attr string) float64

func (Tri) Average added in v0.3.0

func (t Tri) Average(attr string) vector3.Float64

func (Tri) BoundingBox

func (t Tri) BoundingBox(attr string) geometry.AABB

func (Tri) Bounds

func (t Tri) Bounds() geometry.AABB

func (Tri) ClosestPoint

func (t Tri) ClosestPoint(attr string, p vector3.Float64) vector3.Float64

func (Tri) L1

func (t Tri) L1(attr string) geometry.Line3D

func (Tri) L2

func (t Tri) L2(attr string) geometry.Line3D

func (Tri) L3

func (t Tri) L3(attr string) geometry.Line3D

func (Tri) LineIntersects added in v0.3.0

func (t Tri) LineIntersects(line geometry.Line3D) (vector3.Float64, bool)

func (Tri) P1

func (t Tri) P1() int

P1 is the first point on our triangle, which is an index to the vertices array of a mesh

func (Tri) P1Vec1Attr added in v0.4.0

func (t Tri) P1Vec1Attr(attr string) float64

func (Tri) P1Vec2Attr added in v0.4.0

func (t Tri) P1Vec2Attr(attr string) vector2.Float64

func (Tri) P1Vec3Attr

func (t Tri) P1Vec3Attr(attr string) vector3.Float64

func (Tri) P2

func (t Tri) P2() int

P2 is the second point on our triangle, which is an index to the vertices array of a mesh

func (Tri) P2Vec1Attr added in v0.4.0

func (t Tri) P2Vec1Attr(attr string) float64

func (Tri) P2Vec2Attr added in v0.4.0

func (t Tri) P2Vec2Attr(attr string) vector2.Float64

func (Tri) P2Vec3Attr

func (t Tri) P2Vec3Attr(attr string) vector3.Float64

func (Tri) P3

func (t Tri) P3() int

P3 is the third point on our triangle, which is an index to the vertices array of a mesh

func (Tri) P3Vec1Attr added in v0.4.0

func (t Tri) P3Vec1Attr(attr string) float64

func (Tri) P3Vec2Attr added in v0.4.0

func (t Tri) P3Vec2Attr(attr string) vector2.Float64

func (Tri) P3Vec3Attr

func (t Tri) P3Vec3Attr(attr string) vector3.Float64

func (Tri) Plane

func (t Tri) Plane(attr string) geometry.Plane

func (Tri) Scope

func (t Tri) Scope(attr string) trees.Element

func (Tri) UniqueVertices

func (t Tri) UniqueVertices() bool

Valid determines whether or not the contains 3 unique vertices.

type VectorInt

type VectorInt struct {
	X int
	Y int
	Z int
}

func Vector3ToInt

func Vector3ToInt(v vector3.Float64, power int) VectorInt

func (VectorInt) Area added in v0.10.0

func (v VectorInt) Area() int

func (VectorInt) String

func (v VectorInt) String() string

func (VectorInt) Sub

func (v VectorInt) Sub(other VectorInt) VectorInt

func (VectorInt) ToRegularVector

func (v VectorInt) ToRegularVector() vector3.Float64

type VertexLUT

type VertexLUT map[int]map[int]struct{}

func (VertexLUT) AddLookup

func (vLUT VertexLUT) AddLookup(from, to int)

func (VertexLUT) Count

func (vLUT VertexLUT) Count(v int) int
func (vLUT VertexLUT) Link(v1, v2 int)

func (VertexLUT) Lookup

func (vLUT VertexLUT) Lookup(v int) map[int]struct{}

func (VertexLUT) Remove

func (vLUT VertexLUT) Remove(v int) map[int]struct{}
func (vLUT VertexLUT) RemoveLink(v1, v2 int)

func (VertexLUT) RemoveLookup

func (vLUT VertexLUT) RemoveLookup(from, to int)

func (VertexLUT) RemoveVertex

func (vLUT VertexLUT) RemoveVertex(v int)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL