use of javafx.scene.shape.Cylinder in project FXyzLib by Birdasaur.
the class CubeViewer method buildGrids.
private void buildGrids(double size, double spacing) {
//fill in grid lines for X Axis
ArrayList xy1Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
final Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setTranslateX((-size / 2) + i);
newCyl.setTranslateZ(-size / 2);
xy1Cyls.add(newCyl);
}
xy1GridLinesGroup = new Group(xy1Cyls);
//Now build the grids for the mirror image
ArrayList xy2Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
final Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setTranslateX((-size / 2) + i);
newCyl.setTranslateZ(size / 2);
xy2Cyls.add(newCyl);
}
xy2GridLinesGroup = new Group(xy2Cyls);
ArrayList xx1Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
final Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setTranslateZ(-size / 2);
newCyl.setTranslateY((size / 2) - i);
newCyl.setRotationAxis(Rotate.Z_AXIS);
newCyl.setRotate(90);
xx1Cyls.add(newCyl);
}
xx1GridLinesGroup = new Group(xx1Cyls);
//Now build the grids for the mirror image
ArrayList xx2Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
final Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setTranslateZ(size / 2);
newCyl.setTranslateY((size / 2) - i);
newCyl.setRotationAxis(Rotate.Z_AXIS);
newCyl.setRotate(90);
xx2Cyls.add(newCyl);
}
xx2GridLinesGroup = new Group(xx2Cyls);
//Add the sub groups to the parent group
getChildren().addAll(xy1GridLinesGroup);
getChildren().addAll(xx1GridLinesGroup);
getChildren().addAll(xy2GridLinesGroup);
getChildren().addAll(xx2GridLinesGroup);
// File in grid Lines for Y Axis //////////////////////////
ArrayList yy1Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
final Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setTranslateX(-size / 2);
newCyl.setTranslateZ((-size / 2) + i);
yy1Cyls.add(newCyl);
}
yy1GridLinesGroup = new Group(yy1Cyls);
//Now build the grids for the mirror image
ArrayList yy2Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
final Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setTranslateX(size / 2);
newCyl.setTranslateZ((-size / 2) + i);
yy2Cyls.add(newCyl);
}
yy2GridLinesGroup = new Group(yy2Cyls);
ArrayList yx1Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
final Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setTranslateX(-size / 2);
newCyl.setTranslateY((size / 2) - i);
newCyl.setRotationAxis(Rotate.X_AXIS);
newCyl.setRotate(90);
yx1Cyls.add(newCyl);
}
yx1GridLinesGroup = new Group(yx1Cyls);
//Now build the grids for the mirror image
ArrayList yx2Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
final Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setTranslateX(size / 2);
newCyl.setTranslateY((size / 2) - i);
newCyl.setRotationAxis(Rotate.X_AXIS);
newCyl.setRotate(90);
yx2Cyls.add(newCyl);
}
yx2GridLinesGroup = new Group(yx2Cyls);
//Add the sub groups to the parent group
getChildren().addAll(yy1GridLinesGroup);
getChildren().addAll(yx1GridLinesGroup);
getChildren().addAll(yy2GridLinesGroup);
getChildren().addAll(yx2GridLinesGroup);
// File in grid Lines for Z Axis //////////////////////////
ArrayList zy1Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
final Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setTranslateY(size / 2);
newCyl.setTranslateX((-size / 2) + i);
newCyl.setRotationAxis(Rotate.X_AXIS);
newCyl.setRotate(90);
zy1Cyls.add(newCyl);
}
zy1GridLinesGroup = new Group(zy1Cyls);
//Now build the grids for the mirror image
ArrayList zy2Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
final Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setTranslateY(-size / 2);
newCyl.setTranslateX((-size / 2) + i);
newCyl.setRotationAxis(Rotate.X_AXIS);
newCyl.setRotate(90);
zy2Cyls.add(newCyl);
}
zy2GridLinesGroup = new Group(zy2Cyls);
ArrayList zx1Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
final Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setTranslateY(size / 2);
newCyl.setTranslateZ((-size / 2) + i);
newCyl.setRotationAxis(Rotate.Z_AXIS);
newCyl.setRotate(90);
zx1Cyls.add(newCyl);
}
zx1GridLinesGroup = new Group(zx1Cyls);
//Now build the grids for the mirror image
ArrayList zx2Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
final Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setTranslateY(-size / 2);
newCyl.setTranslateZ((-size / 2) + i);
newCyl.setRotationAxis(Rotate.Z_AXIS);
newCyl.setRotate(90);
zx2Cyls.add(newCyl);
}
zx2GridLinesGroup = new Group(zx2Cyls);
//Add the sub groups to the parent group
getChildren().addAll(zy1GridLinesGroup);
getChildren().addAll(zx1GridLinesGroup);
getChildren().addAll(zy2GridLinesGroup);
getChildren().addAll(zx2GridLinesGroup);
}
use of javafx.scene.shape.Cylinder in project FXyzLib by Birdasaur.
the class CubeViewer method buildAxes.
private void buildAxes(double size, double axisThickness) {
// X-Axis Material
final PhongMaterial redMaterial = new PhongMaterial();
redMaterial.setDiffuseColor(Color.DARKRED);
redMaterial.setSpecularColor(Color.RED);
// Y-Axis Material
final PhongMaterial greenMaterial = new PhongMaterial();
greenMaterial.setDiffuseColor(Color.DARKGREEN);
greenMaterial.setSpecularColor(Color.GREEN);
// Z-Axis Material
final PhongMaterial blueMaterial = new PhongMaterial();
blueMaterial.setDiffuseColor(Color.DARKBLUE);
blueMaterial.setSpecularColor(Color.BLUE);
//XYZ 1
final Cylinder x1AxisCyl = new Cylinder(axisThickness, size);
final Cylinder y1AxisCyl = new Cylinder(axisThickness, size);
final Cylinder z1AxisCyl = new Cylinder(axisThickness, size);
x1AxisCyl.setTranslateY(size / 2);
x1AxisCyl.setTranslateZ(-size / 2);
y1AxisCyl.setTranslateX(-size / 2);
y1AxisCyl.setTranslateZ(-size / 2);
z1AxisCyl.setTranslateX((-size) / 2);
z1AxisCyl.setTranslateY(size / 2);
x1AxisCyl.setRotationAxis(Rotate.Z_AXIS);
x1AxisCyl.setRotate(90);
z1AxisCyl.setRotationAxis(Rotate.X_AXIS);
z1AxisCyl.setRotate(-90);
x1AxisCyl.setMaterial(redMaterial);
y1AxisCyl.setMaterial(greenMaterial);
z1AxisCyl.setMaterial(blueMaterial);
//getChildren().addAll(x1AxisCyl, y1AxisCyl, z1AxisCyl);
//XYZ 2
final Cylinder x2AxisCyl = new Cylinder(axisThickness, size);
final Cylinder y2AxisCyl = new Cylinder(axisThickness, size);
final Cylinder z2AxisCyl = new Cylinder(axisThickness, size);
x2AxisCyl.setTranslateY(size / 2);
x2AxisCyl.setTranslateZ(size / 2);
y2AxisCyl.setTranslateX(size / 2);
y2AxisCyl.setTranslateZ(size / 2);
z2AxisCyl.setTranslateX(size / 2);
z2AxisCyl.setTranslateY(size / 2);
x2AxisCyl.setRotationAxis(Rotate.Z_AXIS);
x2AxisCyl.setRotate(90);
z2AxisCyl.setRotationAxis(Rotate.X_AXIS);
z2AxisCyl.setRotate(-90);
x2AxisCyl.setMaterial(redMaterial);
y2AxisCyl.setMaterial(greenMaterial);
z2AxisCyl.setMaterial(blueMaterial);
//getChildren().addAll(x2AxisCyl, y2AxisCyl, z2AxisCyl);
//XYZ 3
final Cylinder x3AxisCyl = new Cylinder(axisThickness, size);
final Cylinder y3AxisCyl = new Cylinder(axisThickness, size);
final Cylinder z3AxisCyl = new Cylinder(axisThickness, size);
x3AxisCyl.setTranslateY(-size / 2);
x3AxisCyl.setTranslateZ(-size / 2);
y3AxisCyl.setTranslateX(size / 2);
y3AxisCyl.setTranslateZ(-size / 2);
z3AxisCyl.setTranslateX(size / 2);
z3AxisCyl.setTranslateY(-size / 2);
x3AxisCyl.setRotationAxis(Rotate.Z_AXIS);
x3AxisCyl.setRotate(90);
z3AxisCyl.setRotationAxis(Rotate.X_AXIS);
z3AxisCyl.setRotate(-90);
x3AxisCyl.setMaterial(redMaterial);
y3AxisCyl.setMaterial(greenMaterial);
z3AxisCyl.setMaterial(blueMaterial);
//getChildren().addAll(x3AxisCyl, y3AxisCyl, z3AxisCyl);
//XYZ 4
final Cylinder x4AxisCyl = new Cylinder(axisThickness, size);
final Cylinder y4AxisCyl = new Cylinder(axisThickness, size);
final Cylinder z4AxisCyl = new Cylinder(axisThickness, size);
x4AxisCyl.setTranslateY(-size / 2);
x4AxisCyl.setTranslateZ(size / 2);
y4AxisCyl.setTranslateX(-size / 2);
y4AxisCyl.setTranslateZ(size / 2);
z4AxisCyl.setTranslateX(-size / 2);
z4AxisCyl.setTranslateY(-size / 2);
x4AxisCyl.setRotationAxis(Rotate.Z_AXIS);
x4AxisCyl.setRotate(90);
z4AxisCyl.setRotationAxis(Rotate.X_AXIS);
z4AxisCyl.setRotate(-90);
x4AxisCyl.setMaterial(redMaterial);
y4AxisCyl.setMaterial(greenMaterial);
z4AxisCyl.setMaterial(blueMaterial);
//getChildren().addAll(x4AxisCyl, y4AxisCyl, z4AxisCyl);
xAxesGroup.getChildren().addAll(x1AxisCyl, x2AxisCyl, x3AxisCyl, x4AxisCyl);
yAxesGroup.getChildren().addAll(y1AxisCyl, y2AxisCyl, y3AxisCyl, y4AxisCyl);
zAxesGroup.getChildren().addAll(z1AxisCyl, z2AxisCyl, z3AxisCyl, z4AxisCyl);
getChildren().addAll(xAxesGroup, yAxesGroup, zAxesGroup);
//fuck it throw a little sphere at the corners
final Sphere top1Sphere = new Sphere(2 * axisThickness);
final Sphere top2Sphere = new Sphere(2 * axisThickness);
final Sphere top3Sphere = new Sphere(2 * axisThickness);
final Sphere top4Sphere = new Sphere(2 * axisThickness);
final Sphere bottom1Sphere = new Sphere(2 * axisThickness);
final Sphere bottom2Sphere = new Sphere(2 * axisThickness);
final Sphere bottom3Sphere = new Sphere(2 * axisThickness);
final Sphere bottom4Sphere = new Sphere(2 * axisThickness);
top1Sphere.setTranslateX(-size / 2);
top1Sphere.setTranslateY(-size / 2);
top1Sphere.setTranslateZ(-size / 2);
top2Sphere.setTranslateX(-size / 2);
top2Sphere.setTranslateY(-size / 2);
top2Sphere.setTranslateZ(size / 2);
top3Sphere.setTranslateX(size / 2);
top3Sphere.setTranslateY(-size / 2);
top3Sphere.setTranslateZ(size / 2);
top4Sphere.setTranslateX(size / 2);
top4Sphere.setTranslateY(-size / 2);
top4Sphere.setTranslateZ(-size / 2);
bottom1Sphere.setTranslateX(-size / 2);
bottom1Sphere.setTranslateY(size / 2);
bottom1Sphere.setTranslateZ(-size / 2);
bottom2Sphere.setTranslateX(-size / 2);
bottom2Sphere.setTranslateY(size / 2);
bottom2Sphere.setTranslateZ(size / 2);
bottom3Sphere.setTranslateX(size / 2);
bottom3Sphere.setTranslateY(size / 2);
bottom3Sphere.setTranslateZ(size / 2);
bottom4Sphere.setTranslateX(size / 2);
bottom4Sphere.setTranslateY(size / 2);
bottom4Sphere.setTranslateZ(-size / 2);
sphereGroup.getChildren().addAll(top1Sphere, top2Sphere, top3Sphere, top4Sphere, bottom1Sphere, bottom2Sphere, bottom3Sphere, bottom4Sphere);
getChildren().add(sphereGroup);
}
use of javafx.scene.shape.Cylinder in project FXyzLib by Birdasaur.
the class CubeWorld method buildAxes.
private void buildAxes(double size, double axisThickness) {
//XYZ 1
final Cylinder x1AxisCyl = new Cylinder(axisThickness, size);
final Cylinder y1AxisCyl = new Cylinder(axisThickness, size);
final Cylinder z1AxisCyl = new Cylinder(axisThickness, size);
x1AxisCyl.setTranslateY(size / 2);
x1AxisCyl.setTranslateZ(-size / 2);
y1AxisCyl.setTranslateX(-size / 2);
y1AxisCyl.setTranslateZ(-size / 2);
z1AxisCyl.setTranslateX((-size) / 2);
z1AxisCyl.setTranslateY(size / 2);
x1AxisCyl.setRotationAxis(Rotate.Z_AXIS);
x1AxisCyl.setRotate(90);
z1AxisCyl.setRotationAxis(Rotate.X_AXIS);
z1AxisCyl.setRotate(-90);
x1AxisCyl.setMaterial(redMaterial);
y1AxisCyl.setMaterial(greenMaterial);
z1AxisCyl.setMaterial(blueMaterial);
//getChildren().addAll(x1AxisCyl, y1AxisCyl, z1AxisCyl);
//XYZ 2
final Cylinder x2AxisCyl = new Cylinder(axisThickness, size);
final Cylinder y2AxisCyl = new Cylinder(axisThickness, size);
final Cylinder z2AxisCyl = new Cylinder(axisThickness, size);
x2AxisCyl.setTranslateY(size / 2);
x2AxisCyl.setTranslateZ(size / 2);
y2AxisCyl.setTranslateX(size / 2);
y2AxisCyl.setTranslateZ(size / 2);
z2AxisCyl.setTranslateX(size / 2);
z2AxisCyl.setTranslateY(size / 2);
x2AxisCyl.setRotationAxis(Rotate.Z_AXIS);
x2AxisCyl.setRotate(90);
z2AxisCyl.setRotationAxis(Rotate.X_AXIS);
z2AxisCyl.setRotate(-90);
x2AxisCyl.setMaterial(redMaterial);
y2AxisCyl.setMaterial(greenMaterial);
z2AxisCyl.setMaterial(blueMaterial);
//getChildren().addAll(x2AxisCyl, y2AxisCyl, z2AxisCyl);
//XYZ 3
final Cylinder x3AxisCyl = new Cylinder(axisThickness, size);
final Cylinder y3AxisCyl = new Cylinder(axisThickness, size);
final Cylinder z3AxisCyl = new Cylinder(axisThickness, size);
x3AxisCyl.setTranslateY(-size / 2);
x3AxisCyl.setTranslateZ(-size / 2);
y3AxisCyl.setTranslateX(size / 2);
y3AxisCyl.setTranslateZ(-size / 2);
z3AxisCyl.setTranslateX(size / 2);
z3AxisCyl.setTranslateY(-size / 2);
x3AxisCyl.setRotationAxis(Rotate.Z_AXIS);
x3AxisCyl.setRotate(90);
z3AxisCyl.setRotationAxis(Rotate.X_AXIS);
z3AxisCyl.setRotate(-90);
x3AxisCyl.setMaterial(redMaterial);
y3AxisCyl.setMaterial(greenMaterial);
z3AxisCyl.setMaterial(blueMaterial);
//getChildren().addAll(x3AxisCyl, y3AxisCyl, z3AxisCyl);
//XYZ 4
final Cylinder x4AxisCyl = new Cylinder(axisThickness, size);
final Cylinder y4AxisCyl = new Cylinder(axisThickness, size);
final Cylinder z4AxisCyl = new Cylinder(axisThickness, size);
x4AxisCyl.setTranslateY(-size / 2);
x4AxisCyl.setTranslateZ(size / 2);
y4AxisCyl.setTranslateX(-size / 2);
y4AxisCyl.setTranslateZ(size / 2);
z4AxisCyl.setTranslateX(-size / 2);
z4AxisCyl.setTranslateY(-size / 2);
x4AxisCyl.setRotationAxis(Rotate.Z_AXIS);
x4AxisCyl.setRotate(90);
z4AxisCyl.setRotationAxis(Rotate.X_AXIS);
z4AxisCyl.setRotate(-90);
x4AxisCyl.setMaterial(redMaterial);
y4AxisCyl.setMaterial(greenMaterial);
z4AxisCyl.setMaterial(blueMaterial);
//getChildren().addAll(x4AxisCyl, y4AxisCyl, z4AxisCyl);
xAxesGroup.getChildren().addAll(x1AxisCyl, x2AxisCyl, x3AxisCyl, x4AxisCyl);
yAxesGroup.getChildren().addAll(y1AxisCyl, y2AxisCyl, y3AxisCyl, y4AxisCyl);
zAxesGroup.getChildren().addAll(z1AxisCyl, z2AxisCyl, z3AxisCyl, z4AxisCyl);
getChildren().addAll(xAxesGroup, yAxesGroup, zAxesGroup);
//fuck it throw a little sphere at the corners
final Sphere top1Sphere = new Sphere(2 * axisThickness);
final Sphere top2Sphere = new Sphere(2 * axisThickness);
final Sphere top3Sphere = new Sphere(2 * axisThickness);
final Sphere top4Sphere = new Sphere(2 * axisThickness);
final Sphere bottom1Sphere = new Sphere(2 * axisThickness);
final Sphere bottom2Sphere = new Sphere(2 * axisThickness);
final Sphere bottom3Sphere = new Sphere(2 * axisThickness);
final Sphere bottom4Sphere = new Sphere(2 * axisThickness);
top1Sphere.setTranslateX(-size / 2);
top1Sphere.setTranslateY(-size / 2);
top1Sphere.setTranslateZ(-size / 2);
top2Sphere.setTranslateX(-size / 2);
top2Sphere.setTranslateY(-size / 2);
top2Sphere.setTranslateZ(size / 2);
top3Sphere.setTranslateX(size / 2);
top3Sphere.setTranslateY(-size / 2);
top3Sphere.setTranslateZ(size / 2);
top4Sphere.setTranslateX(size / 2);
top4Sphere.setTranslateY(-size / 2);
top4Sphere.setTranslateZ(-size / 2);
bottom1Sphere.setTranslateX(-size / 2);
bottom1Sphere.setTranslateY(size / 2);
bottom1Sphere.setTranslateZ(-size / 2);
bottom2Sphere.setTranslateX(-size / 2);
bottom2Sphere.setTranslateY(size / 2);
bottom2Sphere.setTranslateZ(size / 2);
bottom3Sphere.setTranslateX(size / 2);
bottom3Sphere.setTranslateY(size / 2);
bottom3Sphere.setTranslateZ(size / 2);
bottom4Sphere.setTranslateX(size / 2);
bottom4Sphere.setTranslateY(size / 2);
bottom4Sphere.setTranslateZ(-size / 2);
getChildren().addAll(top1Sphere, top2Sphere, top3Sphere, top4Sphere);
getChildren().addAll(bottom1Sphere, bottom2Sphere, bottom3Sphere, bottom4Sphere);
}
use of javafx.scene.shape.Cylinder in project FXyzLib by Birdasaur.
the class CubeWorld method buildGridsOld.
private void buildGridsOld(double size, double spacing) {
//fill in grid lines for X Axis
PhongMaterial phong = new PhongMaterial();
phong.setSpecularColor(gridLinesWallColor);
phong.setDiffuseColor(gridLinesWallColor);
ArrayList xy1Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setMaterial(phong);
newCyl.setTranslateX((-size / 2) + i);
newCyl.setTranslateZ(-size / 2);
xy1Cyls.add(newCyl);
}
xy1GridLinesGroup = new Group(xy1Cyls);
//Now build the grids for the mirror image
ArrayList xy2Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setMaterial(phong);
newCyl.setTranslateX((-size / 2) + i);
newCyl.setTranslateZ(size / 2);
xy2Cyls.add(newCyl);
}
xy2GridLinesGroup = new Group(xy2Cyls);
ArrayList xx1Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setMaterial(phong);
newCyl.setTranslateZ(-size / 2);
newCyl.setTranslateY((size / 2) - i);
newCyl.setRotationAxis(Rotate.Z_AXIS);
newCyl.setRotate(90);
xx1Cyls.add(newCyl);
}
xx1GridLinesGroup = new Group(xx1Cyls);
//Now build the grids for the mirror image
ArrayList xx2Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setMaterial(phong);
newCyl.setTranslateZ(size / 2);
newCyl.setTranslateY((size / 2) - i);
newCyl.setRotationAxis(Rotate.Z_AXIS);
newCyl.setRotate(90);
xx2Cyls.add(newCyl);
}
xx2GridLinesGroup = new Group(xx2Cyls);
//Add the sub groups to the parent group
getChildren().addAll(xy1GridLinesGroup);
getChildren().addAll(xx1GridLinesGroup);
getChildren().addAll(xy2GridLinesGroup);
getChildren().addAll(xx2GridLinesGroup);
// File in grid Lines for Y Axis //////////////////////////
ArrayList yy1Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setMaterial(phong);
newCyl.setTranslateX(-size / 2);
newCyl.setTranslateZ((-size / 2) + i);
yy1Cyls.add(newCyl);
}
yy1GridLinesGroup = new Group(yy1Cyls);
//Now build the grids for the mirror image
ArrayList yy2Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setMaterial(phong);
newCyl.setTranslateX(size / 2);
newCyl.setTranslateZ((-size / 2) + i);
yy2Cyls.add(newCyl);
}
yy2GridLinesGroup = new Group(yy2Cyls);
ArrayList yx1Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setMaterial(phong);
newCyl.setTranslateX(-size / 2);
newCyl.setTranslateY((size / 2) - i);
newCyl.setRotationAxis(Rotate.X_AXIS);
newCyl.setRotate(90);
yx1Cyls.add(newCyl);
}
yx1GridLinesGroup = new Group(yx1Cyls);
//Now build the grids for the mirror image
ArrayList yx2Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setMaterial(phong);
newCyl.setTranslateX(size / 2);
newCyl.setTranslateY((size / 2) - i);
newCyl.setRotationAxis(Rotate.X_AXIS);
newCyl.setRotate(90);
yx2Cyls.add(newCyl);
}
yx2GridLinesGroup = new Group(yx2Cyls);
//Add the sub groups to the parent group
getChildren().addAll(yy1GridLinesGroup);
getChildren().addAll(yx1GridLinesGroup);
getChildren().addAll(yy2GridLinesGroup);
getChildren().addAll(yx2GridLinesGroup);
// File in grid Lines for Z Axis //////////////////////////
phong = new PhongMaterial();
phong.setSpecularColor(gridLinesFloorColor);
phong.setDiffuseColor(gridLinesFloorColor);
ArrayList zy1Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setMaterial(phong);
newCyl.setTranslateY(size / 2);
newCyl.setTranslateX((-size / 2) + i);
newCyl.setRotationAxis(Rotate.X_AXIS);
newCyl.setRotate(90);
zy1Cyls.add(newCyl);
}
zy1GridLinesGroup = new Group(zy1Cyls);
//Now build the grids for the mirror image
ArrayList zy2Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setMaterial(phong);
newCyl.setTranslateY(-size / 2);
newCyl.setTranslateX((-size / 2) + i);
newCyl.setRotationAxis(Rotate.X_AXIS);
newCyl.setRotate(90);
zy2Cyls.add(newCyl);
}
zy2GridLinesGroup = new Group(zy2Cyls);
ArrayList zx1Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setMaterial(phong);
newCyl.setTranslateY(size / 2);
newCyl.setTranslateZ((-size / 2) + i);
newCyl.setRotationAxis(Rotate.Z_AXIS);
newCyl.setRotate(90);
zx1Cyls.add(newCyl);
}
zx1GridLinesGroup = new Group(zx1Cyls);
//Now build the grids for the mirror image
ArrayList zx2Cyls = new ArrayList<>();
for (int i = 0; i < size; i += spacing) {
Cylinder newCyl = new Cylinder(gridSize, size);
newCyl.setMaterial(phong);
newCyl.setTranslateY(-size / 2);
newCyl.setTranslateZ((-size / 2) + i);
newCyl.setRotationAxis(Rotate.Z_AXIS);
newCyl.setRotate(90);
zx2Cyls.add(newCyl);
}
zx2GridLinesGroup = new Group(zx2Cyls);
//Add the sub groups to the parent group
getChildren().addAll(zy1GridLinesGroup);
getChildren().addAll(zx1GridLinesGroup);
getChildren().addAll(zy2GridLinesGroup);
getChildren().addAll(zx2GridLinesGroup);
}
use of javafx.scene.shape.Cylinder in project FXyzLib by Birdasaur.
the class RayTest method start.
@Override
public void start(Stage primaryStage) throws Exception {
Group sceneRoot = new Group();
Scene scene = new Scene(sceneRoot, sceneWidth, sceneHeight, true, SceneAntialiasing.BALANCED);
scene.setFill(Color.WHEAT);
camera = new PerspectiveCamera(true);
//setup camera transform for rotational support
cameraTransform.setTranslate(0, 0, 0);
cameraTransform.getChildren().add(camera);
camera.setNearClip(0.1);
camera.setFarClip(10000.0);
camera.setTranslateZ(-40);
cameraTransform.ry.setAngle(-45.0);
cameraTransform.rx.setAngle(-10.0);
//add a Point Light for better viewing of the grid coordinate system
PointLight light = new PointLight(Color.WHITE);
cameraTransform.getChildren().add(light);
cameraTransform.getChildren().add(new AmbientLight(Color.WHITE));
light.setTranslateX(camera.getTranslateX());
light.setTranslateY(camera.getTranslateY());
light.setTranslateZ(camera.getTranslateZ());
scene.setCamera(camera);
rotateY = new Rotate(0, 0, 0, 0, Rotate.Y_AXIS);
Group group = new Group();
group.getChildren().add(cameraTransform);
knot = new KnotMesh(2d, 1d, 0.4d, 2d, 3d, 100, 20, 0, 0);
// knot.setDrawMode(DrawMode.LINE);
knot.setCullFace(CullFace.NONE);
knot.setSectionType(SectionType.TRIANGLE);
spring = new CurvedSpringMesh(6d, 2d, 0.4d, 25d, 6.25d * 2d * Math.PI, 1000, 60, 0, 0);
spring.getTransforms().addAll(new Translate(6, -6, 0));
spring.setDrawMode(DrawMode.LINE);
spring.setCullFace(CullFace.NONE);
// spring.setTextureModeVertices3D(256*256,dens);
// NONE
knot.setTextureModeNone(Color.BROWN);
spring.setTextureModeNone(Color.BROWN);
knot.getTransforms().addAll(new Rotate(0, Rotate.X_AXIS), rotateY);
group.getChildren().add(knot);
group.getChildren().add(spring);
/*
Origin in knot
Target in spring
*/
org.fxyz.geometry.Point3D locOrigin = knot.getOrigin();
Point3D gloOrigin = knot.localToScene(new Point3D(locOrigin.x, locOrigin.y, locOrigin.z));
org.fxyz.geometry.Point3D locTarget1 = spring.getOrigin();
Point3D locTarget2 = new Point3D(locTarget1.x, locTarget1.y, locTarget1.z);
Point3D gloTarget = spring.localToScene(locTarget2);
Point3D gloDirection = gloTarget.subtract(gloOrigin).normalize();
Point3D gloOriginInLoc = spring.sceneToLocal(gloOrigin);
Bounds locBounds = spring.getBoundsInLocal();
Bounds gloBounds = spring.localToScene(locBounds);
Sphere s = new Sphere(0.05d);
s.getTransforms().add(new Translate(gloOrigin.getX(), gloOrigin.getY(), gloOrigin.getZ()));
s.setMaterial(new PhongMaterial(Color.GREENYELLOW));
group.getChildren().add(s);
s = new Sphere(0.05d);
s.getTransforms().add(new Translate(gloTarget.getX(), gloTarget.getY(), gloTarget.getZ()));
s.setMaterial(new PhongMaterial(Color.GREENYELLOW));
Point3D dir = gloTarget.subtract(gloOrigin).crossProduct(new Point3D(0, -1, 0));
double angle = Math.acos(gloTarget.subtract(gloOrigin).normalize().dotProduct(new Point3D(0, -1, 0)));
double h1 = gloTarget.subtract(gloOrigin).magnitude();
Cylinder c = new Cylinder(0.01d, h1);
c.getTransforms().addAll(new Translate(gloOrigin.getX(), gloOrigin.getY() - h1 / 2d, gloOrigin.getZ()), new Rotate(-Math.toDegrees(angle), 0d, h1 / 2d, 0d, new Point3D(dir.getX(), -dir.getY(), dir.getZ())));
c.setMaterial(new PhongMaterial(Color.GREEN));
group.getChildren().add(c);
group.getChildren().add(new Axes(0.02));
Box box = new Box(gloBounds.getWidth(), gloBounds.getHeight(), gloBounds.getDepth());
// If transparency is enabled (8u60+), comment:
box.setDrawMode(DrawMode.LINE);
box.setCullFace(CullFace.NONE);
// If transparency is enabled (8u60+), uncomment:
// box.setMaterial(new PhongMaterial(Color.web("8A2BE2",0.3)));
box.getTransforms().add(new Translate(gloBounds.getMinX() + gloBounds.getWidth() / 2d, gloBounds.getMinY() + gloBounds.getHeight() / 2d, gloBounds.getMinZ() + gloBounds.getDepth() / 2d));
group.getChildren().add(box);
/*
FIRST STEP; Check the ray crosses the bounding box of the shape at any of
its 6 faces
*/
List<Point3D> normals = Arrays.asList(new Point3D(-1, 0, 0), new Point3D(1, 0, 0), new Point3D(0, -1, 0), new Point3D(0, 1, 0), new Point3D(0, 0, -1), new Point3D(0, 0, 1));
List<Point3D> positions = Arrays.asList(new Point3D(locBounds.getMinX(), 0, 0), new Point3D(locBounds.getMaxX(), 0, 0), new Point3D(0, locBounds.getMinY(), 0), new Point3D(0, locBounds.getMaxY(), 0), new Point3D(0, 0, locBounds.getMinZ()), new Point3D(0, 0, locBounds.getMaxZ()));
AtomicInteger counter = new AtomicInteger();
IntStream.range(0, 6).forEach(i -> {
double d = -normals.get(i).dotProduct(positions.get(i));
double t = -(gloOriginInLoc.dotProduct(normals.get(i)) + d) / (gloDirection.dotProduct(normals.get(i)));
Point3D locInter = gloOriginInLoc.add(gloDirection.multiply(t));
if (locBounds.contains(locInter)) {
counter.getAndIncrement();
Point3D gloInter = spring.localToScene(locInter);
Sphere s2 = new Sphere(0.1d);
s2.getTransforms().add(new Translate(gloInter.getX(), gloInter.getY(), gloInter.getZ()));
s2.setMaterial(new PhongMaterial(Color.GOLD));
group.getChildren().add(s2);
}
});
if (counter.get() > 0) {
/*
SECOND STEP: Check if the ray crosses any of the triangles of the mesh
*/
// triangle mesh
org.fxyz.geometry.Point3D gloOriginInLoc1 = new org.fxyz.geometry.Point3D((float) gloOriginInLoc.getX(), (float) gloOriginInLoc.getY(), (float) gloOriginInLoc.getZ());
org.fxyz.geometry.Point3D gloDirection1 = new org.fxyz.geometry.Point3D((float) gloDirection.getX(), (float) gloDirection.getY(), (float) gloDirection.getZ());
System.out.println("inter: " + spring.getIntersections(gloOriginInLoc1, gloDirection1));
}
sceneRoot.getChildren().addAll(group);
//First person shooter keyboard movement
scene.setOnKeyPressed(event -> {
double change = 10.0;
if (event.isShiftDown()) {
change = 50.0;
}
KeyCode keycode = event.getCode();
if (keycode == KeyCode.W) {
camera.setTranslateZ(camera.getTranslateZ() + change);
}
if (keycode == KeyCode.S) {
camera.setTranslateZ(camera.getTranslateZ() - change);
}
if (keycode == KeyCode.A) {
camera.setTranslateX(camera.getTranslateX() - change);
}
if (keycode == KeyCode.D) {
camera.setTranslateX(camera.getTranslateX() + change);
}
});
scene.setOnMousePressed((MouseEvent me) -> {
mousePosX = me.getSceneX();
mousePosY = me.getSceneY();
mouseOldX = me.getSceneX();
mouseOldY = me.getSceneY();
});
scene.setOnMouseDragged((MouseEvent me) -> {
mouseOldX = mousePosX;
mouseOldY = mousePosY;
mousePosX = me.getSceneX();
mousePosY = me.getSceneY();
mouseDeltaX = (mousePosX - mouseOldX);
mouseDeltaY = (mousePosY - mouseOldY);
double modifier = 10.0;
double modifierFactor = 0.1;
if (me.isControlDown()) {
modifier = 0.1;
}
if (me.isShiftDown()) {
modifier = 50.0;
}
if (me.isPrimaryButtonDown()) {
// +
cameraTransform.ry.setAngle(((cameraTransform.ry.getAngle() + mouseDeltaX * modifierFactor * modifier * 2.0) % 360 + 540) % 360 - 180);
// -
cameraTransform.rx.setAngle(((cameraTransform.rx.getAngle() - mouseDeltaY * modifierFactor * modifier * 2.0) % 360 + 540) % 360 - 180);
} else if (me.isSecondaryButtonDown()) {
double z = camera.getTranslateZ();
double newZ = z + mouseDeltaX * modifierFactor * modifier;
camera.setTranslateZ(newZ);
} else if (me.isMiddleButtonDown()) {
// -
cameraTransform.t.setX(cameraTransform.t.getX() + mouseDeltaX * modifierFactor * modifier * 0.3);
// -
cameraTransform.t.setY(cameraTransform.t.getY() + mouseDeltaY * modifierFactor * modifier * 0.3);
}
});
primaryStage.setTitle("F(X)yz - Ray Picker Between Nodes");
primaryStage.setScene(scene);
primaryStage.show();
}
Aggregations