components

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: May 1, 2025 License: GPL-3.0 Imports: 12 Imported by: 0

README

pkg/components

Responsibility

  • Defines the components of a rocket.
  • Provides functions for creating and managing rocket components.

Scope

  • Component definitions (e.g., body tube, nose cone, fins, motor, parachute).
  • Component creation and management functions.

Test Suite Overview

  • Tests should cover component creation and management.

Decisions & Potential Gotchas

  • Component definitions should be well-defined and documented.
  • Component management logic should be robust.

Documentation

Index

Constants

View Source
const (
	StateIdle    = "idle"
	StateBurning = "burning"
	StateIgnited = "IGNITED"
)

MotorState represents the states of the motor

Variables

This section is empty.

Functions

This section is empty.

Types

type Bodytube

type Bodytube struct {
	ID           ecs.BasicEntity
	Position     types.Vector3
	Radius       float64
	Length       float64
	Mass         float64
	Thickness    float64
	Density      float64 // Material density
	Finish       string  // Surface finish
	MaterialName string  // Name of material
	MaterialType string  // Type of material
	CrossSection float64 // Cross-sectional area
	SurfaceArea  float64 // Total surface area
	Volume       float64 // Volume of material
}

Bodytube represents the bodytube entity of a rocket

func NewBodytube

func NewBodytube(id ecs.BasicEntity, radius, length, mass, thickness float64) *Bodytube

NewBodytube creates a new bodytube instance

func NewBodytubeFromORK

func NewBodytubeFromORK(id ecs.BasicEntity, orkData *openrocket.RocketDocument) (*Bodytube, error)

NewBodytubeFromORK creates a new bodytube instance from an ORK Document

func (*Bodytube) GetDensity

func (b *Bodytube) GetDensity() float64

GetDensity returns the material density of the bodytube

func (*Bodytube) GetMass

func (b *Bodytube) GetMass() float64

GetMass returns the mass of the bodytube

func (*Bodytube) GetPlanformArea

func (b *Bodytube) GetPlanformArea() float64

GetPlanformArea returns the planform area of the bodytube

func (*Bodytube) GetSurfaceArea

func (b *Bodytube) GetSurfaceArea() float64

GetSurfaceArea returns the total surface area of the bodytube

func (*Bodytube) GetVolume

func (b *Bodytube) GetVolume() float64

GetVolume returns the volume of the bodytube material

func (*Bodytube) String

func (b *Bodytube) String() string

String returns a string representation of the bodytube

func (*Bodytube) Type

func (b *Bodytube) Type() string

Type returns the type of the component

func (*Bodytube) Update

func (b *Bodytube) Update(dt float64) error

Update updates the bodytube (currently does nothing)

type Motor

type Motor struct {
	ID          ecs.BasicEntity
	Position    types.Vector3
	Thrustcurve [][]float64
	Mass        float64

	Props *thrustcurves.MotorData
	FSM   *MotorFSM
	// contains filtered or unexported fields
}

Motor represents a rocket motor component

func NewMotor

func NewMotor(id ecs.BasicEntity, md *thrustcurves.MotorData, logger logf.Logger) (*Motor, error)

NewMotor creates a new motor component from thrust curve data

func (*Motor) GetElapsedTime

func (m *Motor) GetElapsedTime() float64

func (*Motor) GetMass

func (m *Motor) GetMass() float64

func (*Motor) GetPlanformArea

func (m *Motor) GetPlanformArea() float64

func (*Motor) GetState

func (m *Motor) GetState() string

func (*Motor) GetThrust

func (m *Motor) GetThrust() float64

func (*Motor) IsCoasting

func (m *Motor) IsCoasting() bool

func (*Motor) Reset

func (m *Motor) Reset()

func (*Motor) SetState

func (m *Motor) SetState(state string)

func (*Motor) String

func (m *Motor) String() string

func (*Motor) Type

func (m *Motor) Type() string

func (*Motor) Update

func (m *Motor) Update(dt float64) error

type MotorFSM

type MotorFSM struct {
	*fsm.FSM
	// contains filtered or unexported fields
}

MotorFSM represents the finite state machine for the motor

func NewMotorFSM

func NewMotorFSM(motor *Motor, log logf.Logger) *MotorFSM

NewMotorFSM creates a new FSM for the motor

func (*MotorFSM) GetState

func (fsm *MotorFSM) GetState() string

GetState returns the current state of the FSM

func (*MotorFSM) UpdateState

func (fsm *MotorFSM) UpdateState(mass float64, elapsedTime float64, burnTime float64) error

UpdateState updates the state based on elapsed time only

type Nosecone

type Nosecone struct {
	ID                ecs.BasicEntity
	Position          types.Vector3
	Radius            float64
	Length            float64
	Mass              float64
	ShapeParameter    float64
	Thickness         float64
	Shape             string
	Finish            string
	MaterialName      string
	MaterialType      string
	Density           float64
	Volume            float64
	SurfaceArea       float64
	AftShoulderRadius float64
	AftShoulderLength float64
	AftShoulderCapped bool
	ShapeClipped      bool
	IsFlipped         bool
}

Nosecone represents the nosecone entity of a rocket

func NewNosecone

func NewNosecone(id ecs.BasicEntity, radius, length, mass, shapeParameter float64) *Nosecone

NewNosecone creates a new nosecone instance

func NewNoseconeFromORK

func NewNoseconeFromORK(id ecs.BasicEntity, orkData *openrocket.RocketDocument) *Nosecone

NewNoseconeFromORK creates a new nosecone instance from an ORK Document

func (*Nosecone) GetDensity

func (n *Nosecone) GetDensity() float64

GetDensity returns the material density

func (*Nosecone) GetMass

func (n *Nosecone) GetMass() float64

GetMass returns the mass of the nosecone

func (*Nosecone) GetPlanformArea

func (n *Nosecone) GetPlanformArea() float64

GetPlanformArea returns the planform area of the nosecone

func (*Nosecone) GetSurfaceArea

func (n *Nosecone) GetSurfaceArea() float64

GetSurfaceArea returns the surface area of the nosecone

func (*Nosecone) GetVolume

func (n *Nosecone) GetVolume() float64

GetVolume returns the volume of the nosecone material

func (*Nosecone) String

func (n *Nosecone) String() string

String returns a string representation of the Nosecone

func (*Nosecone) Type

func (n *Nosecone) Type() string

Type returns the type of the component

func (*Nosecone) Update

func (n *Nosecone) Update(dt float64) error

Update updates the nosecone (currently does nothing)

type Parachute

type Parachute struct {
	ID              ecs.BasicEntity
	Position        types.Vector3
	Diameter        float64
	DragCoefficient float64
	Strands         int
	Area            float64
	Trigger         ParachuteTrigger
	Deployed        bool
}

Parachute is a component that allows the entity to descend under drag and control its descent rate.

func NewParachute

func NewParachute(id ecs.BasicEntity, diameter, dragCoefficient float64, strands int, trigger ParachuteTrigger) *Parachute

NewParachute creates a new parachute instance

func NewParachuteFromORK

func NewParachuteFromORK(id ecs.BasicEntity, orkData *openrocket.RocketDocument) (*Parachute, error)

NewParachuteFromORK creates a new parachute instance from an ORK Document

func (*Parachute) Deploy

func (p *Parachute) Deploy()

Deploy deploys the parachute

func (*Parachute) GetDensity

func (p *Parachute) GetDensity() float64

GetDensity returns the density of the Parachute

func (*Parachute) GetMass

func (p *Parachute) GetMass() float64

GetMass returns the mass of the Parachute

func (*Parachute) GetPlanformArea

func (p *Parachute) GetPlanformArea() float64

GetPlanformArea returns the planform area of the parachute

func (*Parachute) GetSurfaceArea

func (p *Parachute) GetSurfaceArea() float64

GetSurfaceArea returns the surface area of the Parachute

func (*Parachute) GetVolume

func (p *Parachute) GetVolume() float64

GetVolume returns the volume of the parachute

func (*Parachute) IsDeployed

func (p *Parachute) IsDeployed() bool

IsDeployed returns whether the parachute is currently deployed

func (*Parachute) String

func (p *Parachute) String() string

String returns a string representation of the Parachute struct

func (*Parachute) Type

func (p *Parachute) Type() string

Type returns the type of the component

func (*Parachute) Update

func (p *Parachute) Update(dt float64) error

Update updates the parachute component

type ParachuteTrigger

type ParachuteTrigger string

ParachuteTrigger represents the trigger configuration of the parachute

const (
	// ParachuteTriggerNone represents no trigger
	ParachuteTriggerNone ParachuteTrigger = "none"
	// ParachuteTriggerApogee represents an apogee trigger
	ParachuteTriggerApogee ParachuteTrigger = "apogee"
)

type TrapezoidFinset

type TrapezoidFinset struct {
	ecs.BasicEntity
	RootChord  float64
	TipChord   float64
	Span       float64
	SweepAngle float64
	Position   types.Position
	Mass       float64
}

TrapezoidFinset represents a trapezoidal fin

func NewTrapezoidFinsetFromORK

func NewTrapezoidFinsetFromORK(basic ecs.BasicEntity, ork *openrocket.RocketDocument) *TrapezoidFinset

NewTrapezoidFinsetFromORK creates a new TrapezoidFinset component from OpenRocket data

func (*TrapezoidFinset) GetMass

func (f *TrapezoidFinset) GetMass() float64

GetMass returns the mass of the finset

func (*TrapezoidFinset) GetPlanformArea

func (f *TrapezoidFinset) GetPlanformArea() float64

GetPlanformArea returns the planform area of the finset

Jump to

Keyboard shortcuts

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