こんにちは私はかなりプログラミングが新しく、新しい三角形の点が通常の位置からずれている角の間の大きな三角形の中間点から再帰的な三角形を作成する関数を作成しようとしていますy値。ビジュアライゼーションについては下の図を参照してください。偏差のあるJava再帰三角形
最初の画像は、任意の偏差(順序0,1,2)なしに再帰アルゴリズムの進行を示し、第二の画像は、(順序0,1)でそれを示しています。
私は最初の2つの注文のために必要なものを作成するコードを作成しましたが、2番目と2番目の注文に達すると、小さな三角形が同じ中間点を使用しない問題にぶつかりますしたがって、以下の図のようになります。
だから私は、三角形のそれぞれについて、正しい中間点を保存し、呼び出す方法で助けが必要。私は中点の計算を制御し、それらを保存する新しいクラスを実装することを考えていましたが、私はこれに助けが必要だと言いました。以下
は点
lineBetweenためのポイントクラス格納AXとY値は、選択された点の間の線を作成し、事前に
void fractalLine(TurtleGraphics turtle, int order, Point ett, Point tva, Point tre, int dev) {
if(order == 0){
lineBetween(ett,tva,turtle);
lineBetween(tva,tre,turtle);
lineBetween(tre,ett,turtle);
} else {
double deltaX = tva.getX() - ett.getX();
double deltaY = tva.getY() - ett.getY();
double deltaXtre = tre.getX() - ett.getX();
double deltaYtre = tre.getY() - ett.getY();
double deltaXtva = tva.getX() - tre.getX();
double deltaYtva = tva.getY() - tre.getY();
Point one;
Point two;
Point three;
double xt = ((deltaX/2))+ett.getX();
double yt = ((deltaY/2))+ett.getY() +RandomUtilities.randFunc(dev);
one = new Point(xt,yt);
xt = (deltaXtre/2)+ett.getX();
yt = (deltaYtre/2)+ett.getY() +RandomUtilities.randFunc(dev);
two = new Point(xt,yt);
xt = ((deltaXtva/2))+tre.getX();
yt = ((deltaYtva/2))+tre.getY() +RandomUtilities.randFunc(dev);
three = new Point(xt,yt);
fractalLine(turtle,order-1,one,tva,three,dev/2);
fractalLine(turtle,order-1,ett,one,two,dev/2);
fractalLine(turtle,order-1,two,three,tre,dev/2);
fractalLine(turtle,order-1,one,two,three,dev/2);
}
}
おかげで私の現在のコードである
Victor
エッジを分割し、共有頂点などを参照する三角形を持つことができるように、「エッジ」クラスと「頂点」クラスを持ちます。 – Torious
なぜ乱数が必要ですか? devの目的は何ですか?元の投稿を編集してください。ありがとう – durron597
'getMidpoint(Point a、Point b、double deviation)'メソッド(または同様のもの)を作成することをお勧めします。また、あなたの偏差はなぜy方向にしかないのですか?私は確かに分かりませんが、あなたの問題は、次のレベルに進む際にポイントを一貫した順序で保持しないことが原因であると思われます。 –