魔方吧·中文魔方俱乐部

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

Fenz 的在线魔方程序【更新变形魔方】 [复制链接]

银魔

魔方思者

Rank: 7Rank: 7Rank: 7

积分
2998
帖子
1823
精华
6
UID
102191
性别
保密
兴趣爱好
理论
结构
破解

四年元老

11#
发表于 2014-5-6 23:35:41 |显示全部楼层
redcarrot 发表于 2014-5-5 17:30
个人觉得空心点角块才能转的操作方式有点奇怪。。。还是想去点中间。。。
求公布剩下两个,试不出来!!!

现在空心魔方的中间可以点了。

使用道具 举报

银魔

魔方思者

Rank: 7Rank: 7Rank: 7

积分
2998
帖子
1823
精华
6
UID
102191
性别
保密
兴趣爱好
理论
结构
破解

四年元老

12#
发表于 2014-5-7 22:05:34 |显示全部楼层
乌木 发表于 2014-5-7 10:35
初一看,以为那个“2x2x2 偏移”是如下这种捆绑魔方;再转动转动它们,两者大不同!那个“偏移二阶”有如通 ...

额,这个捆绑能用吗。。。
那个要做实物我想也是可以通过像鱼竿那样的伸缩原理做的。具体实现结构没有想过。
三阶也可以做畸变的,只要改一些坐标位置(虽然说是“只要”,目前的条件下也是个累人的差事)就能做到。
我这个程序本质就是把块的所有点按一定路径运动到目标点来实现块的运动,所以很容易实现变形。

使用道具 举报

银魔

魔方思者

Rank: 7Rank: 7Rank: 7

积分
2998
帖子
1823
精华
6
UID
102191
性别
保密
兴趣爱好
理论
结构
破解

四年元老

13#
发表于 2014-5-9 00:59:11 |显示全部楼层
hubo5563 发表于 2014-5-5 11:16
[ 本帖最后由 hubo5563 于 2014-5-5 11:53 编辑 ]

转动操作的块轮换我也是手工输入的,魔方复杂时数据很多 ...

胡老师,请教一下视角转动的问题?
我的程序之前视角只有二维转动,现在写成三维转动,具体算法是这样的:
这里Dy和Dx是鼠标移动的“速度”(两个事件间单位时间移动的距离);
camera.lat是摄像机的纬度;
camera.lon是经度;
camera.rot是摄像机绕垂直于屏幕轴转的角度。
那几个三角函数是刚算好的。
                        camera.lat+=Dy*cosRot-Dx*sinRot;
                        var Dlon=(Dx*cosRot+Dy*sinRot)/cosLat;
                        camera.lon+=Dlon;
                        camera.rot+=Dlon*sinLat;

问题在于鼠标移动的事件是一步一步的,做不到真正的微分,所以会有少量的偏差,在一些地方偏差比较大,如果拖动得太快,偏差会大得无法忍受。
我看您的魔方是没有这个问题的,请问应该如何避免这个问题呢?

使用道具 举报

银魔

魔方思者

Rank: 7Rank: 7Rank: 7

积分
2998
帖子
1823
精华
6
UID
102191
性别
保密
兴趣爱好
理论
结构
破解

四年元老

14#
发表于 2014-5-9 19:32:43 |显示全部楼层
hubo5563 发表于 2014-5-9 11:23
我处理的方法和你不同,鼠标拖动不改变模型的3D坐标。
我用一个矩阵记录转动积累,每次鼠标拖动计算x和y ...

其实我的也不会改变魔方的坐标,改变的是摄像机的坐标。然后再根据摄像机坐标来投影绘图。原理是一样的,区别在于算法。您用矩阵,我用的是坐标变换的微分关系。
我的算法是有问题的,所以想学习一下更好的算法。可否详细描述一下您的算法?
www.fenzland.com新做的个人站,欢迎光临

使用道具 举报

银魔

魔方思者

Rank: 7Rank: 7Rank: 7

积分
2998
帖子
1823
精华
6
UID
102191
性别
保密
兴趣爱好
理论
结构
破解

四年元老

15#
发表于 2014-5-9 23:50:26 |显示全部楼层
本帖最后由 Fenz 于 2014-5-10 00:07 编辑
hubo5563 发表于 2014-5-9 22:10
程序:
//////////////////////////////////////////////
//鼠标拖动事件处理


多谢胡老师。我慢慢学习。
今晚我又写了另一个基于坐标变换的算法,看看是否正确可用,如果还行,就要借用您的算法了。

--------------
原来如此,我用的是通过三个表示摄像机状态的角来完成从世界坐标系到屏幕坐标的变换,相当于每次通过三角函数的计算得到变换矩阵,而您的程序则是直接储存这个变换矩阵来表示摄像机状态。

使用道具 举报

银魔

魔方思者

Rank: 7Rank: 7Rank: 7

积分
2998
帖子
1823
精华
6
UID
102191
性别
保密
兴趣爱好
理论
结构
破解

四年元老

16#
发表于 2014-5-10 16:16:26 |显示全部楼层
hubo5563 发表于 2014-5-9 22:10
程序:
//////////////////////////////////////////////
//鼠标拖动事件处理

最后还是改用了您的方法,用矩阵表示摄像机位置和方向,这样比我原来的算法少了许多三角函数和反三角函数(以及带来的正负判断)等计算。矩阵这块看来我需要补一补。

使用道具 举报

银魔

魔方思者

Rank: 7Rank: 7Rank: 7

积分
2998
帖子
1823
精华
6
UID
102191
性别
保密
兴趣爱好
理论
结构
破解

四年元老

17#
发表于 2014-5-21 13:04:56 |显示全部楼层
schuma 发表于 2014-5-21 11:41
不错。我还没用过SVG来做过魔方。干得好!

svg比较面向对象,事件绑定比较方便。记得你的魔方是用canvas做的吧。
原来也想把你的反射魔方也加进去,但是还有一点法线问题。
要改进的地方蛮多,不打算改了,直接写2.0的节奏。

使用道具 举报

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

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

GMT+8, 2024-5-3 10:54

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部