色々やってたけど記録つけるの忘れてた・・。
脈絡ないけど今やろうとしてることだけ書きます。
機構シミュレータに是非とも実装したいカム機構
楕円や卵型、或いは自分で描いた図形をカムとし、回転させて往復運動に変える機構
複雑な形状を回転させるためにまずはGraphics2Dについて勉強
Graphics2D g2 = (Graphics2D)g;
final AffineTransform at = new AffineTransform();
at.rotate(theta, X, Y);
g2.setTransform(at);
まずGraphics型のgをGraphics2D型に変換して準備
アフィン変換用の変数atを宣言
後はrotate(double theta, double x, double y)メソッドで、
(x,y)を中心にthetaだけ回転させる変換を書いてsetして準備完了
これ以降に描く図形は(x,y)を中心にthetaだけ回転された状態で描画される。
thetaを少しずつずらしながら繰り返せば回転アニメ―そん
これだけではカム機構ではないので、次いで当たり判定について・・。
回転中心と回転図形との距離を算出するにはどうすればいいか。
楕円の回転程度なら方程式から出せるかもしれないが、複雑な図形ではまず無理
ここは複雑な形状の当たり判定法としては有名(ちょっと古い?)かもしれないけど
やっぱり色で調べることに。
回転後の図形を描画した後、一直線上の各Pixelの色を取得して
色の変化で図形の境界を調べようと
けど使うメソッドがわからない。
getColor、getRGB、getPixelとかありそうだけど、
イメージデータの色取得だったり携帯電話用のメソッドだったりでうまく使えない・・。
ということで試行錯誤
脈絡ないけど今やろうとしてることだけ書きます。
機構シミュレータに是非とも実装したいカム機構
楕円や卵型、或いは自分で描いた図形をカムとし、回転させて往復運動に変える機構
複雑な形状を回転させるためにまずはGraphics2Dについて勉強
Graphics2D g2 = (Graphics2D)g;
final AffineTransform at = new AffineTransform();
at.rotate(theta, X, Y);
g2.setTransform(at);
まずGraphics型のgをGraphics2D型に変換して準備
アフィン変換用の変数atを宣言
後はrotate(double theta, double x, double y)メソッドで、
(x,y)を中心にthetaだけ回転させる変換を書いてsetして準備完了
これ以降に描く図形は(x,y)を中心にthetaだけ回転された状態で描画される。
thetaを少しずつずらしながら繰り返せば回転アニメ―そん
これだけではカム機構ではないので、次いで当たり判定について・・。
回転中心と回転図形との距離を算出するにはどうすればいいか。
楕円の回転程度なら方程式から出せるかもしれないが、複雑な図形ではまず無理
ここは複雑な形状の当たり判定法としては有名(ちょっと古い?)かもしれないけど
やっぱり色で調べることに。
回転後の図形を描画した後、一直線上の各Pixelの色を取得して
色の変化で図形の境界を調べようと
けど使うメソッドがわからない。
getColor、getRGB、getPixelとかありそうだけど、
イメージデータの色取得だったり携帯電話用のメソッドだったりでうまく使えない・・。
ということで試行錯誤