php计算STL模型体积

本文介绍了如何使用PHP计算STL模型的体积,针对二进制和ASCII两种格式的STL文件,分别进行了解析方法的探讨。通过分析文件头和三角面的数据结构,实现了无需图形渲染的体积计算。尽管ASCII格式计算存在精度问题,但整体实现了预期功能。目前待解决的问题是如何有效判断STL文件的格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为要实现后台估价stl模型文件的价格,所以需要计算stl的体积,参考了很多,但都是别的语言的,并不像调用别的库,并不需要渲染图形,只是单纯的读取文件数据进行计算,所以就自己写了。stl文件分为两种存储形式二进制和ascii码。

二进制

我用blender来生成一个正方体

用hex的编辑器查看

按其他网友的解释,文件开头的80字节是文件头,接下来的4字节是三角面的数量,之后的每50字节为一个三角面,红色圈起来的地方0C对应的十进制为12,即正方体的六个正方形切成的12个三角形。

$file = fopen('C:\Users\Hyz\Desktop\cube.stl', 'r');
fread($file, 80);//无实际用处,仅做文件指针跳过使用
$facet = unpack('i', fread($file, 4));
$volume = 0.0;
for ($i = 0; $i < $facet[1]; $i++) {
    $binContent = fread($file, 50);
    if ($binContent) {
        $temp = unpack("fvx/fvy/fvz/fx1/fy1/fz1/fx2/fy2/fz2/fx3/fy3/fz3/H4attr",$binContent);
        //角面片的法矢量,12字节,vx,vy,v
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值