77范文网 - 专业文章范例文档资料分享平台

基于狄洛尼三角网生成算法的源代码(2)

来源:网络收集 时间:2019-03-22 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

{

MyPoint goodPoint=null;

for(int i=1;i<=pointSet.size();i++) { MyPoint activePoint=pointSet.get(i);

if(this.isOnLeft(activePoint, pointSet))//判断当前活动点是不是在直线的左边 { //在直线左边 double minCos=this.getCos(activePoint, pointSet); int good=i; for(int j=i+1;j<=pointSet.size();j++)

{//对当前活动边的左边点进行空圆准则检验

if(this.isOnLeft(pointSet.get(j), pointSet))//判断当前活动点是不是 { double cos=this.getCos(pointSet.get(j), pointSet); if(cos

goodPoint=pointSet.get(good); /*

* 下面是生成边后的后期处理 */

newEdge1=new

在直线的左边

//生成的第一边 MyEdge

MyEdge(this.getBeginPoint(pointSet),goodPoint); newEdge1.addUseCount(); if(edgeSet.containsValue(newEdge1)) { MyEdge.count--; for(int k=1;k<=edgeSet.size();k++) { if(edgeSet.get(k).equals(newEdge1)) { edgeSet.get(k).addUseCount(); break; } } }else

edgeSet.put(newEdge1.id, newEdge1);

newEdge2=new

//生成的第二边 MyEdge

MyEdge(goodPoint,this.getEndPoint(pointSet)); newEdge2.addUseCount(); if(edgeSet.containsValue(newEdge2)) { MyEdge.count--; for(int k=1;k<=edgeSet.size();k++) { if(edgeSet.get(k).equals(newEdge2)) { edgeSet.get(k).addUseCount(); break; } } }else edgeSet.put(newEdge2.id, newEdge2);

//对第三边进行处理 this.addUseCount(); this.turnBeginAndEnd(); //生成三角形,并加入到三角形集合中 MyTriangle newTriangle=new MyTriangle(this.getBeginPoint(pointSet),goodPoint,this.getEndPoint(pointSet),edgeSet); triangleSet.put(newTriangle.id, newTriangle); break; } } return goodPoint; } /*

* 此方法是将某一点与当前边的顶点角的余弦值返回 */

private double getCos(MyPoint p,Map pointSet) { Point OA=new Point(pointSet.get(this.begin).x-p.x,pointSet.get(this.begin).y-p.y); Point OB=new Point(pointSet.get(this.end).x-p.x,pointSet.get(this.end).y-p.y); double OALength=Math.sqrt(OA.x*OA.x+OA.y*OA.y); double OBLength=Math.sqrt(OB.x*OB.x+OB.y*OB.y); return (OA.x*OB.x+OA.y*OB.y)/(OALength*OBLength);

} }

import java.util.*; import java.io.*;

public class MyPoint { public static int count=0; public int id; public int x; public int y;

private String info;

public MyPoint(int x,int y) { this.id=++count; this.x=x; this.y=y; }

public void setInfo(String info) { this.info=info; }

public String getInfo() { return this.info; }

public double distance(int x,int y) { int tempx=(this.x-x)*(this.x-x); int tempy=(this.y-y)*(this.y-y); return Math.sqrt((tempx+tempy)); }

public double distance(MyPoint p) { int tempx=(this.x-p.x)*(this.x-p.x); int tempy=(this.y-p.y)*(this.y-p.y); return Math.sqrt((tempx+tempy)); } /*

* 下面这个方法是找寻主叫点在点集中与之最近的点 * 返回的是与之最近点的引用 */

public MyPoint getMinDistancePoint(Map pointSet) { int minID=this.id; double minDistance=Double.MAX_VALUE; for(int i=1;i<=pointSet.size();i++) { if(i==this.id) continue; double temp=this.distance(pointSet.get(i)); if(minDistance>temp) { minDistance=temp; minID=i; } } return pointSet.get(minID); } /*

*下面的方法是将点集中的点全部输出到文件中 */

public static boolean savePoints(Map pointSet) { boolean flag=false; File file=new File(\ try { PrintStream ps=new PrintStream(file); PrintStream temp=System.out; System.setOut(ps); for(int i=1;i<=pointSet.size();i++) System.out.println(pointSet.get(i).id+\ flag=true; System.setOut(temp); //temp.close(); ps.close(); }catch(IOException e) { flag=false; } return flag; } /*

* 下面的方法是将文件中的点加载到内存中 */

public static boolean readPoints(Map pointSet,String filename)

{ boolean flag=false; File file=new File(filename); try { FileInputStream in=new FileInputStream(file); Scanner fromfile=new Scanner(in); while(fromfile.hasNextInt()) { fromfile.nextInt(); MyPoint point=new MyPoint(fromfile.nextInt(),fromfile.nextInt()); pointSet.put(point.id, point); } flag=true; in.close(); }catch(IOException e) { return flag; } return flag; } }

import javax.swing.*; import java.awt.*;

import java.awt.event.*; import java.util.*;

public class MyTin extends JFrame { public static void main(String[] agrs) { MyTin tin=new MyTin(\三角网的生成\ } private MyPanel show; private JButton begin; public MyTin(String title)

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于狄洛尼三角网生成算法的源代码(2)在线全文阅读。

基于狄洛尼三角网生成算法的源代码(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/536611.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: