魔方吧·中文魔方俱乐部

 找回密码
 注册
搜索
热搜: 魔方
楼主: schuma
打印 上一主题 下一主题

Twisty Star JAVA模拟器 (五个四面体的组合) [复制链接]

Rank: 8Rank: 8

积分
6852
帖子
2478
精华
79
UID
4618
性别

论坛建设奖 十年元老

1#
发表于 2012-5-9 11:24:09 |显示全部楼层
我编的java也没有用java3d功能,模型建立,消隐都是自己计算的,主要用到java2d的绘图功能,消除显示时的锯齿是用这个函数实现的:
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

这是画一个完整魔方子程序:

//画一个完整的魔方

void  xianshimq(Graphics gg)
{
     int i,j;
     if(ogg==null){
             ogg=createImage(width,height);
     };
     int m;
     boolean zxflag=false;
     Graphics og=ogg.getGraphics();
     og.setClip(0,0,width,height);
     og.setColor(bgColor);
     og.fillRect(0, 0, width, height);
     Graphics2D g2 = (Graphics2D)og;
     g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);      
       //for(i=26;i<27;i++)
       for(i=0;i<zongkuaishu;i++)
       {
        showmian(g2,moqiu);
       };
       xianshigongshiye(og);
        gg.setClip(0,top,width,height);
        gg.drawImage(ogg,0,top,null);
};
其中showmian(g2,moqiu);
xianshigongshiye(og);
是自己编的。

使用道具 举报

Rank: 8Rank: 8

积分
6852
帖子
2478
精华
79
UID
4618
性别

论坛建设奖 十年元老

2#
发表于 2012-5-9 11:49:11 |显示全部楼层
在调用showmian()之前先排序,这是排过顺序的,显示时要结合显示的面的法向量,不能显示的就不显示了,先画远处的再画近处的,就是画家算法消隐。

使用道具 举报

Rank: 8Rank: 8

积分
6852
帖子
2478
精华
79
UID
4618
性别

论坛建设奖 十年元老

3#
发表于 2012-5-12 11:41:48 |显示全部楼层

回复 28# 的帖子

显示器本来就是2D的,任何3D物体都是投影到2D显示窗口显示的。
其实我的所有魔方模型都是3D模型,存储的都是3D坐标。

使用道具 举报

Rank: 8Rank: 8

积分
6852
帖子
2478
精华
79
UID
4618
性别

论坛建设奖 十年元老

4#
发表于 2012-5-12 12:36:49 |显示全部楼层
不是,是我处理光照时的对比度小了,明暗效果不是特别明显。

使用道具 举报

Rank: 8Rank: 8

积分
6852
帖子
2478
精华
79
UID
4618
性别

论坛建设奖 十年元老

5#
发表于 2012-5-12 12:48:25 |显示全部楼层
不是没有加光照,是对比度不大。



































从这个单色的可以看出明暗效果不是太强烈,主要是为了好认颜色特意做成这样的。

[ 本帖最后由 hubo5563 于 2012-5-12 13:05 编辑 ]

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|魔方吧·中文魔方俱乐部

GMT+8, 2024-5-4 09:57

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部