跳转至

maliang.three

字数 11 个   阅读时间不到 1 分钟   访问量

源代码:maliang/three/__init__.py

Extension package of maliang for simple 3D drawings

Provides:

  • Pure 3D implementation with no third-party packages
  • Simple 3D drawing and manipulation
  • Themed 3D drawings

模块:

类:

函数:

  • translate

    将一个三维空间中的点进行平移

  • rotate

    将一个三维空间中的点以一个点或线为参照进行旋转(实现方式为欧拉角)

  • scale

    将一个三维空间中的点以另一个点为缩放中心进行缩放

  • project

    将一个三维空间中的点投影到指定距离的正向平面上,并返回在该平面上的坐标

Canvas

Canvas(
    master: containers.Tk | containers.Toplevel | containers.Canvas | None = None,
    *,
    expand: typing.Literal["", "x", "y", "xy"] = "xy",
    auto_zoom: bool = False,
    keep_ratio: typing.Literal["min", "max"] | None = None,
    free_anchor: bool = False,
    **kwargs
)

Bases: containers.Canvas

Base class of 3D Canvas

方法:

  • space_sort

    Sort the contextual relationship between the spatial positions of the components

属性:

components property

components: tuple[Component, ...]

Return all Component of this Canvas

geometries property

geometries: tuple[Geometry, ...]

Return all Geometry of this Canvas

space_sort

space_sort() -> None

Sort the contextual relationship between the spatial positions of the components

Space

Space(
    master: containers.Tk | containers.Toplevel | containers.Canvas | None = None,
    *,
    expand: typing.Literal["", "x", "y", "xy"] = "xy",
    auto_zoom: bool = False,
    keep_ratio: typing.Literal["min", "max"] | None = None,
    free_anchor: bool = False,
    **kwargs
)

Bases: Canvas

A canvas where you can view 3D objects

Component

Component(*coordinates)

3D 对象基类

方法:

translate

translate(dx=0, dy=0, dz=0)

平移对象本身

  • dx: x 方向位移长度
  • dy: y 方向位移长度
  • dz: z 方向位移长度

rotate

rotate(dx=0, dy=0, dz=0, *, center=(0, 0, 0))
rotate(dx=0, *, axis)
rotate(dx=0, dy=0, dz=0, *, center=(0, 0, 0), axis=None)

旋转对象本身

  • dx: x 方向逆时针旋转弧度,或者绕旋转轴线的旋转弧度
  • dy: y 方向逆时针旋转弧度
  • dz: z 方向逆时针旋转弧度
  • center: 旋转中心,默认为原点
  • axis: 旋转轴线,无默认值

scale

scale(kx=1, ky=1, kz=1, *, center=None)

缩放对象本身

  • kx: x 方向缩放比例
  • ky: y 方向缩放比例
  • kz: z 方向缩放比例
  • center: 缩放中心,默认为几何中心

center

center()

几何中心

update

update() -> None

Update

Point

Point(
    canvas,
    coords,
    *,
    size=1,
    width=1,
    fill="#000000",
    outline="#000000",
    markuptext="",
    markupdelta=(0, 0),
    markupfont=(configs.Font.family, configs.Font.size),
    markupfill="#000000",
    markupjustify="center"
)

Bases: Component

  • canvas: 父画布
  • coords: 点的空间坐标
  • size: 点的大小
  • width: 点轮廓的宽度
  • fill: 点内部的填充颜色
  • outline: 点轮廓的颜色
  • markuptext: 标记文本
  • markupdelta: 标记文本显示位置的偏移量
  • markupfont: 标记文本字体
  • markupfill: 标记文本颜色
  • markupjustify: 标记文本多行对齐方式

方法:

  • update

    更新对象的显示

update

update()

更新对象的显示

Line

Line(canvas, point_start, point_end, *, width=1, fill='#000000')

Bases: Component

线

  • canvas: 父画布
  • point_start: 起点坐标
  • point_end: 终点坐标
  • width: 线的宽度
  • fill: 线的颜色

方法:

  • update

    更新对象的显示

update

update()

更新对象的显示

Plane

Plane(canvas, *points, width=1, fill='', outline='#000000')

Bases: Component

  • canvas: 父画布
  • points: 各点的空间坐标
  • width: 面轮廓的宽度
  • fill: 面内部的填充颜色
  • outline: 面轮廓的颜色

方法:

  • update

    更新对象的显示

update

update()

更新对象的显示

Text3D

Text3D(
    canvas,
    coords,
    text="",
    *,
    font=(configs.Font.family, configs.Font.size),
    justify="center",
    fill="#000000"
)

Bases: Component

三维文本

  • canvas: 父画布
  • coords: 点的空间坐标
  • text: 显示的文本
  • size: 点的大小
  • font: 点轮廓的宽度
  • justify: 多行文本对齐方式
  • fill: 点内部的填充颜色

方法:

  • update

    更新对象的显示

update

update()

更新对象的显示

Geometry

Geometry(canvas, *sides)

几何体

  • canvas: 父画布
  • sides: 组成几何体的面

方法:

  • translate

    平移几何体中的所有 3D 对象

  • rotate

    旋转几何体中的所有 3D 对象

  • scale

    缩放几何体中的所有 3D 对象

  • center

    几何中心

  • update

    更新几何体

  • append

    给几何体添加更多新的面

translate

translate(dx=0, dy=0, dz=0)

平移几何体中的所有 3D 对象

  • dx: x 方向位移长度
  • dy: y 方向位移长度
  • dz: z 方向位移长度

rotate

rotate(dx=0, dy=0, dz=0, *, center=(0, 0, 0))
rotate(dx=0, *, axis)
rotate(dx=0, dy=0, dz=0, *, center=(0, 0, 0), axis=None)

旋转几何体中的所有 3D 对象

  • dx: x 方向逆时针旋转弧度,或者绕旋转轴线的旋转弧度
  • dy: y 方向逆时针旋转弧度
  • dz: z 方向逆时针旋转弧度
  • center: 旋转中心,默认为原点
  • axis: 旋转轴线,无默认值

scale

scale(kx=1, ky=1, kz=1, *, center=None)

缩放几何体中的所有 3D 对象

  • kx: x 方向缩放比例
  • ky: y 方向缩放比例
  • kz: z 方向缩放比例
  • center: 缩放中心,默认为几何中心

center

center()

几何中心

update

update()

更新几何体

append

append(*sides)

给几何体添加更多新的面

  • sides: Side

Cuboid

Cuboid(
    canvas: engine.Canvas | engine.Space,
    x: float,
    y: float,
    z: float,
    length: float,
    width: float,
    height: float,
    *,
    boardwidth: int = 1,
    color_fill_up: str = "",
    color_fill_down: str = "",
    color_fill_left: str = "",
    color_fill_right: str = "",
    color_fill_front: str = "",
    color_fill_back: str = "",
    color_outline_up: str = "#000000",
    color_outline_down: str = "#000000",
    color_outline_left: str = "#000000",
    color_outline_right: str = "#000000",
    color_outline_front: str = "#000000",
    color_outline_back: str = "#000000"
)

Bases: engine.Geometry

Cuboid

Tetrahedron

Tetrahedron(
    canvas: engine.Canvas | engine.Space,
    point_1: tuple[float, float, float],
    point_2: tuple[float, float, float],
    point_3: tuple[float, float, float],
    point_4: tuple[float, float, float],
    *,
    boardwidth: int = 1,
    color_fill: tuple[str, str, str, str] = ("", "", "", ""),
    color_outline: tuple[str, str, str, str] = ("#000000", "#000000", "#000000", "#000000")
)

Bases: engine.Geometry

Tetrahedron

translate

translate(
    coordinate: tuple[float, float, float], dx: float = 0, dy: float = 0, dz: float = 0
) -> None

将一个三维空间中的点进行平移

  • coordinate: 点的空间坐标
  • dx: x 方向位移长度
  • dy: y 方向位移长度
  • dz: z 方向位移长度

rotate

rotate(coordinate, dx=0, dy=0, dz=0, *, center)
rotate(coordinate, dx=0, *, axis)
rotate(coordinate, dx=0, dy=0, dz=0, *, center, axis=None)

将一个三维空间中的点以一个点或线为参照进行旋转(实现方式为欧拉角)

  • coordinate: 点的空间坐标
  • dx: x 方向逆时针旋转弧度,或者绕旋转轴线的旋转弧度
  • dy: y 方向逆时针旋转弧度
  • dz: z 方向逆时针旋转弧度
  • center: 旋转中心的空间坐标
  • axis: 旋转轴线的空间坐标

scale

scale(coordinate, kx=1, ky=1, kz=1, *, center)

将一个三维空间中的点以另一个点为缩放中心进行缩放

  • coordinate: 点的空间坐标
  • kx: x 方向缩放比例
  • ky: y 方向缩放比例
  • kz: z 方向缩放比例
  • center: 缩放中心的空间坐标

project

project(coordinate, distance)

将一个三维空间中的点投影到指定距离的正向平面上,并返回在该平面上的坐标

  • coordinate: 点的空间坐标
  • distance: 正向平面的距离(平面正对着我们)