开发过程中有这么个需求做cpu端2d的三角形光栅化,这个做法真是够简洁(我自己开始想的就没这个简洁, 囧)。
http://courses.cms.caltech.edu/cs171/barycentric.pdf
算法:
如果想用p0,p1,p2往一个buffer上画,
先用bycentric coordinate来把buffer上一个点表示就是:p=alpha*p0+beta*p1+gamma*p2;
这里alpha+beta+gamma=1;
如果alpha, beta, gamma都在[0,1],那么这个点就是在triangle里面。
这个bycentric coordinate另外一个好处是,除了判断是不是在triangle里面,还可以用来插值uv,color这种,带入alpha*x0+beta*x1+gamma*x2就可以了。
bycentric coordinate计算:
两个图直接搞定:
其他:
其他还有一些更通用的,基于scan line的算法,比如这个:http://www.cs.uu.nl/docs/vakken/gr/resources/08-triangles.slides.pdf
不过时间不多,就不一一看了,暂且心向往之
分享到:
相关推荐
2D转3D算法,能够实现2D图像转成具有3D效果
包含用于 2D 不规则打包的算法和算法的简单教程 算法 Bottom-Left-Fill.py:嵌套问题的 2-exchange 启发式 2002 genetic_algorithm.py:嵌套问题的 2 交换启发式算法 2002 nfp_test.py:针对不规则切削问题的完整...
这个是我个人自己写的Unity 2D环境中的寻路, 分别有两个文件夹,AIPath 是正面2D 环境,45AIPath 是斜45度角(2.5D)环境,本资源包含了一份PDF繁体中文教学文件,而在最后我也提出了一些问题,望高手解答。此算法也是...
superfacets-2d 三角形网格的超面分割算法的 C++ 实现
2D 相位展开算法 对相位质量引导相位展开方法运行 QualityGuidedUnwrap2D。 为 Goldstein 的分支切割相位展开方法运行 GoldsteinUnwrap2D。 (可根据要求提供质量指导方法的 3D 实施)
基于VC的代码,演示了2D图形学一些鼠标交互算法,还包含了CAD软件中标尺界面的制作。
2D 折线顶点平滑算法—— 平滑折线通常可以通过两种方式: 通过插值,即在新的平滑曲线上,原始的折线点仍保持不变; 通过近似,这意味着新的平滑曲线将近似原始的折线,但原始点不会被保留下来。 本代码对两种...
mesh2d是一个很好用的三角形网格划分工具
ICP算法的C++源代码。迭代最近点法(Iterative Closest Points Algorithm)。基本思想是:根据某种几何特性对数据进行匹配,并设这些匹配点为假想的对应点,然后根据这种对应关系求解运动参数。再利用这些运动参数对...
2D遊戲演算法.ppt
python3实现简单2D的A星算法寻路, 控制台打印可视化效果 python3实现简单2D的A星算法寻路, 控制台打印可视化效果 python3实现简单2D的A星算法寻路, 控制台打印可视化效果
2d三角形元素,使用三角形6节点单元的有限元法求解二维平面结构问题
Cartographer 2D SLAM算法,2D 的流行算法,非常不错的文档
利用vc++实现Kriging 算法,此算法实现 2D和3D地图等高线
仿真2D机器人球员训练算法的研究与设计,主要是对RoboCup的2D机器人的描述,和一些算法的改进!
判断一个点是否在三角形内的几种算法(2D). 一、根据面积来计算 二、利用矢量叉积来计算
本教程包括算法讲解,代码示例和基于OpenGL的算法演示。从最基础的两个多边形碰撞检测到后来的大量物体碰撞的真实物理模拟。
基于2D-PCA与2D-MMC的人脸识别算法.pdf
使用cocos2d-x和tiledMap制作A*,tiledMap里边可以将拼接好的地图整张的导出