Задача заключается в том, чтобы создать веб-приложение, которое считает объём 3D модели.
Проблема заключается в том, что когда я начинаю считывать данные из файла(3D модель формата .stl), то вылезает данная ошибка, причём неоднократно.
<?php
$filename = "C:/xampp/tmp/" .basename($_FILES['uploadfile']['tmp_name']);
$count = 3;
$handle = fopen($filename, "rb");
$header = fread($handle, 80);
$rnum = fread($handle, 4);
$num = unpack('I', $rnum);
print_r($num);
$sum = 0;
for ($i = 0; $i< $num; $i++) {
$contents = fread($handle, 4);
$normal1 = unpack('f', fread($handle, 4));
$contents = fread($handle, 4);
$normal2 = unpack('f', $contents);
$contents = fread($handle, 4);
$normal3 = unpack('f', $contents);
$contents = fread($handle, 4);
$vertex11 = unpack('f', $contents);
$contents = fread($handle, 4);
$vertex12 = unpack('f', $contents);
$contents = fread($handle, 4);
$vertex13 = unpack('f', $contents);
$contents = fread($handle, 4);
$vertex21 = unpack('f', $contents);
$contents = fread($handle, 4);
$vertex22 = unpack('f', $contents);
$contents = fread($handle, 4);
$vertex23 = unpack('f', $contents);
$contents = fread($handle, 4);
$vertex31 = unpack('f', $contents);
$contents = fread($handle, 4);
$vertex32 = unpack('f', $contents);
$contents = fread($handle, 4);
$vertex33 = unpack('f', $contents);
$atrib = fread($handle, 2);
$sum = $sum + ((float)$vertex31 * (float)$vertex22);//на формулу не обращайте внимания. Просто тест.
}
fclose($handle);
print($sum);
?>
http://php.net/manual/ru/function.pack.php
f float (машинно-зависимые размер и представление)
g float (машинно-зависимые размер, порядок байт little endian)
https://ru.wikipedia.org/wiki/STL_(%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0)
Числа с плавающей запятой представляются в виде IEEE числа с плавающей запятой и считается обратным порядком байтов, хотя это не указано в документации.
попробуйте поменять f на g в своём коде.
unpack('f', $contents); => unpack('g', $contents);
Оффтопик: Имена переменных ужасны.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости