100分求一个程序,实现三角形或任意多边形的颜色填充算法
――――实现三角形或任意多边形的颜色填充算法
程序要求:需要实现三个功能:1。点击面板得到点,有点连接成三角形;
2。给三角形填充渐进颜色;
3。清除画面重新开始。
可能有点复杂,不过还是请java高手帮帮忙,程序可以跟帖也可发到我的邮箱:
dyb0601@vip.sina.com
一 颜色模型
采用RGB模型 :
RGB模式下的颜色定义:Color(r,g,b) 其中r,g,b为0~255之间的数
二 颜色插值方法:扫描线法
以三角形为例
Ca= C1*(Ys-Y2)/(Y1-Y2) + C2*(Y1-Ys)/(Y1-Y2) (1)
Cb= C1*(Ys-Y3)/(Y1-Y3) + C2*(Y3-Ys)/(Y1-Y2) (2)
Cp= Ca*(Xb-Xp)/(Xb-Xa) + Cb*(Xb-Xa)/(Xb-Xa) (3)
扫描线法过程叙述:
1. 首先确定三角形的端点的颜色
2. 从一顶点开始做y向扫描。如上图所示,y = Ys,即为扫描线,先求出扫描线与三角形边的交点Ca和Cb,然后由式(1)(2),分别以点的坐标和端点的颜色的rgb值代入上式,得到交点的对应的rgb值
3. 由交线的一个端点开始做x向扫描,由式(3)求Cp的颜色值
4. 这样为每个点绘上求出的颜色,即可完成整个三角形的颜色填充