100分求一个程序,实现三角形或任意多边形的颜色填充算法

absorbjava 2003-07-22 11:23:40
――――实现三角形或任意多边形的颜色填充算法

程序要求:需要实现三个功能: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. 这样为每个点绘上求出的颜色,即可完成整个三角形的颜色填充

...全文
208 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
programer23 2004-03-18
  • 打赏
  • 举报
回复
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)
可以呀
pastelife 2004-03-18
  • 打赏
  • 举报
回复
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)
ayayanvren 2004-03-03
  • 打赏
  • 举报
回复
fillPolygon可以
keyinwind 2003-07-23
  • 打赏
  • 举报
回复
第三个公式是不是有问题?
匪六哥 2003-07-23
  • 打赏
  • 举报
回复
与其干等,不如自己写!

我发现好象现在回答问题的高手少了!

哎!努力成为高手!
absorbjava 2003-07-23
  • 打赏
  • 举报
回复
不好意思啊,算法应该是这样的,上面写错了
Ca= C1*(Ys-Y2)/(Y1-Y2) + C2*(Y1-Ys)/(Y1-Y2) (1)
Cb= C1*(Ys-Y3)/(Y1-Y3) + C3*(Y1-Ys)/(Y1-Y3) (2)
Cp= Ca*(Xb-Xp)/(Xb-Xa) + Cb*(Xp-Xa)/(Xb-Xa) (3)


达人快点帮忙呀,明天中午之前就要交稿了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧