Проверив код программы увидел, что lcg_value() генерирует такие точки, что укладывает их по сути все рядом. Значение сильно не меняется. Как заменить здесь на rand()?
<?php
if(isset($_POST["Ax"])){
$D = new Point($_POST["Ax"], $_POST["Ay"]);
$E = new Point($_POST["Bx"], $_POST["By"]);
$F = new Point($D->x - $E->x, $D->y);
$W = new Point($D->x - $E->x, $E->y);
$C = new Point($D->x, $E->y);
$O = new Point($E->x, $D->y);
$R = ($D->x - $E->x);
$a = $W->y - $F->y;
$b = $C->x - $W->x;
$square = $a * $b;
$WF = sqrt(pow(($W->x - $F->x), 2)+pow(($W->y - $F->y), 2));
$FD = sqrt(pow(($F->x - $D->x), 2)+pow(($F->y - $D->y), 2));
$EO = sqrt(pow(($E->x - $O->x), 2)+pow(($E->y - $O->y), 2));
$FO = sqrt(pow(($F->x - $O->x), 2)+pow(($F->y - $O->y), 2));
//$rctngl = $WF * $FD; //rectangle
$trngl = ($EO * $FO) / 2; //triangle
$crcl = (3.14 * pow($EO, 2)) /4; //circle
$squareF = Square($r, $EO, $FO); // площадь фигуры
echo 'Dx='.$_POST["Ax"].' Dy='.$_POST["Ay"].' Ex='.$_POST["Bx"].' Ey='.$_POST["By"].' <hr/> ';
echo 'Общая площадь : '.$squareF.' <br/>';
$k = 0;
$fori = 10;
echo '<div class="CSSTableGenerator" >
<table >
<tr>
<td>
Кол-во испытаний
</td>
<td >
Кол-во попавших точек
</td>
<td>
Площадь фигуры
</td>
<td>
Погрешность, %
</td>
<td>
Время, мс
</td>
</tr>
';
while ($k < 5)
{
$vremiya_starta = microtime(true);
$inF = 0; $outF = 0;
for ($i = 0; $i < $fori; $i++)
{
$P = new Point($x, $y);
$x = random_float($F->x,$C->x);
$y = random_float($F->y,$C->y);
if (IsInFigure($x, $y, $D,$E,$F,$O,$P))
{
$inF++;
}
else
{
$outF++;
}
}
$s = $square * ($inF / $fori);
$vremya_okonchaniya = microtime(true);
$vremya = $vremya_okonchaniya - $vremiya_starta;
$vremya = round($vremya*1000);
echo '<tr>
<td>'.
$fori.'
</td>
<td >'.
$inF.'
</td>
<td>'.
$s.'
</td>
<td>
'.round((Different($r, $EO, $FO, $inF, $fori, $square, $nowS)),4).'
</td>
<td>'.
($vremya).'
</td>
</tr>';
$k++;
$fori *= 10;
}
echo ' </table>
</div>';
}
class Point{
public $X = 0;
public $Y = 0;
public function __construct($x, $y){
$this->x = $x;
$this->y = $y;
}
public function PointView ($x, $y) {
$this->x = $x;
$this->y = $y;
}
}
function random_float ($min,$max) {
return ($min+lcg_value()*(abs($max-$min)));
}
function IsInFigure($x, $y, $D,$E,$F,$O,$P)
{
if ($P->x < $E->x)
{
if (IsInTriangle($x, $y, $E, $F, $O, $P))
return true;
else
if (IsInCircle($x, $y, $E, $O, $P))
return true;
}
return false;
}
function IsInCircle($x, $y, $E, $O, $P)
{
$x = ($E->X - $P->X);
$y = ($O->Y - $P->Y);
$cr = new Point($x, $y);
$R = $E->Y - $O->Y;
(double)$qx = pow($cr->x, 2); (double)$qy = pow($cr->y, 2);
(double)$vect_length = sqrt($qx + $qy);
if ($vect_length <= $R)
return true;
return false;
}
function IsInTriangle($X, $Y, $E, $F, $O, $P)
{
(double)$Eq = ($F->X - $P->X) * ($E->Y - $F->Y) - ($E->X - $F->X) * ($F->Y - $P->Y);
(double)$Fq = ($E->X - $P->X) * ($E->Y - $E->Y) - ($F->X - $E->X) * ($E->Y - $P->Y);
(double)$Oq = ($F->X - $P->X) * ($F->Y - $E->Y) - ($F->X - $F->X) * ($F->Y - $P->Y);
return (($Eq >= 0 && $Fq >= 0 && $Oq >= 0) || ($Eq <= 0 && $Fq <= 0 && $Oq <= 0));
}
function Square($r, $EO, $FO)
{
$crcl = (3.14 * pow($EO, 2)) /4;
$trngl = ($EO * $FO) / 2;
//$Rt = $WF * $FD;
return ($trngl + $crcl);
}
function Different($r, $EO, $FO, $inF, $fori, $square, $nowS)
{
$crcl = (3.14 * pow($EO, 2)) /4;
$trngl = ($EO * $FO) / 2;
//$Rt = $WF * $FD;
$nowS = $square * ($inF / $fori);
return abs((($crcl + $trngl) - $nowS)/($crcl + $trngl));
}
?>
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подскажите, почему file_put_contents в моем коде ниже, записывает не все содержимое, как исправить?
Только начал изучать php вопрос может прозвучать не совсем корректно для более опытных
Как реализовать галерею изображений одного товара в каталоге? Нужна реализация на php mysqlНе могу найти решение подобного вопроса
Есть базаgdb на сервере, как я могу ее подключить к веб сайту php? Также есть внешний статический ip