Android Open Source - MovingPolygons Sine Wave






From Project

Back to project page MovingPolygons.

License

The source code is released under:

GNU General Public License

If you think the Android project MovingPolygons listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

// Moving Polygons Live Wallpaper
// Copyright (C) 2013 LogicallyCreative.org
////from   w w w. j  av a  2 s .  c o m
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
package org.logicallycreative.mplw.managers;

import org.logicallycreative.mplw.util.RandomNumberUtility;

public class SineWave extends ColorManager {
  private final float precisionIncrement = 0.01f;
  private final float sinePositionStart;
  private final float sinePositionEnd;
  private final float sineRange;
  private final float sineCenter;

  private float redSinePosition;
  private float greenSinePosition;
  private float blueSinePosition;

  public SineWave(int minimumColorValue, int maximumColorValue) {
    super(minimumColorValue, maximumColorValue);

    sinePositionStart = (float) (Math.PI * -1f);
    sinePositionEnd = (float) Math.PI;

    sineRange = (super.maximumColorValue - super.minimumColorValue) / 2;
    sineCenter = sineRange + super.minimumColorValue;

    redSinePosition = RandomNumberUtility.getRandomFloat(sinePositionStart, sinePositionEnd, precisionIncrement);
    greenSinePosition = RandomNumberUtility.getRandomFloat(sinePositionStart, sinePositionEnd, precisionIncrement);
    blueSinePosition = RandomNumberUtility.getRandomFloat(sinePositionStart, sinePositionEnd, precisionIncrement);
  }

  @Override
  public void changeColors() {
    redSinePosition += precisionIncrement;
    if (redSinePosition > sinePositionEnd) {
      redSinePosition = sinePositionStart;
    }

    greenSinePosition += precisionIncrement;
    if (greenSinePosition > sinePositionEnd) {
      greenSinePosition = sinePositionStart;
    }

    blueSinePosition += precisionIncrement;
    if (blueSinePosition > sinePositionEnd) {
      blueSinePosition = sinePositionStart;
    }

    super.currentColor.red = calculateColorValue(redSinePosition);
    super.currentColor.green = calculateColorValue(greenSinePosition);
    super.currentColor.blue = calculateColorValue(blueSinePosition);
  }

  private int calculateColorValue(float sinePosition) {
    return (int) ((sineRange * Math.sin(sinePosition)) + sineCenter);
  }
}




Java Source Code List

org.logicallycreative.mplw.MovingPolygonsEngine.java
org.logicallycreative.mplw.MovingPolygonsService.java
org.logicallycreative.mplw.PreferencesActivity.java
org.logicallycreative.mplw.common.ColoringMethods.java
org.logicallycreative.mplw.common.DefaultSettings.java
org.logicallycreative.mplw.common.SettingNames.java
org.logicallycreative.mplw.common.SettingRanges.java
org.logicallycreative.mplw.data.engine.SettingsData.java
org.logicallycreative.mplw.data.shape.DeltaPoint.java
org.logicallycreative.mplw.data.shape.ShapeColor.java
org.logicallycreative.mplw.data.shape.Shape.java
org.logicallycreative.mplw.factories.ColorManagerFactory.java
org.logicallycreative.mplw.factories.SettingsDataFactory.java
org.logicallycreative.mplw.managers.ColorManager.java
org.logicallycreative.mplw.managers.SawtoothWave.java
org.logicallycreative.mplw.managers.SineWave.java
org.logicallycreative.mplw.managers.StaticColor.java
org.logicallycreative.mplw.util.RandomNumberUtility.java
org.logicallycreative.mplw.widgets.AboutPreference.java
org.logicallycreative.mplw.widgets.EchoCountSeekbarPreference.java
org.logicallycreative.mplw.widgets.EchoSpacingSeekbarPreference.java
org.logicallycreative.mplw.widgets.PointCountSeekbarPreference.java
org.logicallycreative.mplw.widgets.ScrollableTextPreference.java
org.logicallycreative.mplw.widgets.SeekBarPreference.java