-
大小: 797KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-06-08
- 語言: Java
- 標(biāo)簽: java??treeset??網(wǎng)格簡化??二次誤差??
資源簡介
采用java實(shí)現(xiàn)基于二次誤差度量的網(wǎng)格簡化算法;主要使用了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;//?邊的兩個(gè)頂點(diǎn)的索引
double?cost;//邊的折疊損耗
Point3d?v;//邊折疊后的新的頂點(diǎn)的坐標(biāo)
private?static?double?co?=?1;
/**
?*?@param?v1ind?邊的兩個(gè)頂點(diǎn)的索引
?*?@param?v2ind?邊的兩個(gè)頂點(diǎn)的索引
?*/
public?EdgeWithCost(int?v1ind?int?v2ind)?{
super();
this.v1ind?=?v1ind;
this.v2ind?=?v2ind;
}
/**僅用于測(cè)試
?*?@param?v1ind?邊的兩個(gè)頂點(diǎn)的索引
?*?@param?v2ind?邊的兩個(gè)頂點(diǎn)的索引
?*?@param?cost?損耗
?*/
public?EdgeWithCost(int?v1ind?int?v2ind?double?cost)?{
super();
this.v1ind?=?v1ind;
this.v2ind?=?v2ind;
this.cost?=?cost;
}
/**更改其中的一個(gè)頂點(diǎn)的索引
?*?@param?vOldInd?舊的頂點(diǎn)索引
?*?@param?vNewInd?新的頂點(diǎn)索引
?*/
public?void?setVertex(int?vOldInd?int?vNewInd)?{
if?(v1ind?==?vOldInd)
v1ind?=?vNewInd;
if?(v2ind?==?vOldInd)
v2ind?=?vNewInd;
}
/**
?*?@param?vInd?該邊的一個(gè)頂點(diǎn)索引
?*?@return?該邊的另一個(gè)頂點(diǎn)索引
?*/
public?int?getOtherVertex(int?vInd)?{
if?(v1ind?==?vInd)
return?v2ind;
if?(v2ind?==?vInd)
return?v1ind;
return?-1;
}
/**
?*?@param?vInd?該邊的一個(gè)頂點(diǎn)索引
?*?@return?該頂點(diǎn)索引是否為較小的一個(gè)
?*/
public?boolean?isSmallVertexIndex(int?vInd)?{
if?(v1ind?==?vInd)
return?vInd? if?(v2ind?==?vInd)
return?vInd? return?false;
}
/**計(jì)算該邊的折疊損耗即新的頂點(diǎn)值
?*?@param?vList?所有頂點(diǎn)的列表
?*/
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);//?因?yàn)镼為對(duì)稱矩陣
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?現(xiàn)在等于b
try?{
A.invert();//?A現(xiàn)在等于A的逆
}?catch?(SingularMatrixException?e)?{
// A不可逆,采用(v1+v2)/2作為新頂點(diǎn)
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);//?因?yàn)镼為對(duì)稱矩陣
//?System.out.print(“(“+v1+“?“+v2+“);“);
//?System.out.print(“cost=“+cost);
//?System.out.println(“???contracted?point=“+v);
}
/**
?*?@return?較小的頂點(diǎn)索引
?*/
public?int?getSmallVertex()?{
return?v1ind? }
/**
?*?@return?較大的頂點(diǎn)索引
?*/
public?int?getBigVertex()?{
return?v1ind?>?v2ind???v1ind?:?v2ind;
}
/*?將損耗作為第一鍵值,將另外
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????22139??2009-12-26?14:14??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\MeshSimplifier_可執(zhí)行文件\bunny_icon.jpg
?????文件??????29718??2009-12-26?17:12??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\MeshSimplifier_可執(zhí)行文件\MeshSimplifier_version1.jar
?????文件??????36434??2010-01-01?13:06??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\MeshSimplifier_可執(zhí)行文件\MeshSimplifier_version2.jar
?????文件?????318956??2010-01-01?13:06??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\MeshSimplifier_可執(zhí)行文件\MeshSimplify_lib\vecmath.jar
?????文件?????122812??2009-07-12?10:51??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\MeshSimplifier_可執(zhí)行文件\models\dinosaur.2k.obj
?????文件?????????43??2009-12-26?21:57??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\MeshSimplifier_可執(zhí)行文件\readme.txt
?????文件?????????55??2010-01-01?12:35??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\MeshSimplifier_可執(zhí)行文件\run.bat
?????文件?????????63??2009-12-26?21:55??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\MeshSimplifier_可執(zhí)行文件\run.vbs
?????文件?????255210??2010-01-01?13:10??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\MeshSimplifier_可執(zhí)行文件\程序使用說明.docx
?????文件?????216218??2010-01-24?12:50??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\基于二次誤差度量的網(wǎng)格簡化.pdf
?????文件????????631??2009-12-26?17:03??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\源程序_MeshSimplification_QuadErr\.classpath
?????文件????????402??2009-12-12?22:48??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\源程序_MeshSimplification_QuadErr\.project
?????文件????????629??2009-12-12?22:48??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\源程序_MeshSimplification_QuadErr\.settings\org.eclipse.jdt.core.prefs
?????文件??????22139??2009-12-26?14:14??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\源程序_MeshSimplification_QuadErr\bunny_icon.jpg
?????文件?????318956??2009-12-26?17:12??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\源程序_MeshSimplification_QuadErr\MeshSimplify_lib\vecmath.jar
?????文件???????4665??2009-12-26?15:06??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\EdgeWithCost.java
?????文件????????669??2009-12-28?10:09??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\Exceptions.java
?????文件???????1434??2009-12-28?12:54??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\FaceTriangle.java
?????文件???????2493??2009-12-28?11:53??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\FileChooser_obj.java
?????文件???????6457??2009-12-28?12:46??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\MeshSimplifier_UI_Entry.java
?????文件???????3134??2009-12-26?17:04??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\ob
?????文件???????9731??2009-12-26?16:50??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\ObjFile.java
?????文件??????19498??2010-01-01?12:39??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\ObjFileSimplified_v2.java
?????文件??????18611??2009-12-28?12:51??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\ObjFileSimplified_version1.java
?????文件???????1479??2009-12-26?15:05??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\VecOp.java
?????文件???????2719??2009-12-28?12:46??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr\VertexComplicated.java
?????目錄??????????0??2010-01-24?12:31??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\源程序_MeshSimplification_QuadErr\src\MeshSimpliefication_QuadErr
?????目錄??????????0??2010-01-24?12:31??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\MeshSimplifier_可執(zhí)行文件\MeshSimplify_lib
?????目錄??????????0??2010-01-24?16:10??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\MeshSimplifier_可執(zhí)行文件\models
?????目錄??????????0??2010-01-24?12:31??復(fù)件?2009310399梁超_基于二次誤差度量的網(wǎng)格簡化_最終報(bào)告及程序\源程序_MeshSimplification_QuadErr\.settings
............此處省略8個(gè)文件信息
- 上一篇:android 串口鏈接工具源碼
- 下一篇:java-json.jar
評(píng)論
共有 條評(píng)論