狄洛尼三角网算法c语言,基于某狄洛尼三角网生成算法的源代码

62e50291a81fc54b507f33cb80033297.gif 基于某狄洛尼三角网生成算法的源代码

(30页)

d99ea1c3ee489326146f114bd9ea7243.png

本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!

19.90 积分

实用标准文档import java.util.*;import java.awt.*;public class MyEdge { public static int count=0; public int id; private int begin; private int end; private int useCount; public MyEdge(int begin,int end) { this.id=++count; this.begin=begin; this.end=end; this.useCount=0; } public MyEdge(MyPoint begin,MyPoint end) { this.id=++count; this.begin=begin.id; this.end=end.id; this.useCount=0; } public int getUseCount() { return this.useCount; } public void addUseCount() { this.useCount++; } /* * 下面这两个方法是得到边的来个顶点 * 若集合中没有指定的对象则返回空值 */ public MyPoint getBeginPoint(Map pointSet) { MyPoint temp=pointSet.get(this.begin); return temp; } public MyPoint getEndPoint(Map pointSet) { MyPoint temp=pointSet.get(this.end); return temp; } /* * 下面是根据两个点的ID,在边集中找寻两点组成的边 * 返回的是边对象 * 若没找到,则返回空 */ public static MyEdge getEdge(int begin,int end,Map edgeSet) { MyEdge temp=null; for(int i=1;i<=edgeSet.size();i++) { temp=edgeSet.get(i); if(temp.begin==begin&&temp.end==end) break; } return temp; } /* * 下面是根据两个点对象,在边集中找寻两点组成的边 * 返回的是边对象 * 若没找到,则返回空 */ public static MyEdge getEdge(MyPoint begin,MyPoint end,Map edgeSet) { MyEdge temp=null; for(int i=1;i<=edgeSet.size();i++) { temp=edgeSet.get(i); if(temp.begin==begin.id&&temp.end==end.id) break; } return -省略部分- double tempx3=2*(x3-x1)*(y2-y1)-2*(x2-x1)*(y3-y1); double centerX=(tempx1-tempx2)/tempx3; double tempy1=(x2-x1)*(x3*x3-x1*x1+y3*y3-y1*y1)*1.0; double tempy2=(x3-x1)*(x2*x2-x1*x1+y2*y2-y1*y1)*1.0; double tempy3=2*(y3-y1)*(x2-x1)-2*(y2-y1)*(x3-x1); double centerY=(tempy1-tempy2)/tempy3; return new Point((int)centerX,(int)centerY); } /* * 下面这个函数是判断一个自定义点是否在三角形的外接圆内 * 若在圆内,则返回true * 否则返回false */ public boolean isInCircle(MyPoint p,Map pointSet) { boolean flag=false; Point center=this.findCenter(pointSet); MyPoint first=pointSet.get(this.pID[0]); double tempr1=(center.x-first.x)*(center.x-first.x); double tempr2=(center.y-first.y)*(center.y-first.y); double r=Math.sqrt((tempr1+tempr2)); double distance=p.distance(center.x,center.y); if(distance

524d6daf746efaa52c3c71bbfe7ba172.gif  天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值