/*
* @(#)StarTransition2D.java
*
* $Date: 2014-06-06 20:04:49 +0200 (P, 06 jún. 2014) $
*
* Copyright (c) 2011 by Jeremy Wood.
* All rights reserved.
*
* The copyright of this software is owned by Jeremy Wood.
* You may not use, copy or modify this software, except in
* accordance with the license agreement you entered into with
* Jeremy Wood. For details see accompanying license terms.
*
* This software is probably, but not necessarily, discussed here:
* https://javagraphics.java.net/
*
* That site should also contain the most recent official version
* of this software. (See the SVN repository for more details.)
*/
package com.bric.image.transition;
import net.jafama.FastMath;
import java.awt.Shape;
import java.awt.geom.GeneralPath;
/** This clips to the shape of a star zooming in/out. Here are playback samples:
* <p><table summary="Sample Animations of StarTransition2D" cellspacing="50" border="0"><tr>
* <td align="center">
* <img src="https://javagraphics.java.net/resources/transition/StarTransition2D/StarIn.gif" alt="Star In">
* <p>Star In
* </td>
* <td align="center">
* <img src="https://javagraphics.java.net/resources/transition/StarTransition2D/StarOut.gif" alt="Star Out">
* <p>Star Out
* </td>
* </tr></table>
*/
public class StarTransition2D extends AbstractShapeTransition2D {
/** This public static method is used by the
* {@link com.bric.image.transition.Transition2DDemoHelper}
* class to create sample animations of this transition.
* @return the transitions that should be used to demonstrate this
* transition.
*/
public static Transition[] getDemoTransitions() {
return new Transition[] {
new StarTransition2D(IN),
new StarTransition2D(OUT)
};
}
/** Creates a new StarTransition2D that zooms out.
*
*/
public StarTransition2D() {
super();
}
/** Creates a new StarTransition2D.
*
* @param type must be IN or OUT
*/
public StarTransition2D(int type) {
super(type);
}
@Override
public Shape getShape() {
GeneralPath p = new GeneralPath();
double angle = Math.PI/10;
float r2 = 2.5f;
double k = Math.PI*2/10;
p.moveTo((float) (FastMath.cos(angle)), (float) (FastMath.sin(angle)));
for(int a = 0; a<5; a++) {
p.lineTo((float) (r2 * FastMath.cos(angle + k)), (float) (r2 * FastMath.sin(angle + k)));
angle+= Math.PI*2.0/5.0;
p.lineTo((float) (FastMath.cos(angle)), (float) (FastMath.sin(angle)));
}
p.closePath();
return p;
}
@Override
public String getShapeName() {
return "Star";
}
}