Flash 如何在Rubik';s立方体?
我试图在Flash&Papervision中创建一个魔方,我真的被困在这里了。我已经到了可以旋转任何一个立方体平面一次的地步了,但是在那之后…一切都乱七八糟,因为所有的局部坐标系都是乱七八糟的 我真的不知道该怎么办,有人能给我一些建议吗?我不是在寻找“阅读转换矩阵”,我知道我应该(我正在这么做),但我真的不确定要寻找什么。我的想法是,在每次旋转之后,我应该再次修复每个立方体的每个坐标系,但我不知道如何修复。任何关于我想要达到的目标(用文字)和原因的提示,我都非常感激Flash 如何在Rubik';s立方体?,flash,3d,papervision3d,rubiks-cube,Flash,3d,Papervision3d,Rubiks Cube,我试图在Flash&Papervision中创建一个魔方,我真的被困在这里了。我已经到了可以旋转任何一个立方体平面一次的地步了,但是在那之后…一切都乱七八糟,因为所有的局部坐标系都是乱七八糟的 我真的不知道该怎么办,有人能给我一些建议吗?我不是在寻找“阅读转换矩阵”,我知道我应该(我正在这么做),但我真的不确定要寻找什么。我的想法是,在每次旋转之后,我应该再次修复每个立方体的每个坐标系,但我不知道如何修复。任何关于我想要达到的目标(用文字)和原因的提示,我都非常感激 (使用cursorkeys+
(使用cursorkeys+A&D)也许您可以存储构成魔方的26个立方体中每个立方体的位置和方向,并在需要显示时计算坐标和颜色 例如,前面(无论您如何定义前面)的位置为(0,0,0)到(2,2,0)。我使用x,y和z;其中x从左到右,y从上到下,z在立方体中移动 方向为0-5,对应于每个小立方体表面的颜色 绘制魔方时,必须考虑用户相对于正面的位置
我不确定这会使旋转方法更简单,但至少你的立方体方向是正确的。也许你可以存储组成魔方的26个立方体中每个立方体的位置和方向,并在需要显示时计算坐标和颜色 例如,前面(无论您如何定义前面)的位置为(0,0,0)到(2,2,0)。我使用x,y和z;其中x从左到右,y从上到下,z在立方体中移动 方向为0-5,对应于每个小立方体表面的颜色 绘制魔方时,必须考虑用户相对于正面的位置
我不确定这会使旋转方法更简单,但至少你的立方体方向是正确的。我不想这么说,但矩阵很方便: 代码也被很好地注释了 另一件事会浮现在脑海中,如果矩阵是过度杀伤力 正在动态分组/重新租用DisplayObject3D实例 假设你有这样一些基本的东西:
var cubes:DisplayObject3D = new DisplayObject3D();
cubes.name = 'cubes';
for(var i:int = 0 ; i < boxDivisions ; i++){
var zBoxes:DisplayObject3D = new DisplayObject3D();
zBoxes.name = 'zBoxes_'+i;
for(var j:int = 0 ; j < boxDivisions; j++){
var yBoxes:DisplayObject3D = new DisplayObject3D();
for(var k:int = 0 ; k < boxDivisions ; k++){
var box:Cube = new Cube(materials,boxSize,boxSize,boxSize);
box.material = box.material.clone();
box.material.fillColor = Math.random() * 0xFFFFFF;
box.x = ((boxDivisions-1) - (k+1)) * (boxSize + boxSpacing);
box.name = 'box_'+i+''+j+''+k;
yBoxes.addChild(box,'box_'+i+''+j+''+k);
}
yBoxes.y = ((boxDivisions-1) - (j+1)) * (boxSize+boxSpacing);
yBoxes.name = 'yBoxes_'+j;
zBoxes.addChild(yBoxes);
}
zBoxes.z = ((boxDivisions-1) - (i+1)) * (boxSize+boxSpacing);
cubes.addChild(zBoxes);
}
basicView.scene.addChild(cubes);
var cubes:DisplayObject3D=newdisplayObject3D();
cubes.name='cubes';
对于(变量i:int=0;i
这些小组只会在少数情况下提供帮助,但不是所有情况,需要记住的是
您可以命名和分组DO3D
假设您单击并拖动一个小立方体:
乔治不想这么说,但矩阵很方便: 代码也被很好地注释了 另一件事会浮现在脑海中,如果矩阵是过度杀伤力 正在动态分组/重新租用DisplayObject3D实例 假设你有这样一些基本的东西:
var cubes:DisplayObject3D = new DisplayObject3D();
cubes.name = 'cubes';
for(var i:int = 0 ; i < boxDivisions ; i++){
var zBoxes:DisplayObject3D = new DisplayObject3D();
zBoxes.name = 'zBoxes_'+i;
for(var j:int = 0 ; j < boxDivisions; j++){
var yBoxes:DisplayObject3D = new DisplayObject3D();
for(var k:int = 0 ; k < boxDivisions ; k++){
var box:Cube = new Cube(materials,boxSize,boxSize,boxSize);
box.material = box.material.clone();
box.material.fillColor = Math.random() * 0xFFFFFF;
box.x = ((boxDivisions-1) - (k+1)) * (boxSize + boxSpacing);
box.name = 'box_'+i+''+j+''+k;
yBoxes.addChild(box,'box_'+i+''+j+''+k);
}
yBoxes.y = ((boxDivisions-1) - (j+1)) * (boxSize+boxSpacing);
yBoxes.name = 'yBoxes_'+j;
zBoxes.addChild(yBoxes);
}
zBoxes.z = ((boxDivisions-1) - (i+1)) * (boxSize+boxSpacing);
cubes.addChild(zBoxes);
}
basicView.scene.addChild(cubes);
var cubes:DisplayObject3D=newdisplayObject3D();
cubes.name='cubes';
对于(变量i:int=0;i
这些小组只会在少数情况下提供帮助,但不是所有情况,需要记住的是
您可以命名和分组DO3D