多面体(Polyhedron)

多面体(Polyhedron)是三维几何中的一个重要概念,广泛应用于数学、计算机图形学、建筑设计等领域。以下是对多面体的详细介绍,包括定义、类型、表示方法以及一些相关的性质和应用。

定义

多面体是由多个平面(面)围成的三维立体。每个面都是一个多边形,且这些面通过边相连。多面体的基本特征包括:

  • 顶点(Vertices):多面体的角点。
  • 边(Edges):连接两个顶点的线段。
  • 面(Faces):多面体的平面部分,每个面都是一个多边形。

类型

多面体可以根据其几何特性分为以下几种类型:

  1. 凸多面体

    • 所有面都是凸多边形。
    • 任意两点之间的连线都在多面体内部。
    • 例如:立方体、四面体、正八面体等。
  2. 凹多面体

    • 至少有一个面是凹的。
    • 存在一些点之间的连线在多面体外部。
    • 例如:某些星形多面体。

表示

多面体可以用其顶点、边和面的集合来表示。以下是一些常见多面体的表示方法:

  • 立方体

    • 顶点:8个(例如,(0,0,0), (0,0,1), (0,1,0), (0,1,1), (1,0,0), (1,0,1), (1,1,0), (1,1,1))
    • 边:12条
    • 面:6个(每个面都是一个正方形)
  • 四面体

    • 顶点:4个(例如,(0,0,0), (1,0,0), (0,1,0), (0,0,1))
    • 边:6条
    • 面:4个(每个面都是一个三角形)

相关性质

  1. 欧拉公式

    • 对于任何简单多面体,顶点数 ( V )、边数 ( E ) 和面数 ( F ) 之间满足关系:
      [
      V - E + F = 2
      ]
    • 这个公式在多面体的拓扑性质中非常重要。
  2. 表面积和体积

    • 多面体的表面积和体积可以通过其面和顶点的几何特性进行计算。对于简单的多面体,通常可以使用公式进行计算。
  3. 对称性

    • 多面体的对称性是其几何特性的重要方面。许多多面体具有高度的对称性,例如正多面体(Platonic solids),它们的所有面都是相同的正多边形。

应用

多面体在多个领域中都有广泛的应用:

  • 计算机图形学:多面体用于建模三维物体,尤其是在游戏和动画中。
  • 建筑设计:多面体的几何特性可以用于设计复杂的建筑结构。
  • 数学研究:多面体是几何学和拓扑学中的重要研究对象,涉及到许多数学理论和问题。

总结

多面体是三维空间中由多个平面围成的立体,具有丰富的几何特性和广泛的应用。通过对多面体的研究,我们可以更好地理解三维空间的结构和性质。

接下来我们将深入探讨多面体的更多细节,包括其分类、性质、构造方法、以及在计算机图形学和其他领域的应用。

多面体的分类

除了凸多面体和凹多面体之外,多面体还可以根据其面和顶点的特性进行进一步分类:

  1. 正多面体(Platonic Solids)

    • 所有面都是相同的正多边形,且每个顶点的邻接面数相同。
    • 共有五种正多面体:
      • 正四面体(Tetrahedron)
      • 正立方体(Cube)
      • 正八面体(Octahedron)
      • 正十二面体(Dodecahedron)
      • 正二十面体(Icosahedron)
  2. 半正多面体(Archimedean Solids)

    • 顶点的排列是相同的,但面可以是不同的多边形。
    • 例如:截角立方体(Truncated Cube)、正方体(Cuboctahedron)等。
  3. 非凸多面体

    • 包含凹面或自交的面。
    • 例如:星形多面体(Star Polyhedra),如五角星形立方体。

多面体的性质

  1. 面、边、顶点的关系

    • 除了欧拉公式 ( V - E + F = 2 ) 外,面、边、顶点之间的关系也可以通过组合数学进行分析。
  2. 体积和表面积的计算

    • 对于简单的多面体,体积和表面积可以通过几何公式计算。例如,立方体的体积为 ( V = a^3 )(其中 ( a ) 是边长),表面积为 ( A = 6a^2 )。
    • 对于复杂的多面体,可以使用分割法(将多面体分割成简单的多面体)或数值积分方法进行计算。
  3. 对称性和群论

    • 多面体的对称性可以用群论来描述。正多面体具有高度的对称性,所有的旋转和反射都可以用对称群来表示。

多面体的构造方法

  1. 顶点法

    • 通过定义顶点的坐标来构造多面体。可以使用三维坐标系中的点来表示多面体的顶点。
  2. 边法

    • 通过定义边的连接关系来构造多面体。边可以用顶点的索引来表示。
  3. 面法

    • 通过定义面的多边形结构来构造多面体。每个面可以用其顶点的索引来表示。
  4. 参数化方法

    • 使用参数方程来描述多面体的形状。例如,球体可以用球坐标系来表示。

在计算机图形学中的应用

  1. 三维建模

    • 多面体是三维建模的基础,许多三维模型都是由多面体构成的。建模软件(如 Blender、Maya)使用多面体来创建复杂的三维形状。
  2. 碰撞检测

    • 在游戏和物理模拟中,多面体用于碰撞检测。通过简化的多面体(如包围盒)来加速碰撞检测算法。
  3. 光照和渲染

    • 多面体的表面可以用来计算光照和阴影效果。通过对多面体的表面进行纹理映射,可以实现更真实的视觉效果。
  4. 虚拟现实和增强现实

    • 在虚拟现实(VR)和增强现实(AR)中,多面体用于表示和渲染三维环境和对象。

在其他领域的应用

  1. 建筑设计

    • 多面体的几何特性可以用于建筑设计,创造出独特的建筑形状和结构。
  2. 化学和分子建模

    • 在化学中,分子的结构可以用多面体来表示,帮助理解分子的几何形状和性质。

在游戏开发中,多面体通常用于表示三维模型的几何形状。它们可以通过顶点、边和面的集合来表示。以下是如何在 Unity 中使用 C# 代码实现一个简单的多面体表示形式的示例。

多面体的表示

在 Unity 中,我们可以使用 Mesh 类来表示多面体。一个多面体的基本组成部分包括:

  • 顶点(Vertices):多面体的角点。
  • 三角形(Triangles):通过顶点索引定义的面。

示例:创建一个立方体

以下是一个简单的示例,展示如何在 Unity 中创建一个立方体的多面体表示。

1. 创建一个新的 C# 脚本

在 Unity 中,创建一个新的 C# 脚本,命名为 CubeMesh,并将以下代码粘贴到脚本中:

using UnityEngine;

[RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))]
public class CubeMesh : MonoBehaviour
{
    void Start()
    {
        CreateCube();
    }

    void CreateCube()
    {
        // 定义立方体的顶点
        Vector3[] vertices = new Vector3[]
        {
            new Vector3(-1, -1, -1), // 0
            new Vector3(1, -1, -1),  // 1
            new Vector3(1, 1, -1),   // 2
            new Vector3(-1, 1, -1),  // 3
            new Vector3(-1, -1, 1),  // 4
            new Vector3(1, -1, 1),   // 5
            new Vector3(1, 1, 1),    // 6
            new Vector3(-1, 1, 1)    // 7
        };

        // 定义立方体的三角形(面)
        int[] triangles = new int[]
        {
            0, 2, 1, 0, 3, 2, // 后面
            4, 5, 6, 4, 6, 7, // 前面
            0, 1, 5, 0, 5, 4, // 底面
            2, 3, 7, 2, 7, 6, // 顶面
            0, 4, 7, 0, 7, 3, // 左面
            1, 2, 6, 1, 6, 5  // 右面
        };

        // 创建 Mesh 对象
        Mesh mesh = new Mesh();
        mesh.vertices = vertices;
        mesh.triangles = triangles;

        // 计算法线
        mesh.RecalculateNormals();

        // 将 Mesh 赋值给 MeshFilter
        MeshFilter meshFilter = GetComponent<MeshFilter>();
        meshFilter.mesh = mesh;

        // 添加材质
        MeshRenderer meshRenderer = GetComponent<MeshRenderer>();
        meshRenderer.material = new Material(Shader.Find("Standard"));
    }
}
2. 在 Unity 中使用脚本
  1. 在 Unity 中创建一个新的空 GameObject。
  2. CubeMesh 脚本附加到该 GameObject。
  3. 运行场景,你将看到一个立方体被创建并显示在场景中。

代码说明

  • 顶点定义:我们定义了立方体的 8 个顶点,使用 Vector3 表示三维坐标。
  • 三角形定义:通过顶点索引定义了立方体的 6 个面,每个面由两个三角形组成。
  • Mesh 创建:创建一个 Mesh 对象,并将顶点和三角形赋值给它。
  • 法线计算:调用 RecalculateNormals 方法来计算法线,以便正确处理光照。
  • MeshFilter 和 MeshRenderer:将创建的 Mesh 赋值给 MeshFilter,并为 MeshRenderer 添加一个标准材质。

扩展

你可以根据需要扩展这个示例,创建其他类型的多面体,例如四面体、八面体等。只需调整顶点和三角形的定义即可。

总结

通过上述代码,你可以在 Unity 中创建一个简单的多面体(立方体)。

多面体(Polyhedron)的类的表示方式

在编程中,表示多面体(Polyhedron)通常涉及创建一个类来封装多面体的属性和行为。以下是一个简单的 C# 类示例,展示如何表示一个多面体,包括顶点、边和面。

C# 多面体类示例

using System;
using System.Collections.Generic;
using UnityEngine;

public class Polyhedron
{
    // 顶点列表
    public List<Vector3> Vertices { get; private set; }
    
    // 边列表
    public List<Edge> Edges { get; private set; }
    
    // 面列表
    public List<Face> Faces { get; private set; }

    // 构造函数
    public Polyhedron()
    {
        Vertices = new List<Vector3>();
        Edges = new List<Edge>();
        Faces = new List<Face>();
    }

    // 添加顶点
    public void AddVertex(Vector3 vertex)
    {
        Vertices.Add(vertex);
    }

    // 添加边
    public void AddEdge(int vertexIndex1, int vertexIndex2)
    {
        Edges.Add(new Edge(vertexIndex1, vertexIndex2));
    }

    // 添加面
    public void AddFace(List<int> vertexIndices)
    {
        Faces.Add(new Face(vertexIndices));
    }

    // 打印多面体信息
    public void PrintInfo()
    {
        Console.WriteLine("Vertices:");
        foreach (var vertex in Vertices)
        {
            Console.WriteLine(vertex);
        }

        Console.WriteLine("Edges:");
        foreach (var edge in Edges)
        {
            Console.WriteLine(edge);
        }

        Console.WriteLine("Faces:");
        foreach (var face in Faces)
        {
            Console.WriteLine(face);
        }
    }
}

// 边类
public class Edge
{
    public int VertexIndex1 { get; private set; }
    public int VertexIndex2 { get; private set; }

    public Edge(int vertexIndex1, int vertexIndex2)
    {
        VertexIndex1 = vertexIndex1;
        VertexIndex2 = vertexIndex2;
    }

    public override string ToString()
    {
        return $"({VertexIndex1}, {VertexIndex2})";
    }
}

// 面类
public class Face
{
    public List<int> VertexIndices { get; private set; }

    public Face(List<int> vertexIndices)
    {
        VertexIndices = vertexIndices;
    }

    public override string ToString()
    {
        return $"[{string.Join(", ", VertexIndices)}]";
    }
}

代码说明

  1. Polyhedron 类

    • 包含三个主要属性:VerticesEdgesFaces,分别表示多面体的顶点、边和面。
    • 提供了添加顶点、边和面的公共方法。
    • PrintInfo 方法用于打印多面体的详细信息。
  2. Edge 类

    • 表示一条边,包含两个顶点的索引。
    • 重写了 ToString 方法,以便于打印边的信息。
  3. Face 类

    • 表示一个面,包含一个顶点索引的列表。
    • 同样重写了 ToString 方法,以便于打印面的信息。

使用示例

你可以在 Unity 或其他 C# 环境中使用这个类来创建多面体。例如,创建一个立方体的代码如下:

public class ExampleUsage : MonoBehaviour
{
    void Start()
    {
        Polyhedron cube = new Polyhedron();

        // 添加立方体的顶点
        cube.AddVertex(new Vector3(0, 0, 0)); // V0
        cube.AddVertex(new Vector3(1, 0, 0)); // V1
        cube.AddVertex(new Vector3(1, 1, 0)); // V2
        cube.AddVertex(new Vector3(0, 1, 0)); // V3
        cube.AddVertex(new Vector3(0, 0, 1)); // V4
        cube.AddVertex(new Vector3(1, 0, 1)); // V5
        cube.AddVertex(new Vector3(1, 1, 1)); // V6
        cube.AddVertex(new Vector3(0, 1, 1)); // V7

        // 添加立方体的边
        cube.AddEdge(0, 1);
        cube.AddEdge(1, 2);
        cube.AddEdge(2, 3);
        cube.AddEdge(3, 0);
        cube.AddEdge(4, 5);
        cube.AddEdge(5, 6);
        cube.AddEdge(6, 7);
        cube.AddEdge(7, 4);
        cube.AddEdge(0, 4);
        cube.AddEdge(1, 5);
        cube.AddEdge(2, 6);
        cube.AddEdge(3, 7);

        // 添加立方体的面
        cube.AddFace(new List<int> { 0, 1, 2, 3 }); // 底面
        cube.AddFace(new List<int> { 4, 5, 6, 7 }); // 顶面
        cube.AddFace(new List<int> { 0, 1, 5, 4 }); // 前面
        cube.AddFace(new List<int> { 2, 3, 7, 6 }); // 后面
        cube.AddFace(new List<int> { 0, 3, 7, 4 }); // 左面
        cube.AddFace(new List<int> { 1, 2, 6, 5 }); // 右面

        // 打印立方体的信息
        cube.PrintInfo();
    }
}

代码说明

  1. 添加边:我们为立方体的每一条边调用 AddEdge 方法,使用顶点的索引来定义边。
  2. 添加面:我们为立方体的每一面调用 AddFace 方法,使用顶点的索引列表来定义面。
  3. 打印信息:最后,调用 PrintInfo 方法来输出立方体的顶点、边和面信息。

运行示例

将上述 ExampleUsage 类附加到 Unity 中的一个 GameObject 上,并运行场景,你将看到控制台输出立方体的详细信息,包括所有的顶点、边和面。

输出示例

控制台输出可能如下所示:

Vertices:
(0.0, 0.0, 0.0)
(1.0, 0.0, 0.0)
(1.0, 1.0, 0.0)
(0.0, 1.0, 0.0)
(0.0, 0.0, 1.0)
(1.0, 0.0, 1.0)
(1.0, 1.0, 1.0)
(0.0, 1.0, 1.0)
Edges:
(0, 1)
(1, 2)
(2, 3)
(3, 0)
(4, 5)
(5, 6)
(6, 7)
(7, 4)
(0, 4)
(1, 5)
(2, 6)
(3, 7)
Faces:
[0, 1, 2, 3]
[4, 5, 6, 7]
[0, 1, 5, 4]
[2, 3, 7, 6]
[0, 3, 7, 4]
[1, 2, 6, 5]

总结

通过上述代码,我们创建了一个 Polyhedron 类来表示多面体,并实现了一个简单的立方体示例。这个类可以扩展以支持更多的功能,例如计算体积、表面积、法线等。你可以根据需要进一步扩展这个类,以适应更复杂的多面体和应用场景。

当然!我们可以进一步扩展 Polyhedron 类,添加一些实用的功能,比如计算体积、表面积、法线等。以下是一些可能的扩展:

1. 计算体积

对于简单的多面体(如立方体、长方体等),可以使用公式直接计算体积。对于更复杂的多面体,可能需要使用更复杂的算法(如三角剖分)。这里我们以简单的立方体为例,假设我们知道它的顶点。

2. 计算表面积

表面积可以通过遍历所有面并计算每个面的面积来实现。对于多面体的每个面,我们可以使用顶点坐标计算其面积。

3. 计算法线

法线可以通过面上的顶点计算得出,通常使用叉积来计算。

扩展后的 Polyhedron

以下是扩展后的 Polyhedron 类示例,包含体积、表面积和法线的计算:

using System;
using System.Collections.Generic;
using UnityEngine;

public class Polyhedron
{
    public List<Vector3> Vertices { get; private set; }
    public List<Edge> Edges { get; private set; }
    public List<Face> Faces { get; private set; }

    public Polyhedron()
    {
        Vertices = new List<Vector3>();
        Edges = new List<Edge>();
        Faces = new List<Face>();
    }

    public void AddVertex(Vector3 vertex)
    {
        Vertices.Add(vertex);
    }

    public void AddEdge(int vertexIndex1, int vertexIndex2)
    {
        Edges.Add(new Edge(vertexIndex1, vertexIndex2));
    }

    public void AddFace(List<int> vertexIndices)
    {
        Faces.Add(new Face(vertexIndices));
    }

    public float CalculateVolume()
    {
        // 这里假设是一个简单的立方体,使用公式计算体积
        // 对于复杂的多面体,可能需要使用更复杂的算法
        if (Vertices.Count < 8) return 0; // 至少需要8个顶点
        Vector3 v0 = Vertices[0];
        Vector3 v1 = Vertices[1];
        Vector3 v2 = Vertices[2];
        Vector3 v3 = Vertices[4]; // 假设是立方体的一个顶点
        return Mathf.Abs(Vector3.Dot(Vector3.Cross(v1 - v0, v2 - v0), v3 - v0));
    }

    public float CalculateSurfaceArea()
    {
        float area = 0;
        foreach (var face in Faces)
        {
            area += CalculateFaceArea(face);
        }
        return area;
    }

    private float CalculateFaceArea(Face face)
    {
        if (face.VertexIndices.Count < 3) return 0; // 面至少需要3个顶点
        float area = 0;
        Vector3 v0 = Vertices[face.VertexIndices[0]];
        for (int i = 1; i < face.VertexIndices.Count - 1; i++)
        {
            Vector3 v1 = Vertices[face.VertexIndices[i]];
            Vector3 v2 = Vertices[face.VertexIndices[i + 1]];
            area += Vector3.Cross(v1 - v0, v2 - v0).magnitude / 2;
        }
        return area;
    }

    public Vector3 CalculateFaceNormal(Face face)
    {
        if (face.VertexIndices.Count < 3) return Vector3.zero; // 面至少需要3个顶点
        Vector3 v0 = Vertices[face.VertexIndices[0]];
        Vector3 v1 = Vertices[face.VertexIndices[1]];
        Vector3 v2 = Vertices[face.VertexIndices[2]];
        return Vector3.Cross(v1 - v0, v2 - v0).normalized; // 计算法线并归一化
    }

    public void PrintInfo()
    {
        Console.WriteLine("Vertices:");
        foreach (var vertex in Vertices)
        {
            Console.WriteLine(vertex);
        }

        Console.WriteLine("Edges:");
        foreach (var edge in Edges)
        {
            Console.WriteLine(edge);
        }

        Console.WriteLine("Faces:");
        foreach (var face in Faces)
        {
            Console.WriteLine(face);
        }

        Console.WriteLine($"Volume: {CalculateVolume()}");
        Console.WriteLine($"Surface Area: {CalculateSurfaceArea()}");
    }
}

```csharp
// 边类
public class Edge
{
    public int VertexIndex1 { get; private set; }
    public int VertexIndex2 { get; private set; }

    public Edge(int vertexIndex1, int vertexIndex2)
    {
        VertexIndex1 = vertexIndex1;
        VertexIndex2 = vertexIndex2;
    }

    public override string ToString()
    {
        return $"({VertexIndex1}, {VertexIndex2})";
    }
}

// 面类
public class Face
{
    public List<int> VertexIndices { get; private set; }

    public Face(List<int> vertexIndices)
    {
        VertexIndices = vertexIndices;
    }

    public override string ToString()
    {
        return $"[{string.Join(", ", VertexIndices)}]";
    }
}

代码说明

  1. Edge 类

    • Edge 类表示多面体的边,包含两个顶点的索引。
    • 提供了构造函数和 ToString 方法以便于输出。
  2. Face 类

    • Face 类表示多面体的面,包含一个顶点索引的列表。
    • 提供了构造函数和 ToString 方法以便于输出。

使用示例

我们可以在 Unity 中使用这个扩展后的 Polyhedron 类来创建一个立方体,并计算其体积和表面积。以下是一个完整的示例:

public class ExampleUsage : MonoBehaviour
{
    void Start()
    {
        Polyhedron cube = new Polyhedron();

        // 添加立方体的顶点
        cube.AddVertex(new Vector3(0, 0, 0)); // V0
        cube.AddVertex(new Vector3(1, 0, 0)); // V1
        cube.AddVertex(new Vector3(1, 1, 0)); // V2
        cube.AddVertex(new Vector3(0, 1, 0)); // V3
        cube.AddVertex(new Vector3(0, 0, 1)); // V4
        cube.AddVertex(new Vector3(1, 0, 1)); // V5
        cube.AddVertex(new Vector3(1, 1, 1)); // V6
        cube.AddVertex(new Vector3(0, 1, 1)); // V7

        // 添加立方体的边
        cube.AddEdge(0, 1);
        cube.AddEdge(1, 2);
        cube.AddEdge(2, 3);
        cube.AddEdge(3, 0);
        cube.AddEdge(4, 5);
        cube.AddEdge(5, 6);
        cube.AddEdge(6, 7);
        cube.AddEdge(7, 4);
        cube.AddEdge(0, 4);
        cube.AddEdge(1, 5);
        cube.AddEdge(2, 6);
        cube.AddEdge(3, 7);

        // 添加立方体的面
        cube.AddFace(new List<int> { 0, 1, 2, 3 }); // 底面
        cube.AddFace(new List<int> { 4, 5, 6, 7 }); // 顶面
        cube.AddFace(new List<int> { 0, 1, 5, 4 }); // 前面
        cube.AddFace(new List<int> { 2, 3, 7, 6 }); // 后面
        cube.AddFace(new List<int> { 0, 3, 7, 4 }); // 左面
        cube.AddFace(new List<int> { 1, 2, 6, 5 }); // 右面

        // 打印立方体的信息
        cube.PrintInfo();
    }
}

运行示例

将上述 ExampleUsage 类附加到 Unity 中的一个 GameObject 上,并运行场景,你将看到控制台输出立方体的详细信息,包括所有的顶点、边、面、体积和表面积。

输出示例

控制台输出可能如下所示:

Vertices:
(0.0, 0.0, 0.0)
(1.0, 0.0, 0.0)
(1.0, 1.0, 0.0)
(0.0, 1.0, 0.0)
(0.0, 0.0, 1.0)
(1.0, 0.0, 1.0)
(1.0, 1.0, 1.0)
(0.0, 1.0, 1.0)
Edges:
(0, 1)
(1, 2)
(2, 3)
(3, 0)
(4, 5)
(5, 6)
(6, 7)
(7, 4)
(0, 4)
(1, 5)
(2, 6)
(3, 7)
Faces:
[0, 1, 2, 3]
[4, 5, 6, 7]
[0, 1, 5, 4]
[2, 3, 7, 6]
[0, 3, 7, 4]
[1, 2, 6, 5]
Volume: 1
Surface Area: 6

输出解释

  • Vertices: 列出了立方体的所有顶点坐标。
  • Edges: 列出了立方体的所有边,显示了连接的顶点索引。
  • Faces: 列出了立方体的所有面,显示了构成每个面的顶点索引。
  • Volume: 计算出的立方体体积,立方体的体积为 1(边长为 1)。
  • Surface Area: 计算出的立方体表面积,立方体的表面积为 6(每个面面积为 1,总共 6 个面)。

总结

通过上述实现,我们创建了一个 Polyhedron 类,能够表示多面体并计算其基本属性。我们实现了以下功能:

  1. 添加顶点、边和面:可以动态地构建多面体的结构。
  2. 计算体积:对于简单的多面体(如立方体),可以直接计算体积。
  3. 计算表面积:遍历所有面并计算每个面的面积。
  4. 计算法线:为每个面计算法线,便于后续的光照和渲染计算。
  5. 打印信息:输出多面体的详细信息,便于调试和验证。

进一步扩展

你可以根据需要进一步扩展这个类,例如:

  • 支持更多形状:实现其他多面体的体积和表面积计算。
  • 添加变换功能:支持对多面体进行平移、旋转和缩放。
  • 可视化:在 Unity 中可视化多面体的形状,使用 MeshRenderer 和 MeshFilter 组件。
  • 碰撞检测:实现与其他物体的碰撞检测功能。

通过这些扩展,你可以将这个基础的多面体类发展成一个更强大的几何处理工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你一身傲骨怎能输

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值