三角网代码(三角网英文)
admin 发布:2022-12-19 03:00 96
本篇文章给大家谈谈三角网代码,以及三角网英文对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
请用C#编写程序实现不规则三角网的构建和体积计算。
不规则三角网建立方法有很多,网上搜一下选一个把代码敲出来就好了,体积是按照每个三角面算的,把所有的三角形加到一起就好了
在ArcEngine中如何读取tin的数据,需要读所有三角网的点号、坐标?
通过文件夹的方式读入TIN数据即可,系统会自动获取其中的相关信息。当然你也可以通过代码获取 TIN数据中 三角网的点号、坐标。
下面是 C# 读取 TIN数据的代码:
/// summary
/// 打开 TIN 文件
/// /summary
/// param name="aFolderName"TIN文件夹 名/param
/// param name="axMapControl"axMapControl(可已将其换为 Scene
或 Globe 控件)/param
/// returns/returns
public void OpenFile_TINFolder(string aFolderName, AxMapControl axMapControl)//打开TIN文件
{
string pathToWorkspace = System.IO.Path.GetDirectoryName(aFolderName);
string tinName = System.IO.Path.GetFileName(aFolderName);
IWorkspaceFactory pWorkspaceFactory = new TinWorkspaceFactoryClass();
IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(pathToWorkspace, 0);
ITinWorkspace pTinWorkspace = pWorkspace as ITinWorkspace;
ITinLayer pTinLayer = new TinLayerClass();
if (pTinWorkspace.get_IsTin(tinName))
{
ITin pTin = pTinWorkspace.OpenTin(tinName);
pTinLayer.Dataset = pTin;
pTinLayer.ClearRenderers();
pTinLayer.Name = tinName;
}
axMapControl.AddLayer(pTinLayer);
axMapControl.ActiveView.Refresh();
}
希望对你有帮助!
狄诺尼三角网
point.pyclass Point: def __init__(self,x,y): self.x = x self.y = y def getSide(self,v1,v2): e = ((self.y - v1.y) * (v2.x - v1.x)) - ((v2.y - v1.y) * (self.x - v1.x)) if e0: return -1 elif e == 0: return 0 else: return 1 triangle.pyimport mathfrom point import Pointclass Triangle: def __init__(self,v1,v2,v3): self.v1 = v1 self.v2 = v2 self.v3 = v3 self.getCenterAndRadius() def getTuple(self): return (self.v1,self.v2,self.v3) def getCenterAndRadius(self): v1 = self.v1 v2 = self.v2 v3 = self.v3 eps = 0.000001 if abs(v1.y - v2.y) eps and abs(v2.y - v3.y) eps: return None if abs(v2.y - v1.y) eps: m2 = -(v3.x - v2.x) / float(v3.y - v2.y) mx2 = (v2.x + v3.x) / 2. my2 = (v2.y + v3.y) / 2. xc = (v2.x+v1.x) / 2. yc = m2*(xc - mx2) + my2 elif abs(v3.y - v2.y) eps: m1 = -(v2.x - v1.x) / float(v2.y - v1.y) mx1 = (v1.x + v2.x) / 2. my1 = (v1.y + v2.y) / 2. xc = (v3.x + v2.x) / 2. yc = m1 * (xc - mx1) + my1 else: m1 = -(v2.x - v1.x) / float(v2.y - v1.y) m2 = -(v3.x - v2.x) / float(v3.y - v2.y) mx1 = (v1.x + v2.x) / 2. mx2 = (v2.x + v3.x) / 2. my1 = (v1.y + v2.y) / 2. my2 = (v2.y + v3.y) / 2. xc = (m1 * mx1 - m2 * mx2 + my2 - my1) / float(m1 - m2) yc = m1 * (xc - mx1) + my1 self.vc = Point(xc, yc) dx = v2.x - xc dy = v2.y - yc rsqr = dx * dx + dy * dy self.radius = math.sqrt(rsqr) def inCircle(self,v): dx = v.x - self.vc.x dy = v.y - self.vc.y drsqr = dx * dx + dy * dy xc = self.vc.x yc = self.vc.y dx = self.v2.x - xc dy = self.v2.y - yc rsqr = dx * dx + dy * dy if drsqr = rsqr: return True else: return False def printTriangle(self): print '-'*15, 'triangle start', '-'*15 print self.v1.x, self.v1.y print self.v2.x, self.v2.y print self.v3.x, self.v3.y print '-'*15, 'triangle end', '-'*15delaunay.pyfrom triangle import Trianglefrom point import PointMAXSIZE = 150def makeTriangulate(ptlist): trianglelist = [None]*MAXSIZE complete = [False]*MAXSIZE for i in range(MAXSIZE): complete.append(False) edgeslist = [[None]*MAXSIZE for row in range(2)] xmin = ptlist[0].x ymin = ptlist[0].y xmax = xmin ymax = ymin ptnum = len(ptlist) #print ptnum for i in range(1,ptnum): if ptlist[i].x xmin: xmin = ptlist[i].x if ptlist[i].x xmax: xmax = ptlist[i].x if ptlist[i].y ymin: ymin = ptlist[i].y if ptlist[i].y ymax: ymax = ptlist[i].y dx = xmax - xmin dy = ymax - ymin if dx dy: dmax = dx else: dmax = dy xmid = (xmax + xmin) / 2. ymid = (ymax + ymin) / 2. newpt = Point(xmid - 2 * dmax, ymid - dmax) ptlist.append(newpt) newpt = Point(xmid, ymid + 2 * dmax) ptlist.append(newpt) newpt = Point(xmid + 2 * dmax, ymid - ymax) ptlist.append(newpt) #ptlist[ptnum + 1].x = xmid - 2 * dmax #ptlist[ptnum + 1].y = ymid - dmax #ptlist[ptnum + 2].x = xmid #ptlist[ptnum + 2].y = ymid + 2 * dmax #ptlist[ptnum + 3].x = xmid + 2 * dmax #ptlist[ptnum + 3].y = ymid - ymax triangle = Triangle(ptlist[ptnum], ptlist[ptnum+1], ptlist[ptnum+2]) trianglelist[0] = triangle complete[0] = False ntri = 0 for i in range(ptnum): nedge = -1 j = -1 while j ntri: j += 1 if not complete[j] and trianglelist[j]: inc = trianglelist[j].inCircle(ptlist[i]) if inc: edgeslist[0][nedge+1] = trianglelist[j].v1 edgeslist[1][nedge+1] = trianglelist[j].v2 edgeslist[0][nedge+2] = trianglelist[j].v2 edgeslist[1][nedge+2] = trianglelist[j].v3 edgeslist[0][nedge+3] = trianglelist[j].v3 edgeslist[1][nedge+3] = trianglelist[j].v1 nedge += 3 trianglelist[j] = trianglelist[ntri] complete[j] = complete[ntri] j -= 1 ntri -= 1 for j in range(nedge): if edgeslist[0][j] and edgeslist[1][j] : for k in range(j+1,nedge+1): if edgeslist[0][k] and edgeslist[1][k]: if edgeslist[0][j] == edgeslist[1][k]: if edgeslist[1][j] == edgeslist[0][k]: edgeslist[0][j] = None edgeslist[0][k] = None edgeslist[1][j] = None edgeslist[1][k] = None for j in range(nedge+1): if edgeslist[0][j] and edgeslist[1][j]: ntri += 1 trianglelist[ntri] = Triangle(edgeslist[0][j],edgeslist[1][j],ptlist[i]) complete[ntri] = False i = -1 while intri: i += 1 if trianglelist[i]: if not (trianglelist[i].v1 in ptlist[0:ptnum] and trianglelist[i].v2 in ptlist[0:ptnum] and trianglelist[i].v3 in ptlist[0:ptnum]): trianglelist[i] = trianglelist[ntri] i -= 1 ntri -= 1 else: trianglelist[i] = trianglelist[ntri] i -= 1 ntri -= 1 return trianglelist[:ntri+1]
三角网代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于三角网英文、三角网代码的信息别忘了在本站进行查找喔。
版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;
相关推荐
- 05-04卡盟资源代码(卡盟控制端全套系统源码)[20240504更新]
- 05-04java多线程代码(java 多线程)[20240504更新]
- 05-04css颜色渐变代码(css颜色渐变代码大全)[20240504更新]
- 05-04页面随鼠标滚轮上下滚动代码(鼠标上下滚动变成左右滚动)[20240504更新]
- 05-04php网站代码(php网站程序)[20240504更新]
- 05-04公众号分享接口代码怎么写入(公众号接口开发教程源码+工具)[20240504更新]
- 05-04网贷代码是什么情况(网贷内部码)[20240504更新]
- 05-04asp.netdes加密代码(asp加密算法代码)[20240504更新]
- 05-04网站右下角视频代码(网页视频右上角下载)[20240504更新]
- 05-04软件公司代码管理软件(软件产品代码)[20240504更新]
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
-
- seo咨询价格找推推蛙,seo 推广平台
- java多线程代码(java 多线程)[20240504更新]
- css颜色渐变代码(css颜色渐变代码大全)[20240504更新]
- 郑州网站优化排名,郑州实力网站优化推荐
- 页面随鼠标滚轮上下滚动代码(鼠标上下滚动变成左右滚动)[20240504更新]
- php网站代码(php网站程序)[20240504更新]
- html网页制作源代码(web网页制作源代码)[20240504更新]
- 包含鹊桥源代码的词条[20240504更新]
- 免费ssh源代码(免费ssh工具)[20240504更新]
- 中英商城PC手机源代码(中英商城pc手机源代码是什么)[20240504更新]
- 友情链接