用css和html写的正方体,六面体的旋转和分离

32 篇文章 0 订阅

在这里插入图片描述
代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body{
            perspective: 1000px;
        }
        .box{
            position: relative;
            width: 300px;
            height: 300px;
            /* border: solid 2px black; */
            margin: 200px auto;
            transform: rotateY(30deg) rotateZ(10deg);
            transform-style: preserve-3d;
            transition: transform 4s linear;
            animation: bianx 4s linear infinite;
        }
        .box div{
            position: absolute;
            top: 0px;
            left: 0px;
            width: 300px;
            height: 300px;
            border: solid 2px rgb(255, 115, 0);
            background-color: chocolate;
            font-size: 20px;
            text-align: center;
            transition: transform 0.5s linear;
            line-height: 300px;
        }
        .shang{
            transform: rotateX(90deg) translateZ(150px);
        }
        .xia{
            transform: rotateX(-90deg) translateZ(150px);
        }
        .zuo{
            transform: rotateY(-90deg) translateZ(150px);
        }
        .you{
            transform: rotateY(90deg) translateZ(150px);
        }
        .qian{
            transform:translateZ(150px);
        }
        .hou{
            transform: /* rotateY(-180deg) */ translateZ(-150px);
        }
        .box:hover .shang{
            transform: rotateX(90deg) translateZ(200px);
        }
        .box:hover .xia{
            transform: rotateX(-90deg) translateZ(200px);
        }
        .box:hover .zuo{
            transform: rotateY(-90deg) translateZ(200px);
        }
        .box:hover .you{
            transform: rotateY(90deg) translateZ(200px);
        }
        .box:hover .qian{
            transform:translateZ(200px);
        }
        .box:hover .hou{
            transform: /* rotateY(-180deg) */ translateZ(-200px);
        }


        @keyframes bianx{
            0%{
                transform: rotate3d(-1,-1,-1,180deg);
            }
            100%{
                transform: rotate3d(1,1,1,180deg);
            }
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="shang"></div>
        <div class="xia"></div>
        <div class="zuo"></div>
        <div class="you"></div>
        <div class="qian"></div>
        <div class="hou"></div>
    </div>
</body>
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用OpenGL和C++编的可旋转六面体的示例代码: ```c++ #include <GL/glut.h> // 六面体的顶点坐标 GLfloat vertices[][3] = { {-1.0, -1.0, -1.0}, {1.0, -1.0, -1.0}, {1.0, 1.0, -1.0}, {-1.0, 1.0, -1.0}, {-1.0, -1.0, 1.0}, {1.0, -1.0, 1.0}, {1.0, 1.0, 1.0}, {-1.0, 1.0, 1.0} }; // 六面体的面 GLint faces[][4] = { {0, 1, 2, 3}, {1, 5, 6, 2}, {5, 4, 7, 6}, {4, 0, 3, 7}, {0, 4, 5, 1}, {3, 2, 6, 7} }; // 六面体的颜色 GLfloat colors[][3] = { {1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}, {1.0, 1.0, 0.0}, {1.0, 0.0, 1.0}, {0.0, 1.0, 1.0} }; // 六面体旋转的角度 GLfloat angleX = 0.0; GLfloat angleY = 0.0; // 绘制六面体 void drawCube() { for (int i = 0; i < 6; i++) { glBegin(GL_QUADS); glColor3fv(colors[i]); for (int j = 0; j < 4; j++) { glVertex3fv(vertices[faces[i][j]]); } glEnd(); } } // 显示回调函数 void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glRotatef(angleX, 1.0, 0.0, 0.0); glRotatef(angleY, 0.0, 1.0, 0.0); drawCube(); glutSwapBuffers(); } // 鼠标回调函数 void mouse(int button, int state, int x, int y) { if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { angleX += 5.0; } else if (button == GLUT_RIGHT_BUTTON && state == GLUT_DOWN) { angleY += 5.0; } glutPostRedisplay(); } // 初始化函数 void init() { glClearColor(0.0, 0.0, 0.0, 0.0); glEnable(GL_DEPTH_TEST); } // 主函数 int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(500, 500); glutCreateWindow("Rotating Cube"); glutDisplayFunc(display); glutMouseFunc(mouse); init(); glutMainLoop(); return 0; } ``` 在这个示例中,我们定义了一个六面体的顶点坐标、面和颜色。然后,我们使用OpenGL绘制六面体,并在回调函数中旋转六面体。我们使用glRotatef函数来旋转六面体,其中angleX和angleY分别存储了旋转的角度。在鼠标回调函数中,我们检测鼠标左键和右键的单击事件,并相应地调整角度。最后,我们使用glutMainLoop函数进入主循环,等待事件的发生。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值