Arjan Schuurman schreef op 05.03.2007 23:19
heel fijn Jan :) alleen krijg ik weer NAN als ik het op uw server uitprobeer.Ongeldige/onmogelijke waardes ingevoerd? Hier werkt het namelijk wel, alhoewel ik ook NaN kan produceren bij 'gekke' waarden.
Link gekopieerd
Hangt ervan af welke getallen je invult..
et 5 4 krijg je NAN, met 4 5 krijg je wel een uitkomst
Edit: Anders vul ik even 2 keer hetzelfde in :/
Link gekopieerd
maar bij 4 en 5 krijg je ook een 0,11111
Wat niet kan kloppen...
Link gekopieerd
Link gekopieerd
Je kunt alleen de arccosinus berekenen van een getal tussen de 1 en de -1. Daarom krijg je NaN.
Link gekopieerd
Nou, ik heb er ook geen gemaakt, alleen iets langzamer :-P
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>
Cos
</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css" media="screen">
html , body
{
font: 11px tahoma;
}
label
{
width: 200px;
height: 20px;
border: 1px solid #EEEEEF;
float: left;
padding: 4px;
text-align: right;
}
input
{
width: 200px;
height: 20px;
border: 1px solid #EEEEEF;
padding: 4px;
background: #EEEEEF;
}
.submit
{
width: 200px;
height: 31px;
border: 1px solid #EEEEEF;
padding: 4px;
}
</style>
</head>
<body>
<div id="container">
<form method="post"> <!-- Waarom eigenlijk POST? -->
<p>
<label for="zijderechts">Zijderechts</label>
<input type="text" name="zijderechts" id="zijderechts"<?php echo !empty ( $_POST['zijderechts'] ) ? ' value="' . $_POST['zijderechts'] . '"' : ''; ?> />
</p>
<p>
<label for="zijdeschuin">Zijdeschuin</label>
<input type="text" name="zijdeschuin" id="zijdeschuin"<?php echo !empty ( $_POST['zijdeschuin'] ) ? ' value="' . $_POST['zijdeschuin'] . '"' : ''; ?> />
</p>
<p>
<label for="knop">Drukken!</label>
<input type="submit" value="Jup, hierzo" id="knop" class="submit" />
</p>
</form>
<p>
<?php
if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
$error = false;
$errormsg = '';
$_POST['zijderechts'] = isset ( $_POST['zijderechts'] ) ? trim ( $_POST['zijderechts'] ) : '';
$_POST['zijdeschuin'] = isset ( $_POST['zijdeschuin'] ) ? trim ( $_POST['zijdeschuin'] ) : '';
if ( empty ( $_POST['zijderechts'] ) OR !ctype_digit ( $_POST['zijderechts'] ) )
{
$error = true;
$errormsg .= 'Je bent vergeten zijderechts goed in te vullen <br />';
}
if ( empty ( $_POST['zijdeschuin'] ) OR !ctype_digit ( $_POST['zijdeschuin'] ) )
{
$error = true;
$errormsg .= 'Je bent vergeten zijdeschuin goed in te vullen <br />';
}
if ( $error === false )
{
$aantal = floatval ( trim ( $_POST['zijderechts'] ) ) / floatval( trim ( $_POST['zijdeschuin'] ) );
$graden = acos ( $aantal ) ;
echo $graden;
}
else
{
echo $errormsg;
}
}
?>
</p>
</div>
</body>
</html>http://www.4stip.nl/overig/cos.php getest en werkend ... :-P
Link gekopieerd
Hierbij kom ik met de waarden 4 en 5 op ongeveer 0.64 uit.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<form name="formulier" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<input type="text" name="zijderechts" />
<input type="text" name="zijdeschuin" />
<input type="submit" name="submit" value="submit" />
</form>
<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
$zijderechts = intval($_POST['zijderechts']);
$zijdeschuin = intval($_POST['zijdeschuin']);
$aantal = $zijderechts / $zijdeschuin;
$graden = acos($aantal);
echo 'rechts: '.$zijderechts.'<br/>links: '.$zijdeschuin.'<br/>graden: '.$graden;
}
?>
</body>
</html>
Link gekopieerd
Uitbreiding op de code van Jan Koehoorn
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>acos</title>
</head>
<body>
<form method="post" action="#">
<p>
<label for="zijderechts">zijde rechts:</label>
<input id="zijderechts" name="zijderechts" type="text">
<label for="zijdeschuin">zijde schuin:</label>
<input id="zijdeschuin" name="zijdeschuin" type="text">
<input type="submit" value="go">
</p>
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (ctype_digit ($_POST['zijderechts']) && ctype_digit ($_POST['zijdeschuin'])) {
$rechts = floatval ($_POST['zijderechts']);
$schuin = floatval ($_POST['zijdeschuin']);
if ($rechts <= $schuin) {
echo rad2deg( acos($rechts / $schuin) ).'°';
} else {
echo "Rechts is groter dan schuin";
}
}
}
?>
</body>
</html>
- Rechts kan niet groter zijn dan schuin
- Php werkt (terecht naar mijn mening) met radialen. Nu wordt het antwoord gegeven in graden
Link gekopieerd
De waardes die de functie geeft zijn waarschijnlijk in radialen en het klopt dat als de $rechts groter is dan de $schuin dat je dan een NAN krijgt; dit is immers geen getal.
Het is hier druk dus ik was wat laat met m'n opmerking over radialen :P
Link gekopieerd
Rechts = 4
Schuin = 5
Cos (4, 5) = 36,87°
Krijg ik op mijn rekenmachine :P
Link gekopieerd