32 package eu.mihosoft.vrl.v3d.ext.openjfx.shape3d.symbolic;
34 import eu.mihosoft.vrl.v3d.ext.openjfx.shape3d.SubdivisionMesh;
35 import java.util.Arrays;
54 private final int[][]
inds;
73 super(
new float[NUM_COMPONENTS_PER_POINT *
numPoints]);
75 this.controlPoints = controlPointArray.
data;
77 this.controlFactors =
new float[
numPoints][];
111 public int addEdgePoint(
int[] facePoints,
int fromPoint,
int toPoint,
boolean isBoundary) {
119 int n = facePoints.length + 2;
143 public int addControlPoint(
int[] facePoints,
int[] edgePoints,
int[] fromEdgePoints,
int[] toEdgePoints,
boolean[] isEdgeBoundary,
int origPoint,
boolean isBoundary,
boolean hasInternalEdge) {
149 int numBoundaryEdges = 0;
150 for (
int i = 0; i < edgePoints.length; i++) {
151 if (isEdgeBoundary[i]) {
157 int boundaryEdgeInd = 0;
158 for (
int i = 0; i < edgePoints.length; i++) {
159 if (isEdgeBoundary[i]) {
173 int n = facePoints.length;
179 for (
int i = 0; i < edgePoints.length; i++) {
210 for (
int j = 0; j <
inds[i].length; j++) {
214 y +=
data[ci + 1] * f;
215 z +=
data[ci + 2] * f;
int addFacePoint(int[] vertices)
final float[] controlPoints
int addEdgePoint(int[] facePoints, int fromPoint, int toPoint, boolean isBoundary)
int addControlPoint(int[] facePoints, int[] edgePoints, int[] fromEdgePoints, int[] toEdgePoints, boolean[] isEdgeBoundary, int origPoint, boolean isBoundary, boolean hasInternalEdge)
final int[][] controlInds
final float[][] controlFactors
SubdividedPointArray(SymbolicPointArray controlPointArray, int numPoints, SubdivisionMesh.BoundaryMode boundaryMode)
final SubdivisionMesh.BoundaryMode boundaryMode