乌木 发表于 2012-5-9 11:00:35

复原态的这五处小三角形是什么情况?看来,虽然小三角形的颜色不同,但是仍在同一平面中,也就是小三角形处并无一个小的刻缺,对吧?


[ 本帖最后由 乌木 于 2012-5-9 11:16 编辑 ]

hubo5563 发表于 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);
是自己编的。

schuma 发表于 2012-5-9 11:24:57

回复 11# 的帖子

你说的这几个,就是绘图的bug,不应该有那几条线的。颜色的不同只是因为光照效果的原因。这里一共就五种颜色,不分深黄浅黄之类的。

schuma 发表于 2012-5-9 11:29:36

回复 12# 的帖子

多谢你的回复。antialiasing我试过,不过动画弄得不太流畅,所以就没采用。回头我再试试看。

showmian() 里应该有消隐的算法吧。要决定先画那个多边形,后画哪个之类的。大概是什么思路呢?从远到近画?

hubo5563 发表于 2012-5-9 11:49:11

在调用showmian()之前先排序,这是排过顺序的,显示时要结合显示的面的法向量,不能显示的就不显示了,先画远处的再画近处的,就是画家算法消隐。

honglei 发表于 2012-5-9 12:27:49

这个魔方很难观察,调整好方向之后,只有两种块.

schuma 发表于 2012-5-9 12:52:08

好主意。不过我试了一下还是想画那些法矢量朝后的,否则动画效果有种支离破碎的感觉。现在把那些画成灰色的了。

然后我改了一下多边形中心的算法,现在那个地方已经不会出现之前的那个毛病了。

zyytlzlb 发表于 2012-5-9 13:47:58

期待

我们很期待你 能多做出现在市面上常见的一些异型魔方的模拟器,来帮助一些像我这样的初级魔法爱好者

schuma 发表于 2012-5-9 15:33:24

呼呼,花了两个半小时,终于解开了。中间出了很多次错误,多亏了有 撤销 按钮,才不至于从头再来...

有了一些经验以后,发现鼠标选的点和对应的顶点之间的对应关系还是不太自然,没达到想转哪儿就转哪儿的程度。我还要慢慢调试啊

schuma 发表于 2012-5-9 16:08:16

刚才我把十几年前的笔记本翻出来了。这是我当时尺规作图画的图。它是这个applet里的形体的镜像。



我改天给applet加一个镜像按钮
页: 1 [2] 3 4
查看完整版本: Twisty Star JAVA模拟器 (五个四面体的组合)