こんにちは、私はプログラミングにかなり慣れていないので、Java で、新しい三角形のポイントが y 値の通常の位置からずれているコーナー間の大きな三角形の中点から再帰的な三角形を作成する関数を作成しようとしています。視覚化については、下の写真を参照してください。
最初の図は、再帰アルゴリズムの進行を偏差なし (0,1,2 の順序) で示し、2 番目の図は (順序 0,1) で示しています。
最初の 2、3 の注文に必要なものだけを作成する作業コードを作成することができましたが、注文 2 以上に達すると、小さな三角形が同じ中間点を使用しないため、次のように見えるという問題に遭遇します。下の写真。
そのため、各三角形の正しい中間点を保存して呼び出す方法について助けが必要です。中点の計算を制御して保存する新しいクラスを実装することを考えていましたが、私が言ったように、これには助けが必要です。
以下は私の現在のコードです
ポイント クラスには、ポイントの ax 値と y 値が格納されます
lineBetween は、選択した点の間に線を作成します
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);
}
}
前もって感謝します
ビクター