我的目标是创建一个六边形瓷砖的领域。我已经有了一个单元格矩阵,每个单元格的高度足以适合完整的六边形图像:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class UITest extends Application {
final private static String TILE_IMAGE_LOCATION = System.getProperty("user.dir") + File.separatorChar +"resources"+ File.separatorChar + "blueTile.png";
final private static Image HEXAGON_IMAGE = initTileImage();
private static Image initTileImage() {
try {
return new Image(new FileInputStream(new File(TILE_IMAGE_LOCATION)));
} catch (FileNotFoundException e) {
throw new IllegalStateException(e);
}
}
public void start(Stage primaryStage) {
int height = 4;
int width = 6;
GridPane tileMap = new GridPane();
Scene content = new Scene(tileMap, 800, 600);
primaryStage.setScene(content);
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
ImageView tile = new ImageView(HEXAGON_IMAGE);
GridPane.setConstraints(tile, x, y);
tileMap.getChildren().add(tile);
}
}
primaryStage.show();
}
}
我的问题不是垂直间隙,我可以通过将网格窗格的vgap()
添加到一个适当的值来确定垂直间隙。对我来说,困难是将每第二行向右移动半个单元宽度。
我怎样才能最好地实现每隔一排的移位?
我花了一些时间才弄明白。希望能有所帮助。我不使用图像。它是由多边形组成的,你可以自定义笔画和填充颜色,以及宽度。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.layout.AnchorPane;
import javafx.scene.paint.Paint;
import javafx.scene.shape.Polygon;
public class UITest extends Application {
public void start(Stage primaryStage) {
int height = 600;
int width = 800;
AnchorPane tileMap = new AnchorPane();
Scene content = new Scene(tileMap, width, height);
primaryStage.setScene(content);
double size = 50,v=Math.sqrt(3)/2.0;
for(double y=0;y<height;y+=size*Math.sqrt(3))
{
for(double x=-25,dy=y;x<width;x+=(3.0/2.0)*size)
{
Polygon tile = new Polygon();
tile.getPoints().addAll(new Double[]{
x,dy,
x+size,dy,
x+size*(3.0/2.0),dy+size*v,
x+size,dy+size*Math.sqrt(3),
x,dy+size*Math.sqrt(3),
x-(size/2.0),dy+size*v
});
tile.setFill(Paint.valueOf("#ffffff"));
tile.setStrokeWidth(2);
tile.setStroke(Paint.valueOf("#000000") );
tileMap.getChildren().add(tile);
dy = dy==y ? dy+size*v : y;
}
}
primaryStage.show();
}
public static void main(String[] args)
{
launch(args);
}
}
我想生成多个六边形存在的扁平岛屿。到目前为止,我已经能够用代码创建六边形网格,但不知道如何将它们分组,创建一个随机形状的岛。(任何形状,不是一个完美的圆,正方形等)我想我需要一个算法,将六边形瓷砖旁边的现有瓷砖的多个边。如果你能帮我一个算法的想法,那就太好了。
现在,我们的WebGL包装器已经构建好,让我们在屏幕上绘制一个简单的三角形,来创建我们的第一个WebGL应用。它将作为创建更复杂的3D模型的典型步骤的良好基础。本节,我们将介绍位置缓冲区的概念,它其实就是用来定义3D模型的位置和形状的顶点的数组。 图9-1 创建三角形平面 操作步骤 按照以下步骤使用WebGL渲染一个2D三角形: 1. 链接到glMatrix库和WebGL包装器: <script
我试图在Angular中创建一个虚拟模型,以从后端获取值。但由于数组的原因,它会抛出一些错误。 浏览器控制台错误 ERROR TypeError:无法读取MapSubscriber.Project(CARB.Service.ts:33)上Array.Map( )上的新Bolus(abc.ts:39)上未定义的属性“|0”。/node_modules/rxjs/_esm5/internal/oper
我刚开始使用JavaFX,有一个问题。在我的项目中,我想使用旋转矩形。但矩形只围绕其中心旋转,我希望它围绕其左上角旋转。 就像这张照片(从这里开始): 下面是我的项目中的一些代码: 在这种情况下,如果按下箭头键,矩形会旋转。
问题内容: 我试图创建像蜜蜂梳子那样相互连接的10.000个六边形,我想将所有这些都创建为一个元素,然后将一些东西导入其中,但是为了将六边形连接在一起,我的算法在连接了前6个元素后就卡住了。这是我在Java中的算法。我用Java进行测试。另外,我想使它们的尺寸比连接前更小。 这是我的五角形课 } 问题答案: 创建矩形网格非常明显-只需倾斜矩形网格(要么全部倾斜并获得平行四边形,然后使用模将其包装,