我现在知道不规则三角网(TIN)的所有三维顶点坐标,现在要提取这个三角网的边界点,我有这个想法,每个边界点之间的边长只被一个三角形共有,内部三角形的边被两个三角形共有。根据这个可以提取出边界。请问怎么用c语言实现啊?我这儿有数据,如果可以请留下邮箱,我发给你。
我的点都是三维坐标点,还有z值,建立队列我不太熟悉,能否根据我的思路来做?
c语言编程,关于不规则三角网的边界提取的
答案:2 悬赏:60 手机版
解决时间 2021-03-07 11:49
- 提问者网友:蓝琪梦莎
- 2021-03-06 17:40
最佳答案
- 五星知识达人网友:西岸风
- 2021-03-06 17:48
是的,如果一条边只被一个三角形拥有,它就是边界。
你的三角网含不含“岛屿”,含个数不定的“岛屿”程序要复杂一些。
我常用的有限元网文件:
x1 y1 z1 // node 座标
x2 y2 z2
....
xi yi zi
...
xn yn zn
n11 n12 n13 // 构成三角形1 3顶点号
n21 n22 n23 // 构成三角形2 3顶点号
n31 n32 n33 // 。。。
n41 n42 n43
...
你的三角网含不含“岛屿”,含个数不定的“岛屿”程序要复杂一些。
我常用的有限元网文件:
x1 y1 z1 // node 座标
x2 y2 z2
....
xi yi zi
...
xn yn zn
n11 n12 n13 // 构成三角形1 3顶点号
n21 n22 n23 // 构成三角形2 3顶点号
n31 n32 n33 // 。。。
n41 n42 n43
...
全部回答
- 1楼网友:第四晚心情
- 2021-03-06 19:00
给,你们老师的要求真怪异,:
#include<conio.h>
#include<stdio.h>
voidfun(inta[][34],intn)
{
inti,j;
for(i=0;i<n;i++)
for(j=0;j<=i;j++)
{
if(i==j)
a[i][j]=1;
elseif(j==0)
a[i][j]=1;
else
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
intmain()
{
inti,j,k,n;
inta[34][34];
k=1;
while(scanf("%d",&n)==1)//输入你要显示的行数,如1,2,3,4,...
{
fun(a,n);
printf("case%d:\n",k++);
for(i=0;i<n;i++)
{
for(j=0;j<n-i;j++)
printf("");
for(j=0;j<=i;j++)
{
if(j==i)
printf("%d",a[i][j]);
else
printf("%d",a[i][j]);
}
printf("\n");
}
printf("\n");
}
getch();
return0;
}
注意一下,
在5行以内时可以成为等腰三角形的,5行以上就不行了,
不是代码不行,是就实现不了,可以问问你们老师有何高招
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯