package edu.cmu.cs.eyetrack.gui.shapes.sabine.part1;
import java.awt.Color;
import java.awt.geom.GeneralPath;
import edu.cmu.cs.eyetrack.gui.shapes.Stimulus;
public class Sabine7Stimulus extends Stimulus {
private static double kappa = 0.5522847498;
private int radius;
public Sabine7Stimulus(String name, Color color, int diameter) {
super(name, color, diameter, diameter, color);
this.radius = diameter/2;
makeShape(0,0);
}
private void makeShape(int x, int y) {
// Recenter shape
x += radius;
y += radius;
GeneralPath s = new GeneralPath();
s.moveTo(x, y-radius); // move to A
s.curveTo(x+radius*kappa, y-radius, x+radius, y-radius*kappa, x+radius, y); // curve to A', B', B
s.curveTo(x+radius, y+radius*kappa, x+radius*kappa, y+radius, x, y+radius );
s.curveTo(x-radius*kappa, y+radius, x-radius, y+radius*kappa, x-radius, y);
//s.curveTo(x-radius, y-radius*kappa, x-radius*kappa, y-radius, x, y-radius );
s.lineTo(x-radius, y-radius);
s.closePath();
shape = s;
}
@Override
public Stimulus factoryClone(Color color) {
if(color==null) {
return new Sabine7Stimulus(name, this.color, radius*2);
} else {
return new Sabine7Stimulus(name, color, radius*2);
}
}
@Override
public void move(int newX, int newY) {
makeShape(newX - (int) (0.5 * width),
newY - (int) (0.5 * height));
}
}