圆柱电池极片卷绕:等速螺线的弧长、圆心角计算

锂电联盟会长 2025-03-22 09:00

点击左上角“锂电联盟会长”,即可关注!

等速螺线 

在圆柱形锂离子电池的设计与制造中,极片以卷绕的方式组装在电池内部。这种紧凑的结构能够在有限的空间内实现最大的极片面积,从而提升电池的容量和能量密度。而极片卷绕的截面轨迹,在理想情况下,可以用一种特殊的曲线——等速螺线(也称为阿基米德螺线)来精确描述。
等速螺线在极坐标下数学表达式:r = a + bθ
其中:
r:代表极径,即从螺线的中心(卷绕中心)到曲线上任意一点的距离。
a: 代表螺线的起始极径,可以理解为卷绕开始时的初始半径。
b:代表单位圆心角下极径的增加长度,决定了螺线扩张的速率。每当极角 θ 增加一个单位弧度,极径 r 就增加 b。
 θ:代表极角,是描述点在极坐标系中角度位置的变量。

弧长计算:
图片
经过三角换元后得到弧长最终表达式(换元过程参考在知乎的回答question/27384632/answer/1450765671):

图片

当已知弧长 S需要求解终点圆心角theta-solution 时,我们需要解方程 S = L(a, b, theta-solution) - L(a, b, θ_start)。由于上述弧长表达式较为复杂,直接反解 θ_solution 没有初等函数形式的解,因此通常需要采用数值法进行求解,如牛顿迭代法等。
Matlab代码实现

已知弧长求解角度:
function [theta_solution,r_solution]=solve_theta(a,b,theta_start,s_know)= @(a,b,theta) (b.^2*theta+a.*b)./(2*b.^2).*sqrt(b.^2*theta.^2+2*a.*b.*theta+a.^2+b.^2)...    +b./2.*log(abs(b.*theta+a+sqrt(b.^2*theta.^2+2*a.*b.*theta+a.^2+b.^2)));arc_length =@(a,b,theta_start,theta_end) L(a,b,theta_end)-L(a,b,theta_start);theta_guess = s_know / sqrt((a + b*0)^2 + b^2);options = optimset('TolX',1e-6);theta_solution = fzero(@(theta) arc_length(a,b,theta_start,theta) - s_know, theta_guess, options);r_solution=a+b*theta_solution;%% 绘图theta_plot=linspace(theta_start,theta_solution,2000);r_plot=a+b.*theta_plot;x_plot=r_plot.*cos(theta_plot);y_plot=r_plot.*sin(theta_plot);figureplot(x_plot,y_plot,'-',LineWidth=2)xlabel('x');ylabel('y');maxR = max(r_plot);xlim([-maxR*1.1, maxR*1.1]);ylim([-maxR*1.1, maxR*1.1]);axis square;grid on;title(sprintf('theta_{solution}=%.3f(%.2f pi) r_{solution}=%.3f',theta_solution,theta_solution/pi,r_solution))end

已知角度求解弧长:
function [arc_length]=solve_arc(a,b,theta_start,theta_end)= @(a,b,theta) (b.^2*theta+a.*b)./(2*b.^2).*sqrt(b.^2*theta.^2+2*a.*b.*theta+a.^2+b.^2)...    +b./2.*log(abs(b.*theta+a+sqrt(b.^2*theta.^2+2*a.*b.*theta+a.^2+b.^2)));arc_length = L(a,b,theta_end)-L(a,b,theta_start);%% 绘图theta_plot=linspace(theta_start,theta_end,2000);r_plot=a+b.*theta_plot;x_plot=r_plot.*cos(theta_plot);y_plot=r_plot.*sin(theta_plot);figureplot(x_plot,y_plot,'-',LineWidth=2)xlabel('x');ylabel('y');maxR = max(r_plot);xlim([-maxR*1.1, maxR*1.1]);ylim([-maxR*1.1, maxR*1.1]);axis square;grid on;title(sprintf('arc_{length}=%.3f',arc_length));end
运行效果如下:
a=0;b=0.005;theta_start=0;s_know=9.883;[theta_solution,r_solution]=solve_theta(a,b,theta_start,s_know);theta_end=20*pi;[arc_length]=solve_arc(a,b,theta_start,theta_end);
图片

图片


有了上述两个函数之后,就可以方便计算多极耳位置与焊线位置等参数。
html实现

由于js没有matlab中的求零点函数,已知弧长反解角度时采用Newton(牛顿)迭代法求解。
其基本迭代表达式为:
图片
function solveThetaNewton(a, b, theta_start, s_know) {  // 定义 f(theta),要求解 f(theta)= 0,即满足 arc_length(a, b, theta_start, theta) - s_know = 0  function f(theta) {    return arc_length(a, b, theta_start, theta) - s_know;  }  // 定义 f(theta) 关于 theta 的导数 f'(theta)  // 由于 L(a, b, theta) 的导数正好是积分所用的被积函数,所以:  // f′(theta) = d/dtheta L(a, b, theta) = sqrt(b^2 * theta^2 + 2*a*b*theta + a^2 + b^2)  function fp(theta) {    return Math.sqrt(b * b * theta * theta + 2 * a * b * theta + a * a + b * b);  }  // 初始化 theta 的猜测值  // 当 theta 较小时,arc_length(a,b, theta_start, theta) 近似为 fp(0)*theta,  // 因此可取 theta ≈ s_know / fp(0) 作为初始值  let theta = s_know / fp(0);  const tolerance = 1e-6;    // 收敛容限,迭代停止条件:|f(theta)| < tolerance  const maxIterations = 100// 最大迭代次数  let iteration = 0;    // 牛顿迭代法:theta_new = theta_old - f(theta_old) / fp(theta_old)  while (Math.abs(f(theta)) > tolerance && iteration < maxIterations) {    theta = theta - f(theta) / fp(theta);    iteration++;  }  return theta;}

完整代码:
html><html><head>  <meta charset="UTF-8">  <title>Spiral Calculationstitle>    <meta name="viewport" content="width=device-width, initial-scale=1.0">  <script src="https://cdn.plot.ly/plotly-latest.min.js">script>  <style>    htmlbody {      height100%;      margin0;    }    /* 标题栏样式 */    .header {      background#007bff;      color: white;      font-size24px;      text-align: center;      padding15px;      box-sizing: border-box;    }    /* 整个容器充满视窗,并按垂直方向排列 */    .container {      heightcalc(100vh - 65px); /* 减去标题栏高度 */      width100%;      display: flex;      flex-direction: column;    }    /* 每个功能模块:带有左右参数与图形的水平两栏 */    .section {      overflow: auto;      border1px solid #ccc;      box-sizing: border-box;    }    /* 初始高度各占50% */    #section1#section2 {      height50%;    }    /* 横向两栏布局 */    .horizontal {      display: flex;      flex-direction: row;      flex-wrap: wrap;    }    .param-col.plot-col {      flex1;      padding15px;      box-sizing: border-box;      min-width250px;    }    .param-col {      border-right1px solid #ccc;    }    /* 小屏幕时调整为纵向布局 */    @media (max-width600px) {      .horizontal {        flex-direction: column;      }      .param-col.plot-col {        width100%;        border-right: none;        border-bottom1px solid #ccc;      }    }    /* 分隔条样式 */    .splitter {      height5px;      background#ccc;      cursor: row-resize;    }    .input-group {      margin-bottom10px;    }    label {      display: inline-block;      width150px;      text-align: right;      margin-right10px;    }    input[type="text"]input[type="number"] {      width150px;      padding5px;      border-radius3px;      border1px solid #ddd;    }    button {      padding8px 15px;      margin-top10px;      border: none;      border-radius3px;      background-color#007bff;      color: white;      cursor: pointer;    }    button:hover {      background-color#0056b3;    }    .output {      margin-top10px;      font-weight: bold;    }    .plotly-graph-div {      width100%;      heightcalc(100% - 40px); /* 留出部分高度给标题和按钮 */    }  style>head><body>    <div class="header">      求解等速螺线相关参数 (r=a+bθ)  div>    <div class="container">        <div id="section1" class="section horizontal">      <div class="param-col">        <h2>Solve for Thetah2>        <div class="input-group">          <label for="theta_a">a:label>          <input type="text" id="theta_a" value="0">        div>        <div class="input-group">          <label for="theta_b">b:label>          <input type="text" id="theta_b" value="0.005">        div>        <div class="input-group">          <label for="theta_start">theta_start:label>          <input type="text" id="theta_start" value="0">        div>        <div class="input-group">          <label for="s_know">arc_length_know:label>          <input type="text" id="s_know" value="10">        div>        <div class="input-group">          <label for="theta_numPoints">Plot Points:label>          <input type="text" id="theta_numPoints" value="2000">        div>        <button onclick="calculateTheta()">Calculate Thetabutton>        <div class="output">          Theta Solution: <span id="theta_solution_output">span>        div>        <div class="output">          Radius Solution: <span id="r_solution_output">span>        div>      div>      <div class="plot-col">        <div id="theta_plot" class="plotly-graph-div">div>                <button onclick="exportData('theta_plot')">Export Databutton>      div>    div>        <div id="splitter" class="splitter">div>        <div id="section2" class="section horizontal">      <div class="param-col">        <h2>Solve for Arc Lengthh2>        <div class="input-group">          <label for="arc_a">a:label>          <input type="text" id="arc_a" value="0">        div>        <div class="input-group">          <label for="arc_b">b:label>          <input type="text" id="arc_b" value="0.005">        div>        <div class="input-group">          <label for="arc_start">theta_start:label>          <input type="text" id="arc_start" value="0">        div>        <div class="input-group">          <label for="arc_end">theta_end:label>          <input type="text" id="arc_end" value="20*Math.PI">        div>        <div class="input-group">          <label for="arc_numPoints">Plot Points:label>          <input type="text" id="arc_numPoints" value="2000">        div>        <button onclick="calculateArcLength()">Calculate Arc Lengthbutton>        <div class="output">          Arc Length: <span id="arc_length_output">span>        div>      div>      <div class="plot-col">        <div id="arc_plot" class="plotly-graph-div">div>                <button onclick="exportData('arc_plot')">Export Databutton>      div>    div>  div>    <script>    // 全局对象,用于存储每个绘图区域的导出数据    let exportDataMap = {};    // --- 数值求解与绘图相关函数 ---    // 对用户输入表达式求值(支持比如 "2*Math.PI")    function evaluateInput(expression) {      try {        return eval(expression);      } catch (error) {        console.error("Invalid input:", error);        alert("Invalid input: Please enter valid numbers or mathematical expressions.");        return NaN;      }    }    // 定义 L(a, b, theta) 为积分原函数    function L(a, b, theta) {      const sqrtPart = Math.sqrt(b * b * theta * theta + 2 * a * b * theta + a * a + b * b);      const logPart = Math.log(Math.abs(b * theta + a + sqrtPart));      return ((b * b * theta + a * b) / (2 * b * b)) * sqrtPart + (b / 2) * logPart;    }    // 弧长计算: arc_length = L(a, b, theta_end) - L(a, b, theta_start)    function arc_length(a, b, theta_start, theta_end) {      return L(a, b, theta_end) - L(a, b, theta_start);    }    // 使用 Newton 法求解 f(theta)=arc_length(a,b,theta_start,theta)-s_know = 0    function solveThetaNewton(a, b, theta_start, s_know) {      function f(theta) {        return arc_length(a, b, theta_start, theta) - s_know;      }      // f'(theta) = d/dtheta L(a, b, theta) = sqrt(b^2*theta^2 + 2*a*b*theta + a^2 + b^2)      function fp(theta) {        return Math.sqrt(b * b * theta * theta + 2 * a * b * theta + a * a + b * b);      }      // 初始猜测:使用 s_know 除以 fp(0)      let theta = s_know / fp(0);      const tolerance = 1e-6;      const maxIterations = 500;      let iteration = 0;      while (Math.abs(f(theta)) > tolerance && iteration < maxIterations) {        theta = theta - f(theta) / fp(theta);        iteration++;      }      return theta;    }    function calculateTheta() {      const a = evaluateInput(document.getElementById('theta_a').value);      const b = evaluateInput(document.getElementById('theta_b').value);      const theta_start = evaluateInput(document.getElementById('theta_start').value);      const s_know = evaluateInput(document.getElementById('s_know').value);      const numPoints = evaluateInput(document.getElementById('theta_numPoints').value);      if (isNaN(a) || isNaN(b) || isNaN(theta_start) || isNaN(s_know) || isNaN(numPoints)) return;      const theta_solution = solveThetaNewton(a, b, theta_start, s_know);      const r_solution = a + b * theta_solution;      document.getElementById('theta_solution_output').textContent =        theta_solution.toFixed(3) + ' (' + (theta_solution / Math.PI).toFixed(2) + ' π)';      document.getElementById('r_solution_output').textContent = r_solution.toFixed(3);      drawSpiral('theta_plot', a, b, theta_start, theta_solution, numPoints);    }    function calculateArcLength() {      const a = evaluateInput(document.getElementById('arc_a').value);      const b = evaluateInput(document.getElementById('arc_b').value);      const theta_start = evaluateInput(document.getElementById('arc_start').value);      const theta_end = evaluateInput(document.getElementById('arc_end').value);      const numPoints = evaluateInput(document.getElementById('arc_numPoints').value);      if (isNaN(a) || isNaN(b) || isNaN(theta_start) || isNaN(theta_end) || isNaN(numPoints)) return;      const length = arc_length(a, b, theta_start, theta_end);      document.getElementById('arc_length_output').textContent = length.toFixed(3);      drawSpiral('arc_plot', a, b, theta_start, theta_end, numPoints);    }    // 绘制螺旋曲线:将极坐标转换为直角坐标,并调用 Plotly 绘图    // 同时将绘图数据保存到 exportDataMap 中    function drawSpiral(plotDivId, a, b, thetaStart, thetaEnd, numPoints) {      const theta_values = [];      const r_values = [];      const x_values = [];      const y_values = [];      for (let i = 0; i < numPoints; i++) {        const theta = thetaStart + (thetaEnd - thetaStart) * i / (numPoints - 1);        const r = a + b * theta;        theta_values.push(theta);        r_values.push(r);        x_values.push(r * Math.cos(theta));        y_values.push(r * Math.sin(theta));      }      // 保存数据用于导出      exportDataMap[plotDivId] = {        theta: theta_values,        r: r_values,        x: x_values,        y: y_values      };      const data = [{        x: x_values,        y: y_values,        mode'lines',        type'scatter',        line: { width2 }      }];      const layout = {        xaxis: {          title'x',          scaleanchor'y',          scaleratio1        },        yaxis: { title'y' },        title`Spiral (a=${a}, b=${b})`,        autosizetrue,        margin: { l50r50b50t70pad4 },        shapes: [{          type'circle',          xref'x',          yref'y',          x0: -Math.max(...r_values) * 1.1,          y0: -Math.max(...r_values) * 1.1,          x1Math.max(...r_values) * 1.1,          y1Math.max(...r_values) * 1.1,          opacity0.2,          line: { color'lightgray'width1dash'dot' }        }]      };      Plotly.newPlot(plotDivId, data, layout, { responsivetrue });    }        // 导出数据函数,生成 CSV 文件格式:4 列(theta, r, x, y)    function exportData(plotDivId) {      const dataObj = exportDataMap[plotDivId];      if (!dataObj) {        alert("当前没有可导出的数据!");        return;      }      const { theta, r, x, y } = dataObj;      let csvContent = "data:text/csv;charset=utf-8,";      csvContent += "theta,r,x,y\n"// CSV 表头      const numRows = theta.length;      for (let i = 0; i < numRows; i++) {        csvContent += `${theta[i]},${r[i]},${x[i]},${y[i]}\n`;      }      // 创建下载链接并自动触发下载动作      const encodedUri = encodeURI(csvContent);      const link = document.createElement("a");      link.setAttribute("href", encodedUri);      link.setAttribute("download"`${plotDivId}_data.csv`);      document.body.appendChild(link); // 需要将链接添加到DOM中才能触发点击      link.click();      document.body.removeChild(link);    }        // --- 分隔条(上下模块高度调节)实现 ---    document.addEventListener("DOMContentLoaded"function() {      const splitter = document.getElementById("splitter");      const section1 = document.getElementById("section1");      const section2 = document.getElementById("section2");      const container = document.querySelector(".container");      let isDragging = false;            splitter.addEventListener("mousedown"function(e) {        isDragging = true;        e.preventDefault();      });            document.addEventListener("mousemove"function(e) {        if (!isDragging) return;        const containerRect = container.getBoundingClientRect();        const offsetY = e.clientY - containerRect.top;        const minHeight = 100// 最小高度限制        if (offsetY < minHeight || offsetY > containerRect.height - minHeight - splitter.offsetHeight) {          return;        }        section1.style.height = offsetY + "px";        section2.style.height = (containerRect.height - offsetY - splitter.offsetHeight) + "px";      });            document.addEventListener("mouseup"function(e) {        if (isDragging) {          isDragging = false;        }      });    });  script>body>html>

将上述html代码存入记事本,将后缀更改为.html即可使用。
效果如下:
图片

导出数据为:[r,theta,x,y]


代码已上传github

https://github.com/kongxiuyichuang/Calculation-Archimedean-spiral.git

END
锂电联盟会长向各大团队诚心约稿,课题组最新成果、方向总结、推广等皆可投稿,请联系:邮箱libatteryalliance@163.com或微信Ydnxke。
相关阅读:
锂离子电池制备材料/压力测试
锂电池自放电测量方法:静态与动态测量法
软包电池关键工艺问题!
一文搞懂锂离子电池K值!
工艺,研发,机理和专利!软包电池方向重磅汇总资料分享!
揭秘宁德时代CATL超级工厂!
搞懂锂电池阻抗谱(EIS)不容易,这篇综述值得一看!
锂离子电池生产中各种问题汇编
锂电池循环寿命研究汇总(附60份精品资料免费下载)

锂电联盟会长 研发材料,应用科技
评论 (0)
  • 人形机器人产业节奏预估:2024年原型机元年,2025年小规模量产元年。当宇树科技H1人形机器人以灵动的手部动作在春晚舞台上演创意融合舞蹈《秧Bot》,舞出"中国智造"时,电视机前十几亿观众第一次深刻意识到:那个需要仰望波士顿动力的时代正在落幕。*图源:宇树科技短短数周后,宇树G1机器人又用一段丝滑的街舞在网络收割亿级播放量,钢铁之躯跳出赛博朋克的浪漫。2月11日,宇树科技在其京东官方旗舰店上架了两款人形机器人产品,型号分别为Unitree H1和G1。2月12日,9.9万元的G1人形机器人首批
    艾迈斯欧司朗 2025-03-22 21:05 99浏览
  • 文/Leon编辑/cc孙聪颖‍去年,百度公关部副总裁璩静的争议言论闹得沸沸扬扬,最终以道歉离职收场。时隔一年,百度的高管又出事了。近日,“百度副总裁谢广军女儿开盒孕妇”事件登上热搜,持续发酵,引起网友对百度数据安全性的怀疑。3月19日晚间,百度正式发布声明,表示坚决谴责窃取和公开他人隐私的网络暴力行为,同时强调,百度内部实施匿名化、假名化处理,经查验,泄露数据并非来自百度,而是海外的社工库,“当事人承认家长给她数据库”为不实信息,针对相关谣言百度已经向公安机关报案。然而,并非所有网友都对这份声明
    华尔街科技眼 2025-03-21 21:21 78浏览
  • 无论你是刚步入职场的新人,还是已经有几年经验的职场老手,培养领导力都是职业发展中一个至关重要的环节。拥有良好的领导能力不仅能让你从人群中脱颖而出,也能让你在团队中成为一个值得信赖、富有影响力的核心成员。什么是领导力?领导力并不仅仅意味着“当老板”或者“发号施令”。它更多地是一种能够影响他人、激发团队潜能,并带领大家实现目标的能力。一位优秀的领导者需要具备清晰的沟通能力、解决问题的能力,以及对人心的深刻理解。他们知道如何激励人心,如何在压力下保持冷静,并能在关键时刻做出正确的决策。如何培养领导力?
    优思学院 2025-03-23 12:24 66浏览
  • 在人工智能与物联网技术蓬勃发展的今天,语音交互已成为智能设备的重要功能。广州唯创电子推出的WT3000T8语音合成芯片凭借其高性能、低功耗和灵活的控制方式,广泛应用于智能家居、工业设备、公共服务终端等领域。本文将从功能特点、调用方法及实际应用场景入手,深入解析这款芯片的核心技术。一、WT3000T8芯片的核心功能WT3000T8是一款基于UART通信的语音合成芯片,支持中文、英文及多语种混合文本的实时合成。其核心优势包括:高兼容性:支持GB2312/GBK/BIG5/UNICODE编码,适应不同
    广州唯创电子 2025-03-24 08:42 101浏览
  •        当今社会已经步入了知识经济的时代,信息大爆炸,新鲜事物层出不穷,科技发展更是一日千里。知识经济时代以知识为核心生产要素,通过创新驱动和人力资本的高效运转推动社会经济发展。知识产权(IP)应运而生,成为了知识经济时代竞争的核心要素,知识产权(Intellectual Property,IP)是指法律赋予人们对‌智力创造成果和商业标识等无形财产‌所享有的专有权利。其核心目的是通过保护创新和创意,激励技术进步、文化繁荣和公平竞争,同时平衡公共利益与
    广州铁金刚 2025-03-24 10:46 23浏览
  • 核心板简介创龙科技 SOM-TL3562 是一款基于瑞芯微 RK3562J/RK3562 处理器设计的四核 ARM C ortex-A53 + 单核 ARM Cortex-M0 全国产工业核心板,主频高达 2.0GHz。核心板 CPU、R OM、RAM、电源、晶振等所有元器件均采用国产工业级方案,国产化率 100%。核心板通过 LCC 邮票孔 + LGA 封装连接方式引出 MAC、GMAC、PCIe 2.1、USB3.0、 CAN、UART、SPI、MIPI CSI、MIPI
    Tronlong 2025-03-24 09:59 103浏览
  • 今年全国两会期间,“体重管理”和“育儿”整体配套政策引发了持久广泛关注。从“吃”到“养”,都围绕着国人最为关心的话题:健康。大家常说“病从口入”,在吃这件事上,过去大家可能更多是为了填饱肚子,如今,消费者从挑选食材到厨电都贯彻着健康的宗旨,吃得少了更要吃得好了。这也意味着在新消费趋势下,谁能抓住众人的心头好,就能带起众人的购买欲望,才能在新一轮竞争中脱颖而出。作为家电行业的风向标,在2025年中国家电及消费电子博览会(AWE)上,这两个话题也被媒体和公众频繁提及。深耕中国厨房三十余年的苏泊尔再次
    华尔街科技眼 2025-03-22 11:42 46浏览
  • 在智慧城市领域中,当一个智慧路灯项目因信号盲区而被迫增设数百个网关时,当一个传感器网络因入网设备数量爆增而导致系统通信失效时,当一个智慧交通系统因基站故障而导致交通瘫痪时,星型网络拓扑与蜂窝网络拓扑在构建广覆盖与高节点数物联网网络时的局限性便愈发凸显,行业内亟需一种更高效、可靠与稳定的组网技术以满足构建智慧城市海量IoT网络节点的需求。星型网络的无线信号覆盖范围高度依赖网关的部署密度,同时单一网关的承载设备数量有限,难以支撑海量IoT网络节点的城市物联系统;而蜂窝网络的无线信号覆盖范围同样高度依
    华普微HOPERF 2025-03-24 17:00 82浏览
  • 文/Leon编辑/cc孙聪颖‍“无AI,不家电”的浪潮,正在席卷整个家电行业。中国家电及消费电子博览会(AWE2025)期间,几乎所有的企业,都展出了搭载最新AI大模型的产品,从电视、洗衣机、冰箱等黑白电,到扫地机器人、双足机器人,AI渗透率之高令人惊喜。此番景象,不仅让人思考:AI对于家电的真正意义是什么,具体体现在哪些方面?作为全球家电巨头,海信给出了颇有大智慧的答案:AI化繁为简,将复杂留给技术、把简单还给生活,是海信对于AI 家电的终极答案。在AWE上,海信发布了一系列世俱杯新品,发力家
    华尔街科技眼 2025-03-23 20:46 59浏览
  • 在智能终端设备快速普及的当下,语音交互已成为提升用户体验的关键功能。广州唯创电子推出的WT3000T8语音合成芯片,凭借其卓越的语音处理能力、灵活的控制模式及超低功耗设计,成为工业控制、商业终端、公共服务等领域的理想选择。本文将从技术特性、场景适配及成本优势三方面,解析其如何助力行业智能化转型。一、核心技术优势:精准、稳定、易集成1. 高品质语音输出,适配复杂环境音频性能:支持8kbps~320kbps宽范围比特率,兼容MP3/WAV格式,音质清晰自然,无机械感。大容量存储:内置Flash最大支
    广州唯创电子 2025-03-24 09:08 112浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦