谢谢我的老师,唐泽圣教授在其《计算机图形学基础》一书中导出的通用bresenham画线算法代码
/**
*sample to fill a trangle on 2d screen
*/
public
void
fillTriangle(
int
x1,
int
y1,
int
x2,
int
y2,
int
x3,
int
y3)
{
System.out.println("fillTriangle:");
System.out.print(x1+","+y1+",");
System.out.print(x2+","+y2+",");
System.out.println(x3+","+y3+",");
int ymin,ymax;
ymax=Math.max(Math.max(y1,y2),y3);
ymin=Math.min(y1,Math.min(y2,y3));
System.out.println("maxY="+ymax+" minY="+ymax);
triangleScanlineMinMaxArrays=new int[(ymax-ymin+1)][];
triangleDeltaY=ymin;
calculateLine(x1,y1,x2,y2);
/**
*sample to fill a trangle on 2d screen
*/
public
void
fillTriangle(
int
x1,
int
y1,
int
x2,
int
y2,
int
x3,
int
y3)
{
System.out.println("fillTriangle:");
System.out.print(x1+","+y1+",");
System.out.print(x2+","+y2+",");
System.out.println(x3+","+y3+",");
int ymin,ymax;
ymax=Math.max(Math.max(y1,y2),y3);
ymin=Math.min(y1,Math.min(y2,y3));
System.out.println("maxY="+ymax+" minY="+ymax);
triangleScanlineMinMaxArrays=new int[(ymax-ymin+1)][];
triangleDeltaY=ymin;
calculateLine(x1,y1,x2,y2);

本文介绍了一种用于在2D屏幕上填充三角形的算法,通过计算和遍历三角形边界的像素来完成填充。文章中展示了核心的`fillTriangle`方法,该方法首先确定三角形的最小和最大y坐标,然后利用bresenham画线算法计算每行的边界像素,并进行绘制。同时,还提供了一个辅助方法`calculateLine`用于计算线段的像素点。
最低0.47元/天 解锁文章
564

被折叠的 条评论
为什么被折叠?



