資源簡介
采用java實現基于二次誤差度量的網格簡化算法;主要使用了java的集合框架中的treeSet

代碼片段和文件信息
package?MeshSimpliefication_QuadErr;
import?java.util.ArrayList;
import?java.util.TreeSet;
import?javax.vecmath.Matrix3d;
import?javax.vecmath.Point3d;
import?javax.vecmath.SingularMatrixException;
public?class?EdgeWithCost?implements?Comparable?{
int?v1ind?v2ind;//?邊的兩個頂點的索引
double?cost;//邊的折疊損耗
Point3d?v;//邊折疊后的新的頂點的坐標
private?static?double?co?=?1;
/**
?*?@param?v1ind?邊的兩個頂點的索引
?*?@param?v2ind?邊的兩個頂點的索引
?*/
public?EdgeWithCost(int?v1ind?int?v2ind)?{
super();
this.v1ind?=?v1ind;
this.v2ind?=?v2ind;
}
/**僅用于測試
?*?@param?v1ind?邊的兩個頂點的索引
?*?@param?v2ind?邊的兩個頂點的索引
?*?@param?cost?損耗
?*/
public?EdgeWithCost(int?v1ind?int?v2ind?double?cost)?{
super();
this.v1ind?=?v1ind;
this.v2ind?=?v2ind;
this.cost?=?cost;
}
/**更改其中的一個頂點的索引
?*?@param?vOldInd?舊的頂點索引
?*?@param?vNewInd?新的頂點索引
?*/
public?void?setVertex(int?vOldInd?int?vNewInd)?{
if?(v1ind?==?vOldInd)
v1ind?=?vNewInd;
if?(v2ind?==?vOldInd)
v2ind?=?vNewInd;
}
/**
?*?@param?vInd?該邊的一個頂點索引
?*?@return?該邊的另一個頂點索引
?*/
public?int?getOtherVertex(int?vInd)?{
if?(v1ind?==?vInd)
return?v2ind;
if?(v2ind?==?vInd)
return?v1ind;
return?-1;
}
/**
?*?@param?vInd?該邊的一個頂點索引
?*?@return?該頂點索引是否為較小的一個
?*/
public?boolean?isSmallVertexIndex(int?vInd)?{
if?(v1ind?==?vInd)
return?vInd? if?(v2ind?==?vInd)
return?vInd? return?false;
}
/**計算該邊的折疊損耗即新的頂點值
?*?@param?vList?所有頂點的列表
?*/
void?cal_v_cost(ArrayList?vList)?{
VertexComplicated?vc1?=?vList.get(v1ind);
VertexComplicated?vc2?=?vList.get(v2ind);
Matrix3d?A?=?new?Matrix3d(vc1.Q);
A.add(vc2.Q);
Point3d?b1?=?VecOp.mulMatrix3d_vec3d(vc1.Q?vc1.vertex);//?因為Q為對稱矩陣
Point3d?b2?=?VecOp.mulMatrix3d_vec3d(vc2.Q?vc2.vertex);
double?c?=?VecOp.dotProduct(vc1.vertex?b1)?+?VecOp.dotProduct(vc2.vertex?b2);
b1.add(b2);//?b1?現在等于b
try?{
A.invert();//?A現在等于A的逆
}?catch?(SingularMatrixException?e)?{
// A不可逆,采用(v1+v2)/2作為新頂點
v?=?new?Point3d(new?double[]?{?(vc1.vertex.x?+?vc2.vertex.x)?/?2
(vc1.vertex.y?+?vc2.vertex.y)?/?2?(vc1.vertex.z?+?vc2.vertex.z)?/?2?});
Point3d?t?=?VecOp.mulMatrix3d_vec3d(A?v);
cost?=?VecOp.dotProduct(v?t)?+?c?-?2?*?VecOp.dotProduct(b1?v)?+?co
*?(vc1.errorPairContraction?+?vc2.errorPairContraction);
System.err.println(“A?不可逆“);
return;
}
v?=?VecOp.mulMatrix3d_vec3d(A?b1);?//?即A的逆乘以b
cost?=?c?-?VecOp.dotProduct(b1?v)?+?co
*?(vc1.errorPairContraction?+?vc2.errorPairContraction);//?因為Q為對稱矩陣
//?System.out.print(“(“+v1+“?“+v2+“);“);
//?System.out.print(“cost=“+cost);
//?System.out.println(“???contracted?point=“+v);
}
/**
?*?@return?較小的頂點索引
?*/
public?int?getSmallVertex()?{
return?v1ind? }
/**
?*?@return?較大的頂點索引
?*/
public?int?getBigVertex()?{
return?v1ind?>?v2ind???v1ind?:?v2ind;
}
/*?將損耗作為第一鍵值,將另外
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????22139??2009-12-26?14:14??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\MeshSimplifier_可執行文件\bunny_icon.jpg
?????文件??????29718??2009-12-26?17:12??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\MeshSimplifier_可執行文件\MeshSimplifier_version1.jar
?????文件??????36434??2010-01-01?13:06??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\MeshSimplifier_可執行文件\MeshSimplifier_version2.jar
?????文件?????318956??2010-01-01?13:06??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\MeshSimplifier_可執行文件\MeshSimplify_lib\vecmath.jar
?????文件?????122812??2009-07-12?10:51??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\MeshSimplifier_可執行文件\models\dinosaur.2k.obj
?????文件?????????43??2009-12-26?21:57??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\MeshSimplifier_可執行文件\readme.txt
?????文件?????????55??2010-01-01?12:35??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\MeshSimplifier_可執行文件\run.bat
?????文件?????????63??2009-12-26?21:55??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\MeshSimplifier_可執行文件\run.vbs
?????文件?????255210??2010-01-01?13:10??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\MeshSimplifier_可執行文件\程序使用說明.docx
?????文件?????216218??2010-01-24?12:50??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\基于二次誤差度量的網格簡化.pdf
?????文件????????631??2009-12-26?17:03??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\源程序_MeshSimplification_QuadErr\.classpath
?????文件????????402??2009-12-12?22:48??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\源程序_MeshSimplification_QuadErr\.project
?????文件????????629??2009-12-12?22:48??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\源程序_MeshSimplification_QuadErr\.settings\org.eclipse.jdt.core.prefs
?????文件??????22139??2009-12-26?14:14??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\源程序_MeshSimplification_QuadErr\bunny_icon.jpg
?????文件?????318956??2009-12-26?17:12??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\源程序_MeshSimplification_QuadErr\MeshSimplify_lib\vecmath.jar
?????文件???????4665??2009-12-26?15:06??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\EdgeWithCost.java
?????文件????????669??2009-12-28?10:09??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\Exceptions.java
?????文件???????1434??2009-12-28?12:54??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\FaceTriangle.java
?????文件???????2493??2009-12-28?11:53??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\FileChooser_obj.java
?????文件???????6457??2009-12-28?12:46??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\MeshSimplifier_UI_Entry.java
?????文件???????3134??2009-12-26?17:04??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\ob
?????文件???????9731??2009-12-26?16:50??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\ObjFile.java
?????文件??????19498??2010-01-01?12:39??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\ObjFileSimplified_v2.java
?????文件??????18611??2009-12-28?12:51??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\ObjFileSimplified_version1.java
?????文件???????1479??2009-12-26?15:05??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\VecOp.java
?????文件???????2719??2009-12-28?12:46??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\VertexComplicated.java
?????目錄??????????0??2010-01-24?12:31??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr
?????目錄??????????0??2010-01-24?12:31??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\MeshSimplifier_可執行文件\MeshSimplify_lib
?????目錄??????????0??2010-01-24?16:10??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\MeshSimplifier_可執行文件\models
?????目錄??????????0??2010-01-24?12:31??復件?2009310399梁超_基于二次誤差度量的網格簡化_最終報告及程序\源程序_MeshSimplification_QuadErr\.settings
............此處省略8個文件信息
- 上一篇:android 串口鏈接工具源碼
- 下一篇:java-json.jar
評論
共有 條評論