Class HalfEdgeSurface

java.lang.Object
com.gaia3d.basic.halfedge.HalfEdgeSurface
All Implemented Interfaces:
Serializable

public class HalfEdgeSurface extends Object implements Serializable
See Also:
  • Constructor Details

    • HalfEdgeSurface

      public HalfEdgeSurface()
  • Method Details

    • setTwins

      public void setTwins()
    • setTwins_original

      public void setTwins_original()
    • calculatePlaneNormals

      public void calculatePlaneNormals()
    • calculateNormals

      public void calculateNormals()
    • deleteObjects

      public void deleteObjects()
    • getMapHalfEdgeToDirection

      public Map<HalfEdge,org.joml.Vector3d> getMapHalfEdgeToDirection(Map<HalfEdge,org.joml.Vector3d> resultMapHalfEdgeToDirection)
    • getMapPositionToVertices

      public Map<org.joml.Vector3d,List<HalfEdgeVertex>> getMapPositionToVertices(Map<org.joml.Vector3d,List<HalfEdgeVertex>> resultMapPositionToVertices)
    • getMapVertexToSamePosVertices

      public Map<HalfEdgeVertex,List<HalfEdgeVertex>> getMapVertexToSamePosVertices(Map<HalfEdgeVertex,List<HalfEdgeVertex>> resultMapVertexToSamePosVertices)
    • getMapFaceToHalfEdges

      public Map<HalfEdgeFace,List<HalfEdge>> getMapFaceToHalfEdges(Map<HalfEdgeFace,List<HalfEdge>> resultMapFaceToHalfEdges)
    • getHalfEdgesSortedByLength

      public List<HalfEdge> getHalfEdgesSortedByLength(List<HalfEdge> resultHalfEdgesSortedByLength)
    • decimate

      public void decimate(DecimateParameters decimateParameters)
    • deleteDegeneratedFaces

      public int deleteDegeneratedFaces()
    • removeDeletedObjects

      public void removeDeletedObjects()
    • setObjectIdsInList

      public void setObjectIdsInList()
    • setItselfAsOutingHalfEdgeToTheStartVertex

      public void setItselfAsOutingHalfEdgeToTheStartVertex()
    • getMapVertexAllFaces

      public Map<HalfEdgeVertex,List<HalfEdgeFace>> getMapVertexAllFaces(Map<HalfEdgeVertex,List<HalfEdgeFace>> resultVertexAllFacesMap)
    • getMapVertexAllOutingEdges

      public Map<HalfEdgeVertex,List<HalfEdge>> getMapVertexAllOutingEdges(Map<HalfEdgeVertex,List<HalfEdge>> resultVertexAllOutingEdgesMap)
    • checkSandClockFaces

      public void checkSandClockFaces()
    • collapseFrontierHalfEdge

      public boolean collapseFrontierHalfEdge(HalfEdge halfEdge, int iteration, Map<HalfEdgeVertex,List<HalfEdge>> vertexAllOutingEdgesMap, Map<HalfEdge,org.joml.Vector3d> mapHalfEdgeToInitialDirection, Map<HalfEdgeVertex,List<HalfEdgeVertex>> mapVertexToSamePosVertices, double maxDiffAngDeg, double frontierMaxDiffAngDeg, double hedgeMinLength, double maxAspectRatio, double smallHedgeSize, boolean testDebug)
    • collapseHalfEdge

      public boolean collapseHalfEdge(HalfEdge halfEdge, int iteration, Map<HalfEdgeVertex,List<HalfEdge>> vertexAllOutingEdgesMap, Map<HalfEdgeVertex,List<HalfEdgeVertex>> mapVertexToSamePosVertices, double maxDiffAngDeg, double frontierMaxDiffAngDeg, double hedgeMinLength, double maxAspectRatio, double smallHedgeSize, boolean testDebug)
    • collapseFace

      public boolean collapseFace(HalfEdgeFace face)
    • decideIfCollapseCheckingFaces

      public boolean decideIfCollapseCheckingFaces(HalfEdge halfEdge, Map<HalfEdgeVertex,List<HalfEdge>> vertexAllOutingEdgesMap, Map<HalfEdgeVertex,List<HalfEdgeVertex>> mapVertexToSamePosVertices, double maxDiffAngDeg, double maxAspectRatio, double smallHedgeSize)
    • setTwinsBetweenHalfEdges

      public void setTwinsBetweenHalfEdges(List<HalfEdge> halfEdges)
    • transformPoints

      public void transformPoints(org.joml.Matrix4d finalMatrix)
    • calculateBoundingBox

      public GaiaBoundingBox calculateBoundingBox(GaiaBoundingBox resultBBox)
    • getBoundingBox

      public GaiaBoundingBox getBoundingBox()
    • cutByPlane

      public void cutByPlane(PlaneType planeType, org.joml.Vector3d planePosition, double error)
    • checkHalfEdgesFaces

      public boolean checkHalfEdgesFaces()
    • checkTwins

      public boolean checkTwins()
    • classifyFacesIdByPlane

      public void classifyFacesIdByPlane(PlaneType planeType, org.joml.Vector3d planePosition)
    • deleteFacesWithClassifyId

      public void deleteFacesWithClassifyId(int classifyId)
    • deleteFacesWithNoClassifyId

      public void deleteFacesWithNoClassifyId(int classifyId)
    • deleteFacesWithClassifyId_old

      public void deleteFacesWithClassifyId_old(int classifyId)
    • writeFile

      public void writeFile(ObjectOutputStream outputStream)
    • readFile

      public void readFile(ObjectInputStream inputStream)
    • existNoUsedVertices

      public boolean existNoUsedVertices(List<HalfEdgeVertex> noUsedVertices)
    • cloneByClassifyId

      public HalfEdgeSurface cloneByClassifyId(int classifyId)
    • clone

      public HalfEdgeSurface clone()
    • scissorTextures

      public void scissorTextures(GaiaMaterial material)
    • scissorTexturesByMotherScene

      public void scissorTexturesByMotherScene(GaiaMaterial material, GaiaMaterial motherMaterial)
    • getWeldedFacesWithFace

      public boolean getWeldedFacesWithFace(HalfEdgeFace face, List<HalfEdgeFace> resultWeldedFaces, Map<HalfEdgeFace,HalfEdgeFace> mapVisitedFaces)
    • getWeldedFacesGroups

      public List<List<HalfEdgeFace>> getWeldedFacesGroups(List<List<HalfEdgeFace>> resultWeldedFacesGroups)
    • getWeldedFacesGroupsRecursive

      public List<List<HalfEdgeFace>> getWeldedFacesGroupsRecursive(List<List<HalfEdgeFace>> resultWeldedFacesGroups)
    • getTrianglesCount

      public int getTrianglesCount()
    • setBoxTexCoordsXY

      public void setBoxTexCoordsXY(GaiaBoundingBox box)
    • changeOutingHEdgesOfVertexIfHEdgeIsDeleted

      public void changeOutingHEdgesOfVertexIfHEdgeIsDeleted()
    • weldVertices

      public void weldVertices(double error, boolean checkTexCoord, boolean checkNormal, boolean checkColor, boolean checkBatchId)
    • translate

      public void translate(org.joml.Vector3d translation)
    • getIndices

      public int[] getIndices()
    • getDirty

      public boolean getDirty()
    • joinSurface

      public void joinSurface(HalfEdgeSurface newSurface)
    • getMapClassifyIdToCameraDirectionTypeToFaces

      public Map<Integer,Map<CameraDirectionType,List<HalfEdgeFace>>> getMapClassifyIdToCameraDirectionTypeToFaces(Map<Integer,Map<CameraDirectionType,List<HalfEdgeFace>>> mapFaceGroupByClassifyIdAndObliqueCamDirType)
    • splitFacesByBestObliqueCameraDirectionToProject

      public void splitFacesByBestObliqueCameraDirectionToProject()
    • updateFacesList

      public void updateFacesList()
    • updateVerticesList

      public void updateVerticesList()
    • getWestEastSouthNorthVertices

      public void getWestEastSouthNorthVertices(GaiaBoundingBox bbox, List<HalfEdgeVertex> westVertices, List<HalfEdgeVertex> eastVertices, List<HalfEdgeVertex> southVertices, List<HalfEdgeVertex> northVertices, double error)
    • calculateArea

      public double calculateArea()
    • getTexCoordinateBoundingRectangle

      public GaiaRectangle getTexCoordinateBoundingRectangle(GaiaRectangle resultRectangle)
    • getFacesCount

      public int getFacesCount()
    • getIntersectedFacesByPlane

      public void getIntersectedFacesByPlane(PlaneType planeType, org.joml.Vector3d planePosition, List<HalfEdgeFace> resultFaces, double error)