Momenteel ben ik bezig met een script waarmee je hoeken kunt berekenen, loop alleen op 1 ding vast:
<?php
$aantal = $_POST['zijderechts'] / $_POST['zijdeschuin'];
$graden = acos($aantal);
?>

Deze geeft NAN aan. en als ik dit doe:

<?php
$aantal = 10 / 99;
$graden = acos($aantal);
?>

Krijg ik het correcte getal aangegeven... Wat moet ik doen om een inpute als getal te laten 'zien'.
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.
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 :/
maar bij 4 en 5 krijg je ook een 0,11111

Wat niet kan kloppen...
Je kunt alleen de arccosinus berekenen van een getal tussen de 1 en de -1. Daarom krijg je NaN.
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
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>
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) ).'&deg;';
				} 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
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
Rechts = 4
Schuin = 5

Cos (4, 5) = 36,87°

Krijg ik op mijn rekenmachine :P

Reageren