-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcommands.go
137 lines (106 loc) · 1.77 KB
/
commands.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
package main
type Command interface {
Name() string
}
type SaveCommand struct {
filename string
}
func (c SaveCommand) Name() string {
return "SAVE"
}
type DisplayCommand struct{}
func (c DisplayCommand) Name() string {
return "DISPLAY"
}
type PushCommand struct{}
func (c PushCommand) Name() string {
return "PUSH"
}
type PopCommand struct{}
func (c PopCommand) Name() string {
return "POP"
}
type TransformCommand struct {
knob string
}
type MoveCommand struct {
TransformCommand
args []float64
}
func (c MoveCommand) Name() string {
return "MOVE"
}
type ScaleCommand struct {
TransformCommand
args []float64
}
func (c ScaleCommand) Name() string {
return "SCALE"
}
type RotateCommand struct {
TransformCommand
axis string
degrees float64
}
func (c RotateCommand) Name() string {
return "ROTATE"
}
type ShapeCommand struct {
constants string
cs string
}
type LineCommand struct {
ShapeCommand
p1 []float64
p2 []float64
cs2 string
}
func (c LineCommand) Name() string {
return "LINE"
}
type SphereCommand struct {
ShapeCommand
center []float64
radius float64
}
func (c SphereCommand) Name() string {
return "SPHERE"
}
type TorusCommand struct {
ShapeCommand
center []float64
r1 float64
r2 float64
}
func (c TorusCommand) Name() string {
return "TORUS"
}
type BoxCommand struct {
ShapeCommand
p1 []float64
width float64
height float64
depth float64
}
func (c BoxCommand) Name() string {
return "BOX"
}
type SetCommand struct {
name string
value float64
}
func (c SetCommand) Name() string {
return "SET"
}
type SetKnobsCommand struct {
value float64
}
func (c SetKnobsCommand) Name() string {
return "SETKNOBS"
}
type MeshCommand struct {
filename string
}
func (c MeshCommand) Name() string {
return "MESH"
}