Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小康2022
Magic_Cube
提交
067aa09d
Magic_Cube
项目概览
小康2022
/
Magic_Cube
通知
6
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Magic_Cube
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
067aa09d
编写于
2月 10, 2023
作者:
小康2022
👍
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
version 0.6
上级
e88b1753
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
67 addition
and
24 deletion
+67
-24
GUI.py
GUI.py
+4
-5
cube.py
cube.py
+62
-18
main.py
main.py
+1
-1
未找到文件。
GUI.py
浏览文件 @
067aa09d
...
...
@@ -2,13 +2,12 @@
图形界面部分
"""
from
math
import
pi
from
tkinter
import
Event
,
Menu
,
messagebox
import
tkintertools
as
tkt
from
configure
import
config
from
constants
import
SIDE
from
cube
import
Cube
from
cube
import
Magic
Cube
from
main
import
__author__
,
__update__
,
__version__
...
...
@@ -27,7 +26,7 @@ class Window:
self
.
init_bind
()
self
.
init_ui
()
self
.
event
=
[
None
,
None
]
self
.
cube
=
Cube
(
0
,
0
,
0
,
100
,
self
.
canvas
)
self
.
cube
=
MagicCube
(
self
.
canvas
,
40
)
self
.
root
.
mainloop
()
def
init_menu
(
self
)
->
None
:
...
...
@@ -50,7 +49,7 @@ class Window:
def
init_ui
(
self
)
->
None
:
""" UI初始化 """
self
.
info
=
self
.
canvas
.
create_text
(
SIDE
-
10
,
10
,
text
=
'
β: 0.000 γ
: 0.000'
,
anchor
=
'e'
,
font
=
(
'楷体'
,
12
))
SIDE
-
10
,
10
,
text
=
'
x: 0.000 y
: 0.000'
,
anchor
=
'e'
,
font
=
(
'楷体'
,
12
))
self
.
timer
=
self
.
canvas
.
create_text
(
SIDE
/
2
,
20
,
text
=
'00:00'
,
font
=
(
'楷体'
,
20
))
...
...
@@ -70,5 +69,5 @@ class Window:
0
,
r_y
/
config
[
'sensitivity'
],
-
r_x
/
config
[
'sensitivity'
])
self
.
cube
.
update
()
self
.
canvas
.
itemconfigure
(
self
.
info
,
text
=
'
β: %.3f γ: %.3f'
%
(
self
.
cube
.
β
/
pi
*
180
,
self
.
cube
.
γ
/
pi
*
180
))
self
.
info
,
text
=
'
x: %.3f y: %.3f'
%
(
self
.
cube
.
x
,
self
.
cube
.
y
))
self
.
event
=
[
event
.
x
,
event
.
y
]
cube.py
浏览文件 @
067aa09d
...
...
@@ -59,12 +59,15 @@ class Point:
class
Side
:
""" 面 """
def
__init__
(
self
,
canvas
:
tkt
.
tkinter
.
Canvas
,
color
:
str
,
*
args
:
tuple
[
float
,
float
,
float
])
->
None
:
def
__init__
(
self
,
canvas
:
tkt
.
tkinter
.
Canvas
,
color
:
str
,
dx
:
float
,
dy
:
float
,
*
args
:
tuple
[
float
,
float
,
float
])
->
None
:
self
.
points
=
[
Point
(
x
,
y
,
z
)
for
x
,
y
,
z
in
args
]
self
.
update_xs
()
self
.
dx
,
self
.
dy
=
dx
,
dy
self
.
canvas
=
canvas
p
=
[
i
+
SIDE
/
2
for
p
in
self
.
project
(
config
[
'distance'
])
for
i
in
p
]
self
.
polygon
=
canvas
.
create_polygon
(
*
p
,
fill
=
color
,
outline
=
'black'
)
p
=
[
i
+
(
dy
if
p
.
index
(
i
)
&
1
else
dx
)
for
p
in
self
.
project
(
config
[
'distance'
])
for
i
in
p
]
self
.
polygon
=
canvas
.
create_polygon
(
*
p
,
fill
=
color
,
outline
=
'black'
,
width
=
2
)
def
translate
(
self
,
dx
:
float
,
dy
:
float
,
dz
:
float
)
->
None
:
""" 三维平移 """
...
...
@@ -80,7 +83,7 @@ class Side:
def
update_xs
(
self
)
->
None
:
""" 更新self.xs """
self
.
xs
=
[
point
.
x
for
point
in
self
.
points
]
self
.
xs
=
min
(
point
.
x
for
point
in
self
.
points
)
def
project
(
self
,
dis
:
float
)
->
tuple
[
tuple
[
float
,
float
]]:
""" 二维投影 """
...
...
@@ -89,45 +92,86 @@ class Side:
def
update
(
self
)
->
None
:
""" 更新图像 """
self
.
update_xs
()
p
=
[
i
+
SIDE
/
2
for
p
in
self
.
project
(
config
[
'distance'
])
for
i
in
p
]
p
=
[
i
+
(
self
.
dy
if
p
.
index
(
i
)
&
1
else
self
.
dx
)
for
p
in
self
.
project
(
config
[
'distance'
])
for
i
in
p
]
self
.
canvas
.
coords
(
self
.
polygon
,
*
p
)
class
Cube
:
""" 正方体 """
def
__init__
(
self
,
x
:
float
,
y
:
float
,
z
:
float
,
r
:
float
,
canvas
:
tkt
.
Canvas
)
->
None
:
self
.
β
,
self
.
γ
=
0
,
0
# 旋转度
def
__init__
(
self
,
x
:
float
,
y
:
float
,
z
:
float
,
dx
:
float
,
dy
:
float
,
r
:
float
,
canvas
:
tkt
.
Canvas
)
->
None
:
self
.
canvas
=
canvas
p
=
[(
x
+
a
,
y
+
b
,
z
+
c
)
for
a
in
(
r
,
-
r
)
for
b
in
(
r
,
-
r
)
for
c
in
(
r
,
-
r
)]
p
=
[(
x
+
a
,
y
+
b
,
z
+
c
)
for
a
in
(
r
,
-
r
)
for
b
in
(
r
,
-
r
)
for
c
in
(
r
,
-
r
)]
self
.
sides
=
[
Side
(
canvas
,
'orange'
,
p
[
4
],
p
[
5
],
p
[
7
],
p
[
6
]),
# 后面
Side
(
canvas
,
'blue'
,
p
[
2
],
p
[
3
],
p
[
7
],
p
[
6
]),
# 左侧
Side
(
canvas
,
'yellow'
,
p
[
1
],
p
[
3
],
p
[
7
],
p
[
5
]),
# 上面
Side
(
canvas
,
'green'
,
p
[
0
],
p
[
1
],
p
[
5
],
p
[
4
]),
# 右侧
Side
(
canvas
,
'white'
,
p
[
0
],
p
[
4
],
p
[
6
],
p
[
2
]),
# 下面
Side
(
canvas
,
'red'
,
p
[
0
],
p
[
1
],
p
[
3
],
p
[
2
])]
# 前面
Side
(
canvas
,
'orange'
,
dx
,
dy
,
p
[
4
],
p
[
5
],
p
[
7
],
p
[
6
]),
# 后面
Side
(
canvas
,
'blue'
,
dx
,
dy
,
p
[
2
],
p
[
3
],
p
[
7
],
p
[
6
]),
# 左侧
Side
(
canvas
,
'yellow'
,
dx
,
dy
,
p
[
1
],
p
[
3
],
p
[
7
],
p
[
5
]),
# 上面
Side
(
canvas
,
'green'
,
dx
,
dy
,
p
[
0
],
p
[
1
],
p
[
5
],
p
[
4
]),
# 右侧
Side
(
canvas
,
'white'
,
dx
,
dy
,
p
[
0
],
p
[
4
],
p
[
6
],
p
[
2
]),
# 下面
Side
(
canvas
,
'red'
,
dx
,
dy
,
p
[
0
],
p
[
1
],
p
[
3
],
p
[
2
])]
# 前面
self
.
update_xs
()
def
rotate
(
self
,
dx
:
float
,
dy
:
float
,
dz
:
float
)
->
None
:
""" 旋转 """
self
.
β
+=
dy
self
.
γ
+=
dz
for
side
in
self
.
sides
:
side
.
rotate
(
dx
,
dy
,
dz
)
self
.
update_xs
()
def
translate
(
self
,
dx
:
float
,
dy
:
float
,
dz
:
float
)
->
None
:
""" 平移 """
for
side
in
self
.
sides
:
side
.
translate
(
dx
,
dy
,
dz
)
self
.
update_xs
()
def
update
(
self
)
->
None
:
""" 更新立方体 """
self
.
update_xs
()
for
side
in
self
.
sides
:
side
.
update
()
self
.
lift
()
def
update_xs
(
self
)
->
None
:
""" 更新self.xs """
self
.
xs
=
min
(
side
.
xs
for
side
in
self
.
sides
)
def
lift
(
self
)
->
None
:
""" 前后关系 """
for
side
in
sorted
(
self
.
sides
,
key
=
lambda
s
:
min
(
s
.
xs
)
):
for
side
in
sorted
(
self
.
sides
,
key
=
lambda
s
:
s
.
xs
):
self
.
canvas
.
lift
(
side
.
polygon
)
class
MagicCube
:
""" 魔方类 """
def
__init__
(
self
,
canvas
:
tkt
.
Canvas
,
r
:
float
,
n
:
int
=
3
)
->
None
:
self
.
n
=
n
self
.
r
=
r
k
=
(
-
2
*
r
,
0
,
2
*
r
)
self
.
x
,
self
.
y
=
0
,
0
self
.
cubes
=
[
Cube
(
a
,
b
,
c
,
SIDE
/
2
,
SIDE
/
2
,
r
,
canvas
)
for
a
in
k
for
b
in
k
for
c
in
k
]
def
rotate
(
self
,
dx
:
float
,
dy
:
float
,
dz
:
float
)
->
None
:
""" 旋转 """
self
.
x
+=
dz
/
pi
*
180
self
.
y
+=
dy
/
pi
*
180
for
cube
in
self
.
cubes
:
cube
.
rotate
(
dx
,
dy
,
dz
)
def
translate
(
self
,
dx
:
float
,
dy
:
float
,
dz
:
float
)
->
None
:
""" 平移 """
for
cube
in
self
.
cubes
:
cube
.
translate
(
dx
,
dy
,
dz
)
def
update
(
self
)
->
None
:
""" 更新 """
for
cube
in
self
.
cubes
:
cube
.
update
()
self
.
lift
()
def
lift
(
self
)
->
None
:
""" 更新前后关系 """
for
cube
in
sorted
(
self
.
cubes
,
key
=
lambda
c
:
c
.
xs
):
cube
.
lift
()
main.py
浏览文件 @
067aa09d
...
...
@@ -2,7 +2,7 @@
程序入口
"""
__version__
=
'0.
5
'
__version__
=
'0.
6
'
__author__
=
'小康2022'
__update__
=
'2023/02/10'
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录