« legacyFormatの短いサンプル |Main| BufferStrategy »

« legacyFormatの短いサンプル | log | BufferStrategy »

新しい頂点クラスを作る手順メモ

[2006-11-13 18:25] まずpluginsの中にtestというフォルダを作ってinit.pyを作成。
grinedit.addVertex("BoxVertex", {})
と書いてみる。実行すると頂点が表示された。OK。

BoxVertexの所を org.nishiohirokazu.graph.FileVertex に変えてみる。 Graph#addObjでキャストエラー。IGRINObjectインターフェイスをimplementsしていないから。 ちなみに今回はRenderableVertexを継承していないのだ。 なぜならextends JLabelだから。

	private String id;
	public String getId() {
		return id;
	}

	public void setId(Object o){
		id = o.toString();
	}

	public Hashtable getParams() {
		return new Hashtable();
	}

SimpleLayout#layoutStepでキャストエラー。 MassPointを継承していないから。これはIMassPointに変えるべきですな。 IMassPointをimplementsしてMassPointを参考に実装。

	private Vector dVelList = new Vector();
	private double[] position = new double[2];
	private double[] velocity = new double[2];

	public Vector getDVelList() {
		return dVelList;
	}

	public void setDVelList(Vector velList) {
		dVelList = velList;
	}

	public double[] getPosition() {
		return position;
	}

	public void setPosition(double[] position) {
		this.position = position;
	}

	public double[] getVelocity() {
		return velocity;
	}

	public void setVelocity(double[] velocity) {
		this.velocity = velocity;
	}

PL_RepulsionでRenderableVertexにキャストしようとしてエラー。 これはRepulsionが悪い。 IMassPointに変更。

ワールド座標系からスクリーン座標系に変換するところで RenderableVertexにキャストしていたのを、

Object o = i.next();
IMassPoint v = (IMassPoint) o;
IHasScreenPos sv = (IHasScreenPos) o;
sv.setScreenPos(vp.viewportTransform(v.getPosition()));
に修正。IHasScreenPosにセッタがなかったので追加。
private double[] screenPos;
public double[] getScreenPos() {
	return screenPos;
}
public void setScreenPos(double[] pos) {
	screenPos = pos;
}

レンダリングエンジンがIRenderにキャストしようとするのでそれもimplements

public void render(Object target) {
	update((Graphics) target);
}
無事描画はされるようになったが、描画される位置がおかしい。 どうやって直すかなぁ、これ。

トラックバック(Trackback)

Trackback URL: http://www.nishiohirokazu.org/mt/mt-tb.cgi/417

ご意見・ご感想をお送りください(フィードバック)

(フィードバックはメールで送信され、基本的に表示されませんが、内容によっては公開させていただくこともございます。ご了承ください。Your comment doesn't appear the page immediately. If the comment has value to other people, it will be put on the page or subsequent entries. Thank you.)

上の情報は、いずれも未記入でかまいません。 All of above questions are optional.