Fix centering of plasma
Signed-off-by: Martyn Ranyard <m@rtyn.berlin>
This commit is contained in:
		
							parent
							
								
									688084094a
								
							
						
					
					
						commit
						d534eb36cd
					
				
					 2 changed files with 35 additions and 14 deletions
				
			
		| 
						 | 
				
			
			@ -26,6 +26,10 @@ var currentEffect queue.QueueItem
 | 
			
		|||
var globalEffectChannel = make(chan queue.QueueItem, 1024)
 | 
			
		||||
var universeCount int = 0
 | 
			
		||||
 | 
			
		||||
var overrideEffect queue.QueueItem
 | 
			
		||||
var overrideFlag = make(chan queue.QueueItem, 1)
 | 
			
		||||
var previousEffect queue.QueueItem
 | 
			
		||||
 | 
			
		||||
func foreverLoop() {
 | 
			
		||||
	for /*ever*/ {
 | 
			
		||||
		time.Sleep(40 * time.Millisecond) //25fps
 | 
			
		||||
| 
						 | 
				
			
			@ -55,7 +59,7 @@ func main() {
 | 
			
		|||
			}
 | 
			
		||||
		}
 | 
			
		||||
		fmt.Printf("Starting webserver on port %d\n", listenPort)
 | 
			
		||||
		webserver.HandleHTTP(globalEffectChannel, listenPort)
 | 
			
		||||
		webserver.HandleHTTP(globalEffectChannel, listenPort, overrideFlag)
 | 
			
		||||
	}()
 | 
			
		||||
 | 
			
		||||
	PanelIP := os.Getenv("PANEL_IP")
 | 
			
		||||
| 
						 | 
				
			
			@ -113,17 +117,33 @@ func main() {
 | 
			
		|||
	e.Effect = "plasma"
 | 
			
		||||
	e.Speed = 40
 | 
			
		||||
	globalEffectChannel <- e
 | 
			
		||||
 | 
			
		||||
	e.Effect = "queue"
 | 
			
		||||
	overrideEffect = e
 | 
			
		||||
	go func() {
 | 
			
		||||
		for /*ever*/ {
 | 
			
		||||
			if currentEffect.Duration > 0 {
 | 
			
		||||
				currentEffect.Duration -= 40
 | 
			
		||||
			} else {
 | 
			
		||||
				if len(globalEffectChannel) > 0 {
 | 
			
		||||
					lastEffect := currentEffect
 | 
			
		||||
					currentEffect = <-globalEffectChannel
 | 
			
		||||
					if lastEffect != currentEffect {
 | 
			
		||||
						fmt.Printf("New effect selected : %s\n", currentEffect.Effect)
 | 
			
		||||
			if len(overrideFlag) > 0 {
 | 
			
		||||
				e = <-overrideFlag
 | 
			
		||||
				if e.Effect == "queue" {
 | 
			
		||||
					fmt.Printf("Returning to queue : %s\n", currentEffect.Effect)
 | 
			
		||||
					overrideEffect = e
 | 
			
		||||
					currentEffect = previousEffect
 | 
			
		||||
				} else {
 | 
			
		||||
					fmt.Printf("Overriding with : %s\n", e.Effect)
 | 
			
		||||
					previousEffect = currentEffect
 | 
			
		||||
					overrideEffect = e
 | 
			
		||||
					currentEffect = e
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			if overrideEffect.Effect == "queue" {
 | 
			
		||||
				if currentEffect.Duration > 0 {
 | 
			
		||||
					currentEffect.Duration -= 40
 | 
			
		||||
				} else {
 | 
			
		||||
					if len(globalEffectChannel) > 0 {
 | 
			
		||||
						lastEffect := currentEffect
 | 
			
		||||
						currentEffect = <-globalEffectChannel
 | 
			
		||||
						if lastEffect != currentEffect {
 | 
			
		||||
							fmt.Printf("New effect selected : %s\n", currentEffect.Effect)
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -93,13 +93,14 @@ func PlasmaPanel(w int, h int, speed uint16) [][]RGBcolor {
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	offset := 0.5 // center offset
 | 
			
		||||
	scale := math.Pi * 2.0 / float64(w)
 | 
			
		||||
	scaleW := math.Pi * 2.0 / float64(w)
 | 
			
		||||
	scaleH := math.Pi * 2.0 / float64(h)
 | 
			
		||||
 | 
			
		||||
	for y := 0; y < h; y++ {
 | 
			
		||||
		for x := 0; x < w; x++ {
 | 
			
		||||
			u := math.Cos((float64(x) + offset) * scale)
 | 
			
		||||
			v := math.Cos((float64(y) + offset) * scale)
 | 
			
		||||
			j := math.Cos(offset * scale) // 2D - No Z
 | 
			
		||||
			u := math.Cos((float64(x) + offset) * scaleW)
 | 
			
		||||
			v := math.Cos((float64(y) + offset) * scaleH)
 | 
			
		||||
			j := math.Cos(offset * scaleW) // 2D - No Z
 | 
			
		||||
			e := (u + v + j + 3.0) / 6.0
 | 
			
		||||
			r, g, b := colorPlasmaFromFloatVal(palletteOffset + e)
 | 
			
		||||
			var rgb [3]byte
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue