6つの頂点を持つポリゴンを作成しました。これをポリゴンの外側と呼びましょう。外側のポリゴンの内側に、小さなポリゴンを作成しました。一度に1点ずつ縦にひっくり返したいです。
私は外側のポリゴンの頂点を知っておりArrayList<Polygon>
、内側のポリゴン用にを持っています。外側のポリゴンを反転させることができました。しかし、新しいポリゴンの相対位置を維持しながら、内側のポリゴンを反転するにはどうすればよいですか?外側のポリゴンの中心と反転バージョンを知っています。
訂正:私は水平に反転する必要がありました。外側のポリゴン(三角形)を反転させて、内側のポリゴンを動かすことができました。しかし、距離は正しくありません。これは私が行ったことの写真です(https://docs.google.com/drawings/d/1cPYJqxTWVu5gSHFQyHxHWSTysNzxJvNuJIwsgCQInfc/edit)https://docs.google.com/drawings/d/1cPYJqxTWVu5gSHFQyHxHWST
私はこれを試しました:
for (Polygon p : polygonList) {
Polygon tempP = new Polygon(p.xpoints, p.ypoints, p.npoints);
firstPointinPolygon = new Point(p.xpoints[0], p.ypoints[0]);
// find frist point in the polygon
float adjacent = (float) firstPointinPolygon.getX() - 400;
float opposite = (float) firstPointinPolygon.getY() - 400;
float hypotenuse = (float) Math.sqrt(opposite * opposite + adjacent * adjacent);
float cosine = adjacent / hypotenuse;
float sine = opposite / hypotenuse;
float endX = 400 * cosine;
float endY = 400 * sine;
float endXDelta =400-endX;
float endYDelta=400-endY;
Polygon pM = move(tempP, endX, endY);
polygonListMirror.add(pM);
tempP = new Polygon();
}
public Polygon move(Polygon p, double xMove, double yMove) {
// Change the values of the points for the Polygon
for (int i = 0; i < p.xpoints.length; i++) {
p.xpoints[i] += xMove;
p.ypoints[i] += yMove;
}
return p;
}
しかし、結果は得られなかったと思いました。私は何が間違っているのですか?最終結果は、次のリンクの画像のようになります:(https://docs.google.com/drawings/d/1vYdWkCelWW1_NUypNhtmckBYfEMzCf6bMVtoB-AyPkw/edit)https://docs.google.com/drawings/d/1vYdWkCelWW1_NUypNhtmckBYfEMzCf6b /編集