已知空间三角形,四边形,或者五边形的顶点的三维坐标,如何遍历多边形内部的每个点。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了已知空间三角形,四边形,或者五边形的顶点的三维坐标,如何遍历多边形内部的每个点。相关的知识,希望对你有一定的参考价值。
参考技术A 你的意思是,知道空间多边形的定点,如何遍历与每个定点有关系的内部定点,楼主你可以在纸上画一个三维的多边形,标注每个定点(包含内外),用C++编译一份广度或深度优先的遍历代码,调试好之后在cmd里面输入定点,就ok了!如果楼主需要可以送楼主一份代码。 参考技术B 多边形内指的是该平面上的内部的点?这种遍历应该是整数点吧?空间该平面上的整数点应该不会很多
区间DP之凸多边形的三角剖分
题目
给定一具有N个顶点(从1到N编号)的凸多边形,每个顶点的权均已知。问如何把这个凸多边形划分成N-2个互不相交的三角形,使得这些三角形顶点的权的乘积之和最小?
输入
第一行 顶点数N(N<50)。 第二行 N个顶点(从1到N)的权值,权值为小于32768的整数。
输出
第一行为各三角形顶点的权的乘积之和最小值。
样例
样例输入
5
121 122 123 245 231
样例输出
12214884
思路
我们可以假设某个三角形在最优解的情况下,那么在遍历长度的情况下,枚举左端点,从而推出右端点,进而枚举断电,将整个凸多边形分成三部分,即f[i][j]=min(f[i][j],f[i][k]+f[k][j]+a[k]a[i]a[j]),从而求出最小价值(需要注意的是当发f[i][j]==0时,应当直接取后者值)
代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=50+5;
int n;
ll a[maxn],f[maxn][maxn];
int main(){
//freopen("1.in","r",stdin);
scanf("%d",&n);
for(int i=1;i<=n;++i)scanf("%lld
",&a[i]);
for(int i=1;i+2<=n;++i)f[i][i+2]=a[i]*a[i+1]*a[i+2];
for(int d=3;d<=n;++d){
for(int i=1;i+d-1<=n;++i){
int j=i+d-1;
for(int k=i+1;k<j;++k){
if(f[i][j])f[i][j]=min(f[i][j],f[i][k]+f[k][j]+a[k]*a[i]*a[j]);
else f[i][j]=f[i][k]+f[k][j]+a[k]*a[i]*a[j];
}
}
}
printf("%lld
",f[1][n]);
return 0;
}
以上是关于已知空间三角形,四边形,或者五边形的顶点的三维坐标,如何遍历多边形内部的每个点。的主要内容,如果未能解决你的问题,请参考以下文章
已知一个多边形的所有顶点坐标,如果确定一点是不是在这个多边形内?