资源简介
采用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 < v2ind;
if (v2ind == vInd)
return vInd < v1ind;
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 < v2ind ? v1ind : v2ind;
}
/**
* @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
相关资源
- java-json.jar
- Java多线程实现生产者消费者
- Java记事本程序 Java程序设计入门,本
- mysql-connector-java-5.0.8-bin.jar
- 简单的java多人聊天小程序
- 数据库SQLserver+java课程设计
- java编写的FTP客户端程序
- java足球游戏
- java写的网络围棋程序
- Java Number Cruncher
- java项目视频连接.txt
- java网络对战的国际象棋源码
- 模拟售票系统程序(完整版)
- 基于java语言的浏览器设计与实现
- java邮件功能三大jar包commons-email-1.3.
- java 简单注册与数据库的连接
- 新阿里巴巴java编程规范认证真题
- 大二上学期初学java之期末课程设计–
- 基于JAVA学生选课系统源代码
- java 学生选课管理系统 源代码
- jar包差异比较器
- Java三种生成条形码的源码barcode4j、
- 基于Eclipse paho的MQTT java客户端
- Java求两顶点间最短路径和距离
- java调用apns推送的实现
- (java)基于UDP的聊天程序
- Java 课程设计-一个简单的画图程序
- com.cb.eclipse.folding_1.0.6
- java程序员顶岗实习
- 易宝支付Demo(Java源代码)
评论
共有 条评论