public static LinePoints2d[] polygonalChaniToLineArray(Point2d... lines) { LinePoints2d[] linesArray = new LinePoints2d[lines.length - 1]; for (int i = 0; i < lines.length - 1; i++) { Point2d p1 = lines[i]; Point2d p2 = lines[i + 1]; linesArray[i] = new LinePoints2d(p1, p2); } return linesArray; }
private LinePoints2d[] createLines(List<Point2d> polygon, Point2d middlePoint) { int size = polygon.size(); LinePoints2d[] ret = new LinePoints2d[size]; for (int i = 0; i < size; i++) { Point2d p1 = polygon.get(i); LinePoints2d l = new LinePoints2d(middlePoint, p1); ret[i] = l; } return ret; }
/** * @param crossSection * @return */ public static LinePoints2d[] createLines(List<CrossSectionElement> crossSection) { LinePoints2d[] lines = new LinePoints2d[crossSection.size()]; for (int i = 0; i < crossSection.size(); i++) { Point2d p = crossSection.get(i).p; LinePoints2d l = new LinePoints2d(new Point2d(0, p.x), new Point2d(1, p.x)); lines[i] = l; } return lines; }
Point2d leftBottom = new Point2d(0, 0); final LinePoints2d tLine = new LinePoints2d(leftMiddleTopPoint, rightMiddleTopPoint); final LinePoints2d mLine = new LinePoints2d(leftCenterPoint, rightCenterPoint); final LinePoints2d bLine = new LinePoints2d(leftMiddleBottomPoint, rightMiddleBottomPoint); final LinePoints2d lLine = new LinePoints2d(leftMiddleBottomPoint, leftMiddleTopPoint); final LinePoints2d rLine = new LinePoints2d(rightMiddleTopPoint, rightMiddleBottomPoint); final LinePoints2d lbLine = new LinePoints2d(leftBottom, leftCenterPoint); final LinePoints2d ltLine = new LinePoints2d(leftCenterPoint, leftTop); final LinePoints2d rtLine = new LinePoints2d(rightTop, rightCenterPoint); final LinePoints2d rbLine = new LinePoints2d(rightCenterPoint, rightBottom);
private static MultiPolygonList2d applyWindowsBegin(MultiPolygonList2d mPoly, BuildingNodeElement be, Point2d segmentStart, Vector2d segmentDirection, double nodeDisplacement, CatchFaceFactory pCatchFaceFactory, BuildingElementsTextureManager pTextureMenager, boolean counterClockwise) { if (be instanceof SquareHoleElement) { SquareHoleElement she = (SquareHoleElement) be; Point2d mbp = new Point2d(0, she.getMinHeight()); Point2d rbp = new Point2d(she.getWidth() / 2.0, she.getMinHeight()); Point2d rtp = new Point2d(she.getWidth() / 2.0, she.getMaxHeight()); Point2d mtp = new Point2d(0, she.getMaxHeight()); mPoly = PolygonSplitHelper.unionOfLeftSideOfMultipleCuts(mPoly, new LinePoints2d(rtp, rbp), new LinePoints2d(mtp, rtp), new LinePoints2d(rbp, mbp)); TextureData td = findWindowTextureData(be, pTextureMenager); MeshFactory mesh = pCatchFaceFactory.createOrGetMeshFactory(td.getTex0()); FaceFactory face = mesh.addFace(FaceType.QUADS); Vector3d n = new Vector3d(-segmentDirection.y, 0, -segmentDirection.x); // if (counterClockwise) { n.negate(); // } int iN = mesh.addNormal(n); int imbTc = mesh.addTextCoord(new TextCoord(0.5, 0)); int imtTc = mesh.addTextCoord(new TextCoord(0.5, 1)); int irbTc = mesh.addTextCoord(new TextCoord(1, 0)); int irtTc = mesh.addTextCoord(new TextCoord(1, 1)); face.addVert(segmentPointToVertex3dIndex(mbp, segmentStart, segmentDirection, mesh), imbTc, iN); face.addVert(segmentPointToVertex3dIndex(rbp, segmentStart, segmentDirection, mesh), irbTc, iN); face.addVert(segmentPointToVertex3dIndex(rtp, segmentStart, segmentDirection, mesh), irtTc, iN); face.addVert(segmentPointToVertex3dIndex(mtp, segmentStart, segmentDirection, mesh), imtTc, iN); } return mPoly; }
private static MultiPolygonList2d applyWindowsEnd(MultiPolygonList2d mPoly, BuildingNodeElement be, Point2d segmentStart, Vector2d segmentDirection, double nodeDisplacement, CatchFaceFactory catchFaceFactory, BuildingElementsTextureManager textureMenager, boolean counterClockwise) { if (be instanceof SquareHoleElement) { SquareHoleElement she = (SquareHoleElement) be; Point2d lbp = new Point2d(nodeDisplacement - she.getWidth() / 2.0, she.getMinHeight()); Point2d mbp = new Point2d(nodeDisplacement, she.getMinHeight()); Point2d mtp = new Point2d(nodeDisplacement, she.getMaxHeight()); Point2d ltp = new Point2d(nodeDisplacement - she.getWidth() / 2.0, she.getMaxHeight()); mPoly = PolygonSplitHelper.unionOfLeftSideOfMultipleCuts(mPoly, new LinePoints2d(lbp, ltp), new LinePoints2d(ltp, mtp), new LinePoints2d(mbp, lbp)); TextureData td = findWindowTextureData(be, textureMenager); MeshFactory mesh = catchFaceFactory.createOrGetMeshFactory(td.getTex0()); FaceFactory face = mesh.addFace(FaceType.QUADS); Vector3d n = new Vector3d(-segmentDirection.y, 0, -segmentDirection.x); n.negate(); int iN = mesh.addNormal(n); int imbTc = mesh.addTextCoord(new TextCoord(0.5, 0)); int imtTc = mesh.addTextCoord(new TextCoord(0.5, 1)); int ilbTc = mesh.addTextCoord(new TextCoord(0, 0)); int iltTc = mesh.addTextCoord(new TextCoord(0, 1)); face.addVert(segmentPointToVertex3dIndex(lbp, segmentStart, segmentDirection, mesh), ilbTc, iN); face.addVert(segmentPointToVertex3dIndex(mbp, segmentStart, segmentDirection, mesh), imbTc, iN); face.addVert(segmentPointToVertex3dIndex(mtp, segmentStart, segmentDirection, mesh), imtTc, iN); face.addVert(segmentPointToVertex3dIndex(ltp, segmentStart, segmentDirection, mesh), iltTc, iN); } return mPoly; }
final LinePoints2d middleLine = new LinePoints2d(new Point2d(0, l1), new Point2d(recWidth, l1)); Point2d rightBottom = new Point2d(recWidth, leftBottomY); final LinePoints2d leftBottomLine = new LinePoints2d(leftBottom, leftCenter); final LinePoints2d leftTopLine = new LinePoints2d(leftCenter, leftTop); final LinePoints2d rightBottomLine = new LinePoints2d(rightBottom, rightCenter); final LinePoints2d rightTopLine = new LinePoints2d(rightCenter, rightTop);
Point2d prt = new Point2d(recWidth, recHeight); final LinePoints2d ltLine = new LinePoints2d(plt, middlePoint); final LinePoints2d lbLine = new LinePoints2d(plb, middlePoint); final LinePoints2d rtLine = new LinePoints2d(middlePoint, prt); final LinePoints2d rbLine = new LinePoints2d(middlePoint, prb);
LinePoints2d bLine = new LinePoints2d(new Point2d(0, l1), new Point2d(pRecWidth, l1)); LinePoints2d rLine = new LinePoints2d(new Point2d(pRecWidth - l2, 0), new Point2d(pRecWidth - l2, pRecHeight)); LinePoints2d tLine = new LinePoints2d(new Point2d(pRecWidth, pRecHeight - l3), new Point2d(0, pRecHeight - l3)); LinePoints2d tLine = new LinePoints2d(new Point2d(l4, pRecHeight), new Point2d(l4, 0));
final LinePoints2d mLine = new LinePoints2d(leftMiddlePoint, rightMiddlePoint);
Point2d leftBottomPoint = new Point2d(0, l2); final LinePoints2d topLine = new LinePoints2d(leftTopPoint, rightTopPoint); final LinePoints2d middleLine = new LinePoints2d(leftMiddlePoint, rightMiddlePoint); final LinePoints2d bottomLine = new LinePoints2d(leftBottomPoint, rightBottomPoint);
Point2d leftBottomPoint = new Point2d(0, 0); final LinePoints2d lLine = new LinePoints2d(rightBottomPoint, leftTopPoint);
Point2d rightMiddlePoint = new Point2d(recWidth, l1); final LinePoints2d middleRoofLine = new LinePoints2d(leftMiddlePoint, rightMiddlePoint);
final LinePoints2d lLine = new LinePoints2d(leftBottomPoint, leftTopPoint); final LinePoints2d rLine = new LinePoints2d(rightTopPoint, rightBottomPoint);
Point2d rightMiddlePoint = new Point2d(recWidth, l1); final LinePoints2d middleRoofLine = new LinePoints2d(leftMiddlePoint, rightMiddlePoint);