Skip to content

Commit

Permalink
Merge pull request Gaia3D#583 from Gaia3D/feature/nativeProjects_16
Browse files Browse the repository at this point in the history
nativeProjects
  • Loading branch information
sdson authored Apr 16, 2018
2 parents 5d08268 + e46b72f commit acf4d2f
Show file tree
Hide file tree
Showing 14 changed files with 446 additions and 78 deletions.
3 changes: 2 additions & 1 deletion sample/cesium.html
Original file line number Diff line number Diff line change
Expand Up @@ -1009,6 +1009,8 @@ <h3>View Mode</h3>
<script type="text/javascript" src="../src/mago3d/geometry/AxisXYZ.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/BoundingRectangle.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/Circle.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/HalfEdge.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/HalfEdgesList.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/IndexData.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/IndexRange.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/Line.js"></script>
Expand All @@ -1022,7 +1024,6 @@ <h3>View Mode</h3>
<script type="text/javascript" src="../src/mago3d/geometry/PolyLine.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/Profile.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/ProfilesList.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/HalfEdge.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/Face.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/Mesh.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/Rectangle.js"></script>
Expand Down
3 changes: 2 additions & 1 deletion sample/worldwind.html
Original file line number Diff line number Diff line change
Expand Up @@ -1013,6 +1013,8 @@ <h3>View Mode</h3>
<script type="text/javascript" src="../src/mago3d/geometry/Circle.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/IndexData.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/IndexRange.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/HalfEdge.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/HalfEdgesList.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/Line.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/Line2D.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/MagoNativeProject.js"></script>
Expand All @@ -1024,7 +1026,6 @@ <h3>View Mode</h3>
<script type="text/javascript" src="../src/mago3d/geometry/PolyLine.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/Profile.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/ProfilesList.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/HalfEdge.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/Face.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/Mesh.js"></script>
<script type="text/javascript" src="../src/mago3d/geometry/Rectangle.js"></script>
Expand Down
2 changes: 2 additions & 0 deletions src/mago3d/core/MagoManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -1469,6 +1469,8 @@ MagoManager.prototype.renderMagoGeometries = function(ssao_idx)

if(this.nativeProjectsArray === undefined)
{
var viewer = this.getViewer();

this.nativeProjectsArray = [];
var natProject = new MagoNativeProject();
this.nativeProjectsArray.push(natProject);
Expand Down
4 changes: 4 additions & 0 deletions src/mago3d/core/ManagerFactory.js
Original file line number Diff line number Diff line change
Expand Up @@ -728,6 +728,10 @@ var ManagerFactory = function(viewer, containerId, serverPolicy, projectIdArray,
// }
// },
// magoManager 상태
getViewer: function()
{
return viewer;
},
getMagoManagerState: function()
{
return magoManagerState;
Expand Down
113 changes: 112 additions & 1 deletion src/mago3d/geometry/Face.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@ var Face = function()
}

this.vertexArray;
this.halfEdge;
this.hEdge;
this.planeNormal;
this.surfaceOwner;
};

Face.prototype.getVerticesCount = function()
Expand Down Expand Up @@ -103,6 +104,116 @@ Face.prototype.getTrianglesConvex = function(resultTrianglesArray)
return resultTrianglesArray;
};

Face.prototype.setTwinHalfEdge = function(hedge)
{
var twined = false;
var finished = false;
var startHEdge = this.hEdge;
var currHEdge = this.hEdge;
while(!finished)
{
if(currHEdge.setTwin(hedge))
return true;

currHEdge = currHEdge.next;
if(currHEdge === startHEdge)
finished = true;
}
return twined;
};

Face.prototype.getFrontierHalfEdges = function(resultHedgesArray)
{
var hedgesArray = this.getHalfEdgesLoop(undefined);
if(hedgesArray === undefined)
return resultHedgesArray;

if(resultHedgesArray === undefined)
resultHedgesArray = [];

var hedgesCount = hedgesArray.length;
var hedge;
for(var i=0; i<hedgesCount; i++)
{
hedge = hedgesArray[i];
if(hedge.isFrontier())
{
resultHedgesArray.push(hedge);
}
}
return resultHedgesArray;
};

Face.prototype.getHalfEdgesLoop = function(resultHedgesArray)
{
if(this.hEdge === undefined)
return resultHedgesArray;

resultHedgesArray = HalfEdge.getHalfEdgesLoop(this.hEdge, resultHedgesArray);
return resultHedgesArray;
};

Face.prototype.setTwinFace = function(face)
{
if(face === undefined)
return false;

if(this.hEdge === undefined || face.hEdge === undefined)
return false;

var hedgesArray = face.getHalfEdgesLoop(undefined);
var hedgesCount = hedgesArray.length;
var hedge;
var twined = false;
for(var i=0; i<hedgesCount; i++)
{
hedge = hedgesArray[i];
if(this.setTwinHalfEdge(hedge))
twined = true;
}

return twined;
};

Face.prototype.createHalfEdges = function(resultHalfEdgesArray)
{
if(this.vertexArray === undefined || this.vertexArray.length === 0)
return resultHalfEdgesArray;

if(resultHalfEdgesArray === undefined)
resultHalfEdgesArray = [];

var vertex;
var hedge;
var verticesCount = this.getVerticesCount();

// 1rst, create the half edges.***
for(var i=0; i<verticesCount; i++)
{
vertex = this.getVertex(i);
hedge = new HalfEdge();
hedge.setStartVertex(vertex);
hedge.setFace(this);
resultHalfEdgesArray.push(hedge);
}

// now, for all half edges, set the nextHalfEdge.***
var nextHedge;
var nextIdx;
for(var i=0; i<verticesCount; i++)
{
hedge = resultHalfEdgesArray[i];
nextIdx = VertexList.getNextIdx(i, this.vertexArray);
nextHedge = resultHalfEdgesArray[nextIdx];
hedge.setNext(nextHedge);
}

// set a hedge for this face.***
this.hEdge = resultHalfEdgesArray[0];

return resultHalfEdgesArray;
};




Expand Down
131 changes: 127 additions & 4 deletions src/mago3d/geometry/HalfEdge.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,131 @@ var HalfEdge = function()
throw new Error(Messages.CONSTRUCT_ERROR);
}

this.origenVertex;
this.nextEdge;
this.twinEdge;
this.startVertex;
this.next;
this.twin;
this.face;
};
};

HalfEdge.prototype.setStartVertex = function(vertex)
{
this.startVertex = vertex;
};

HalfEdge.prototype.setNext = function(hedge)
{
this.next = hedge;
};

HalfEdge.prototype.setTwin = function(hedge)
{
var isTwinable = HalfEdge.areTwinables(hedge, this);
if(isTwinable)
{
this.twin = hedge;
hedge.twin = this;
}
return isTwinable;
};

HalfEdge.prototype.setFace = function(face)
{
this.face = face;
};

HalfEdge.prototype.getEndVertex = function()
{
if(this.next === undefined)
return undefined;

return this.next.startVertex;
};

HalfEdge.prototype.isFrontier = function()
{
if(this.twin === undefined || this.twin === null)
return true;

return false;
};

HalfEdge.areTwinables = function(hedgeA, hedgeB)
{
// check if "hedgeA" is twinable with "hedgeB".***
if(hedgeA.startVertex === hedgeB.getEndVertex())
{
if(hedgeA.getEndVertex() === hedgeB.startVertex)
return true;
}

return false;
};

HalfEdge.getHalfEdgesLoop = function(hedge, resultHedgesArray)
{
if(hedge === undefined)
return resultHedgesArray;

if(resultHedgesArray === undefined)
resultHedgesArray = [];

resultHedgesArray.length = 0; // init the array.***

var startHedge = hedge;
var currHedge = hedge;
var finished = false;
while(!finished)
{
resultHedgesArray.push(currHedge);
currHedge = currHedge.next;
if(currHedge === startHedge || currHedge === undefined)
finished = true;
}

return resultHedgesArray;
};













































37 changes: 37 additions & 0 deletions src/mago3d/geometry/HalfEdgesList.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@

'use strict';

/**
* 어떤 일을 하고 있습니까?
* @class HalfEdgesList
*/
var HalfEdgesList = function()
{
if (!(this instanceof HalfEdgesList))
{
throw new Error(Messages.CONSTRUCT_ERROR);
}

this.hEdgesArray;
};

HalfEdgesList.prototype.newHalfEdge = function()
{
if(this.hEdgesArray === undefined)
this.hEdgesArray = [];

var hedge = new HalfEdge();
this.hEdgesArray.push(hedge);
return hedge;
};

HalfEdgesList.prototype.addHalfEdgesArray = function(hEdgesArray)
{
if(hEdgesArray === undefined)
return;

if(this.hEdgesArray === undefined)
this.hEdgesArray = [];

Array.prototype.push.apply(this.hEdgesArray, hEdgesArray);
};
Loading

0 comments on commit acf4d2f

Please sign in to comment.