面捕与三角剖分
来源:互联网 发布:炫浪网络在线阅读手机 编辑:程序博客网 时间:2024/04/30 06:20
为了减少计算量,通过ABC三点构建一个矩形,遍历矩形内所有像素,如果该像素不在三角形内,则不对其处理。
下列函数如果返回 Vector2.zero 则P点不在三角形ABC内
Vector2 PointinTriangleDetect(UV A, UV B, UV C, UV P)
{
UV v0 = C - A;
UV v1 = B - A;
UV v2 = P - A;
float dot00 = UV.Dot(v0, v0);
float dot01 = UV.Dot(v0, v1);
float dot02 = UV.Dot(v0, v2);
float dot11 = UV.Dot(v1, v1);
float dot12 = UV.Dot(v1, v2);
float inverDeno = 1 / (dot00 * dot11 - dot01 * dot01);
float m= 0;
m = (dot11 * dot02 - dot01 * dot12) * inverDeno;
if (m< 0 || m> 1) // if u out of range, return directly
{
return Vector2.zero;
}
float n=0;
n= (dot00 * dot12 - dot01 * dot02) * inverDeno;
if (n< 0 || n > 1) // if v out of range, return directly
{
return Vector2.zero;
}
if (m+ n <= 1)
{
return new Vector2(m, n);
}
return Vector2.zero; ;
}
下列函数如果返回 Vector2.zero 则P点不在三角形ABC内
Vector2 PointinTriangleDetect(UV A, UV B, UV C, UV P)
{
UV v0 = C - A;
UV v1 = B - A;
UV v2 = P - A;
float dot00 = UV.Dot(v0, v0);
float dot01 = UV.Dot(v0, v1);
float dot02 = UV.Dot(v0, v2);
float dot11 = UV.Dot(v1, v1);
float dot12 = UV.Dot(v1, v2);
float inverDeno = 1 / (dot00 * dot11 - dot01 * dot01);
float m= 0;
m = (dot11 * dot02 - dot01 * dot12) * inverDeno;
if (m< 0 || m> 1) // if u out of range, return directly
{
return Vector2.zero;
}
float n=0;
n= (dot00 * dot12 - dot01 * dot02) * inverDeno;
if (n< 0 || n > 1) // if v out of range, return directly
{
return Vector2.zero;
}
if (m+ n <= 1)
{
return new Vector2(m, n);
}
return Vector2.zero; ;
}
三角形遍历
1.构建一张texture2D 纹理,纹理像素大小最好和采样纹理像素大小一致,这样不免采样时纹理坐标缩放计算。
2.为了减少计算量,通过ABC三点构建一个矩形,遍历矩形内所有像素,如果该像素不在三角形内,则不对其处理。
3.AP=m*AC+n*AP通过三角剖分的三个点ABC和P,计算像素内一点的m和n
纹理采样
AP=m*AC+n*AB 即P-A=m(C-A)+n(B-A)
即P=m(C-A)+n(B-A)+A
在采样纹理中与ABC三点对应的A’B’C’,通过m,n和A’B’C’计算P’d的坐标
P’.x=m(C’.x-A’.x)+n(B’.x-A’.x)+A’.x ;
P’.y=m(C’.y-A’.y)+n(B’.y-A’.y)+A’.y ;
阅读全文
0 0
- 面捕与三角剖分
- 三角剖分 与Delaunary三角剖分
- Voronoi图与Delaunay三角剖分
- OpenCascade与三角剖分 笔记
- 射线与三角面
- Delaunay三角剖分
- Delaunay三角剖分
- 三角剖分
- 最优三角剖分
- 三角剖分详解
- Delaunay三角剖分
- Delaunay三角剖分
- 螺旋三角剖分
- 洋葱三角剖分
- 三角剖分详解
- Delaunay三角剖分
- 三角剖分浅析
- 三角剖分详解
- 利用Plupload来进行前端文件上传
- arch/x86/mm/pgtable.c
- ShareSDK tweet分享
- jvm垃圾回收器
- spring scheduled-task集群问题
- 面捕与三角剖分
- 黑科技:纯CSS定制文本省略
- codeforces 459C
- HTML基本知识梳理
- Android获取Manifest中<meta-data>元素工具类
- HihoCoder1546集合计数
- MongonDB基本使用
- tensorflow_api_2:tf.argmax( )
- easyui-tree代码js封装,带搜索查询