Hier is een operator, Xilvo heet hij, die vindt dat wiskundige algoritmes in programmaregels gevat geen wiskunde zijn. Zelf ben ik niet zo goed in hogere wiskunde, dus het omzetten is niet aan mijn besteedt. Is er iemand op het forum die het leuk vindt om programmaregels om te zetten in hogere wiskunde? Ik zou er mee geholpen zijn.
Het programma is geschreven in C/PHP en is de bladzijde https://dbphysics.org/dbphysics.php?page=partum-figura
Het is een plot-programma die een stuk ruimtetijd berekent.
De lus om een plot te berekenen wordt als volgt geschreven:
$file=fopen('./figure/'.$figuremain[0].'.xyz', 'w');
if (flock($file, LOCK_EX)) {
for($x=-$figuremain[2];$x<$figuremain[2];$x+=$figuremain[3]) {
for($y=-$figuremain[2];$y<$figuremain[2];$y+=$figuremain[3]) {
for($z=-$figuremain[2];$z<$figuremain[2];$z+=$figuremain[3]) {
$ktot=0; $xtot=0; $ytot=0; $ztot=0;
for($dtel=0;$dtel<$figuremain[1];$dtel++) {
$afx=($x-$dbx[$dtel])*($x-$dbx[$dtel]); $afy=($y-$dby[$dtel])*($y-$dby[$dtel]); $afz=($z-$dbz[$dtel])*($z-$dbz[$dtel]); $afs=sqrt($afx+$afy+$afz);
if($afs!=0) $krm=1/($afs*$afs); else $krm=9.9999999999999E+99;
$ktot=$ktot+$krm; $xtot=$xtot+($x-$dbx[$dtel])/$krm; $ytot=$ytot+($y-$dby[$dtel])/$krm; $ztot=$ztot+($z-$dbz[$dtel])/$krm;
}
fwrite($file, $ktot." ".$xtot." ".$ytot." ".$ztot." ");
}
}
}
echo nl2br('<br><br>File has been written.<br></article>');
flock($file, LOCK_UN);
}
fclose($file);
De lus om een plot om te zetten naar een jpeg afbeelding gaat als volgt:
$filev=fopen('./figure/'.preg_replace('/\.xyz/', '.tmp', $activefile), 'r');
$teller=0; while($teller<4) { $bit=fgetc($filev); if($bit==" ") $teller++; else $figuremain[$teller]=$figuremain[$teller].$bit; }
$teller=0; while($teller<$figuremain[1]) { $xyzteller=0; while($xyzteller<3) { $bit=fgetc($filev); if($bit==" ") $xyzteller++; else $db[$teller][$xyzteller]=$db[$teller][$xyzteller].$bit; } $teller++; }
fclose($filev);
echo '<article>Figure : '.$figuremain[0].' db : '.$figuremain[1].' spatiality : '.$figuremain[2].' density : '.$figuremain[3].'<br><br>';
for($tel=0;$tel<$figuremain[1];$tel++) echo 'db#'.$tel.' x: '.$db[$tel][0].' y: '.$db[$tel][1].' z: '.$db[$tel][2].'<br>';
if(file_exists('./figure/'.preg_replace('/\.xyz/', '.jpeg', $activefile))) { chmod('./figure/'.preg_replace('/\.xyz/', '.jpeg', $activefile), 0775); unlink('./figure/'.preg_replace('/\.xyz/', '.jpeg', $activefile)); }
$file = fopen('./figure/'.$activefile, 'r');
$maxt=""; $maxx=""; $maxy=""; $maxz=""; $x2max=""; $y2max="";
$mint="9.9999999999999E+99"; $minx="9.9999999999999E+99"; $miny="9.9999999999999E+99"; $minz="9.9999999999999E+99"; $x2min="9.9999999999999E+99"; $y2min="9.9999999999999E+99";
$avet=""; $avex=""; $avey=""; $avez=""; $x2ave=""; $y2ave=""; $numbersinset="0";
for($x=-$figuremain[2];$x<$figuremain[2];$x=$x+$figuremain[3]) {
for($y=-$figuremain[2];$y<$figuremain[2];$y=$y+$figuremain[3]) {
for($z=-$figuremain[2];$z<$figuremain[2];$z=$z+$figuremain[3]) {
for($teller=0;$teller<4;$teller++) $tot[$teller]="";
$teller=0;while($teller<4) { $bit=fgetc($file); if($bit==" ") $teller++; else $tot[$teller]=$tot[$teller].$bit; }
$x2=$tot[2]-.5*$tot[1]; $y2=$tot[3]-.5*$tot[1];
$numbersinset++;
$avet=$avet+$tot[0]; $avex=$avex+$tot[1]; $avey=$avey+$tot[2]; $avez=$avez+$tot[3];
$x2ave=$x2ave+$x2; $y2ave=$y2ave+$y2;
if($maxt<$tot[0]) $maxt=$tot[0]; if($maxx<$tot[1]) $maxx=$tot[1]; if($maxy<$tot[2]) $maxy=$tot[2]; if($maxz<$tot[3]) $maxz=$tot[3];
if($mint>$tot[0]) $mint=$tot[0]; if($minx>$tot[1]) $minx=$tot[1]; if($miny>$tot[2]) $miny=$tot[2]; if($minz>$tot[3]) $minz=$tot[3];
if($x2max<$x2) $x2max=$x2; if($y2max<$y2) $y2max=$y2;
if($x2min>$x2) $x2min=$x2; if($y2min>$y2) $y2min=$y2;
}
}
}
echo nl2br("\nMaximum Curvature:".$maxt." x:".$maxx." y:".$maxy." z:".$maxz." x2:".$x2max." y2:".$y2max);
echo nl2br("\nMinumum Curvature:".$mint." x:".$minx." y:".$miny." z:".$minz." x2:".$x2min." y2:".$y2min);
$avet=$avet/$numbersinset; $avex=$avex/$numbersinset; $avey=$avey/$numbersinset; $avez=$avez/$numbersinset;
$x2ave=$x2ave/$numbersinset; $y2ave=$y2ave/$numbersinset;
echo nl2br("\nAverage Curvature:".$avet." x:".$avex." y:".$avey." z:".$avez." x2:".$x2ave." y2:".$y2ave);
fclose($file);
$width=abs($x2min)+abs($x2max); $height=abs($y2min)+abs($y2max);
echo nl2br("\n\nCreating jpeg image\nWidth: ".$width." Height: ".$height);
if($_POST['curvature']&&$_POST['range']&&_POST['scale']) { $kromming=$_POST['curvature']; $afstand=$_POST['range']; $schaal=$_POST['scale'];
} else { $kromming="1"; $afstand=".5"; $schaal="1"; }
echo nl2br("\nCurvature:".$kromming." Range:".$afstand." Scale:".$schaal."\n");
$color="255"; $colormodus="0"; $im=imagecreatetruecolor(800,600);
$file=fopen('./figure/'.$activefile, 'r');
for($teller=0;$teller<$figuremain[1];$teller++) for($xyzteller=0;$xyzteller<3;$xyzteller++) $db[$teller][$xyzteller]="";
for($x=-$figuremain[2];$x<$figuremain[2];$x=$x+$figuremain[3]) {
for($y=-$figuremain[2];$y<$figuremain[2];$y=$y+$figuremain[3]) {
for($z=-$figuremain[2];$z<$figuremain[2];$z=$z+$figuremain[3]) {
for($teller=0;$teller<4;$teller++) $tot[$teller]="";
$teller=0;while($teller<4) { $bit=fgetc($file); if($bit==" ") $teller++; else $tot[$teller]=$tot[$teller].$bit; }
$x2=$tot[2]-.5*$tot[1]; $y2=$tot[3]-.5*$tot[1];
$x2=$x2*$schaal; $y2=$y2*$schaal;
$x2=$x2*(800/$width); $y2=$y2*(600/$height);
echo " ";
$color = imagecolorallocate($im,(96*($x/$figuremain[2]))+160,(96*($x/$figuremain[2]))+160,(96*($x/$figuremain[2]))+160);
if($tot[0]>(($kromming/$afstand)-$afstand)&&$tot[0]<(($kromming/$afstand)+$afstand)) imagesetpixel ($im,400+intval($x2),300-intval($y2),$color);
}
}
}
fclose($file);
Ben benieuwd of er wiskundigen zijn die de uitdaging aandurven.