PendulumRailStopper.java
/*
* Created on 2007/02/02
* Copyright (C) 2007 Koga Laboratory. All rights reserved.
*
*/
package org.mklab.tool.control.model.pendulum;
import org.mklab.nfc.matrix.DoubleMatrix;
import org.mklab.tool.control.system.parameter.Parameter;
import org.mklab.tool.control.system.parameter.SIunit;
import org.mklab.tool.control.system.sink.DoubleRestrictor;
/**
* 倒立振子のレールストッパーを表わすクラスです。
*
* @author koga
* @version $Revision: 1.2 $, 2007/02/02
*/
public class PendulumRailStopper extends DoubleRestrictor {
/** レールの長さ */
@Parameter(name = "railLength", unit = SIunit.m, description = "レールの長さ")
private double railLength = 0.32;
/**
* 新しく生成された<code>PendulumRailStopper</code>オブジェクトを初期化します。
*/
public PendulumRailStopper() {
super();
updateWith("railLength"); //$NON-NLS-1$
}
/**
* 新しく生成された<code>PendulumRailStopper</code>オブジェクトを初期化します。
*
* @param railLength レール長さ
*/
public PendulumRailStopper(final double railLength) {
super();
this.railLength = railLength;
updateWith("railLength"); //$NON-NLS-1$
}
/**
* @see org.mklab.tool.control.system.sink.Restrictor#updateWith(java.lang.String)
*/
@Override
public boolean updateWith(final String parameter) {
if (parameter.equals("railLength")) { //$NON-NLS-1$
final DoubleMatrix range = new DoubleMatrix(1, 2);
range.setElement(1, 1, -this.railLength / 2);
range.setElement(1, 2, this.railLength / 2);
final int[] restrictedSignal = new int[] {1};
setRange(range, restrictedSignal);
return true;
}
return false;
}
}