这个工具主要靠勾股定理,可以知道2边的长度算出第3边,也可以知道1边的长度和另外2边的比例,来算出3边的长度,可以自动按比例画出三角形图形。使用方法 左边输入2个边的长度数据,用逗号隔开,不知道的话可以不写,右边输入直角三角形的斜边数据。 如果要按比例算可以输入1X 2X — 这样。在线演示:http://www.moonstoneab.com/mathworld/Pythagorean.php
<?php 
include "global.php";
?>
<form name="form1" method="post" action="">
  <label></label>
  <table width="934" border="1">
    <tr>
      <td width="425">Please enter the length of known sides, Separated by commas</td>
      <td width="140"><input name="numbers" type="text" id="numbers" size="20" maxlength="20"></td>
      <td width="257">Hypotenuse:
      <input name="numbers2" type="text" id="numbers2" size="20" maxlength="20" /></td>
      <td width="84"><input type="submit" name="button" id="button" value="Getanswer"></td>
    </tr>
  </table>
</form><?php if(1)
{
$row=split(',',$_POST['numbers']);
$side2=$row[0];
$side3=$row[1];
if($side3>$side2)
{
$tmp=$side2;
$side2=$side3;
$side3=$tmp;
}


$side1=$_POST['numbers2'];

echo "side1:$side1<br>";
echo "side2:$side2<br>";
echo "side3:$side3<br>";
preg_match_all("/x/i",$side1,$match_value);

if($match_value[0][0]!="x")
preg_match_all("/x/i",$side2,$match_value);
if($match_value[0][0]!="x")
preg_match_all("/x/i",$side3,$match_value); if($side2>$side1&&$side1!=""&&$match_value[0][0]!="x"){
echo "Hypotenuse can't shorter then other side! $side2 $side1";
exit();
} if($side1!=""&&$side2!=""&&$match_value[0][0]!="x"){
$result=sqrt((pow($side1,2)-pow($side2,2)));
echo "<img src=\"RightTrianglepic.php?sidea=$side1&sideb=$side2&sidec=$result\"/>";
}
if($side1==""||$match_value[0][0]=="x"){//if side1 is NULL or it's with values

if($match_value[0][0]=="x")
{
// if(is_numeric($side3)||is_numeric($side2))
// {
if($match_value[0][0]=="x")
{
$numofvalues=NULL;
echo "start value mode<br>";

for($i=1;$i<=3;$i++)//Get the number of the values
{
switch($i)
{
case 1:
if(!is_numeric($side1))
preg_match_all("/[1-9]/",$side1,$match_num);
else
{
    $match_num[0][0]="not_a_value";
$numloction=1;
$number[$i]=$side1;
}
break;

case 2:
if(!is_numeric($side2))
preg_match_all("/[1-9]/",$side2,$match_num);
else
{
    $match_num[0][0]="not_a_value";
$numloction=2;
$number[$i]=$side2;
}
break;

case 3:
if(!is_numeric($side3))
preg_match_all("/[1-9]/",$side3,$match_num);
else
{
    $match_num[0][0]="not_a_value";
$numloction=3;
$number[$i]=$side3;
}
break;
} if($match_num[0][0]=="")
{
$numofside[$i]=1;
}
else
{
$numofside[$i]=$match_num[0][0];
}
}

echo "<img src=\"RightTrianglepic.php?sidea=$numofside[1]&sideb=$numofside[2]&sidec=$numofside[3]&valuemode=yes&side1=$side1&side2=$side2&side3=$side3\"/>";

echo "<br>$side1 of the square = $side2  of the square + $side3  of the square";


if($_POST['numbers2']!=$number[$numloction])//When Hypotenuse is not in the left
{
if(!is_numeric($row[1]))
{
echo "<br>$number[$numloction]  of the square = $_POST[numbers2]  of the square - $row[1] of the square";
$squareSubtraction=convert_to_square($_POST['numbers2'],$row[1],"findhy");
finalanswer($number[$numloction],$squareSubtraction,$_POST['numbers2'],$row[1]);
}
if(!is_numeric($row[0]))
{
echo "<br>$number[$numloction]  of the square = $_POST[numbers2]  of the square - $row[0] of the square";
$squareSubtraction=convert_to_square($_POST['numbers2'],$row[0],"findhy");
finalanswer($number[$numloction],$squareSubtraction,$_POST['numbers2'],$row[0]);
}
}
else
{
$squareadd=convert_to_square($side2,$side3);
finalanswer($side1,$squareadd,$side2,$side3);
}



}
// }
else
{
echo "No solution.";
}
}
elseif(($side2!="")&&($side3!=""))//if side2 and side3 are not NULL
{
$hypotenuse=sqrt((pow($side2,2)+pow($side3,2)));
$side1=$hypotenuse;
echo "<img src=\"RightTrianglepic.php?sidea=$hypotenuse&sideb=$side2&sidec=$side3\"/>";
}
else//if one of side2 or side3 are NULL
{
echo "Can't Calculate! There 3 sides are all unknown  ";
exit();
}
} if($side2==""&&$side3=="")//If side2 and side3 are Null
{
echo "Can't Calculate! There are 2 sides are unknown";
exit();
}

echo "<br> The Hypotenuse is $side1"; }
function convert_to_square($num1,$num2,$mode)
{
preg_match_all("/[1-9]/",$num1,$digit1);
preg_match_all("/[1-9]/",$num2,$digit2);

echo "<br>" . $digit1[0][0] .  "x of the square = " . pow($digit1[0][0],2) . "x of the square and " . $digit2[0][0] .  "x of the square = " .  pow($digit2[0][0],2). "x of the square";
if($mode!="findhy")
$return=pow($digit1[0][0],2)+ pow($digit2[0][0],2);
else
$return=pow($digit1[0][0],2)- pow($digit2[0][0],2);
return  $return; }
function finalanswer($leftside,$rightside,$num1,$num2)
{
preg_match_all("/[1-9]/",$num1,$digit1);
preg_match_all("/[1-9]/",$num2,$digit2);

if($digit1[0][0]<$digit2[0][0])
{
$tmp=$digit1[0][0];
$digit1[0][0]=$digit2[0][0];
$digit2[0][0]=$tmp;
}
 
echo "<br> $leftside of the square = $rightside" . "x square";
echo "<br> " .  pow($leftside,2) . " = $rightside" . "x square";
echo "<br> x square = " . (pow($leftside,2)/$rightside);
echo "<br>" . $digit2[0][0] . "x = ". $digit2[0][0]*sqrt((pow($leftside,2)/$rightside));
echo "<br>".  $digit1[0][0] . "x = "  . ($digit1[0][0]*sqrt((pow($leftside,2)/$rightside)));

return sqrt((pow($leftside,2)/$rightside));
}

function bigestnum($array)
{
$biggestnum=$array[1];
for($i=1;$i<=3;$i++)
{
if($array[i]>$biggestnum||!is_numeric($biggestnum))
{
$biggestnum=$array[i];
}
} return $biggestnum;
}
?>
<?php
/********************************************/ 
session_start();
$side1=$_GET['sidea'];//Èý±ßµÄ³¤¶È
$side2=$_GET['sideb'];
$side3=$_GET['sidec'];
$sidenum1=$_GET['side1'];
$sidenum2=$_GET['side2'];
$sidenum3=$_GET['side3'];


if($side2=="not_a_value")
{
$side2=1;
}
if($side3=="not_a_value")
{
$side3=1;
}
if($side1=="not_a_value")
{
$side1=1;
}
if(!($side1==1||$side2==1||$side3==1))
{
if($side3>$side2)
{
$tmp=$side2;
$side2=$side3;
$side3=$tmp;
}
}
$scale=$side2/$side3;

$lengtha=100;//×î¶Ì±ß´ÓͼƬ×îÉÏÃæµ½ÏÂÃæµÄ¾àÀ루Y×ø±ê£©
$farfromleft=480;//´Ó×î¶Ì±ßµÄX×ø±ê
$middleofside2=$farfromleft-($lengtha*$scale);
$middleofside2=$middleofside2+(($lengtha*$scale)/2);//³¤±ßµÄÖмäλÖõÄX×ø±ê

$im=imagecreatetruecolor(510,510);

$bg=imagecolorallocate($im,255,255,255);
$string=imagecolorallocate($im,0,0,0); imagefill($im,100,100,$bg);
imagestring($im,NULL,10,10,"$side1,$side2,$side3,$scale",$string); imageline ($im,$farfromleft,10,$farfromleft,$lengtha,$line);//×î¶Ì±ß

imageline ($im,$farfromleft,$lengtha,$farfromleft-($lengtha*$scale),$lengtha,$line); //³¤±ß

imageline ($im,$farfromleft,10,$farfromleft-($lengtha*$scale),$lengtha,$line); //б±ß if($_GET['valuemode']=="yes")
{
if($side3!=1)
imagestring($im,"12",$farfromleft+10,50,$side3. "x",$string);
else 
imagestring($im,"12",$farfromleft+10,50,$sidenum3,$string);

if($side2!=1)
imagestring($im,"12",$middleofside2,$lengtha+5,$side2. "x",$string);
else
imagestring($im,"12",$middleofside2,$lengtha+5,$sidenum2,$string);  

if($side1!=1)
imagestring($im,"12",$middleofside2,30,$side1."x",$string);
else
imagestring($im,"12",$middleofside2,30,$sidenum1,$string);
}
else
{
imagestring($im,"12",$farfromleft+10,50,"$side3 ",$string);
imagestring($im,"12",$middleofside2,$lengtha+5,"$side2 ",$string);
imagestring($im,"12",$middleofside2,30,"$side1 ",$string);
} imagejpeg($im);
header("Content-type: image/jpeg");
// imagerectangle($im,0,0,640,480,$bg);
// imagestring($im,5,rand(1,50),0,$rand,$te);
// $te=imagecolorallocate($im,rand(100,255),rand(100,255),rand(100,255));
?>