Hallo allemaal,

ik probeer een scriptje te maken voor het berekenen
van een headwind component. ( windsterkte op de neus van een vliegtuig )

De formule gaat als volgt:
windverschil = (baanrichting - windrichting)
windsterkteopneus = windsterkte * cos(windverschil);

voorbeeld
baanrichting = 090
wind/sterkte = 045/20

windverschil = 090 - 045
windverschil = 45
windsterkteopneus = 20 * cos(45)
windsterkteopneus = 14.1 ( dit is ook het juiste!)

wanneer ik dit in php omzet krijg ik een heel andere oplossing
<?php
$degree = cos(45);
$degrees = 20 * $degree;
echo "$degrees"
?>

Met als resultaat 10.506439776355

Waar kan de oorzaak zijn van dit verschil?

thanks,

Yannick
Dit komt omdat cos als parameter de graden in radians neemt, en niet in graden. Gebruik daarvoor dus nog deg2rad om het om te zetten in radians.
Dan bezoeken we natuurlijk als eerste even de PHP.net documentatie: [php]cos[/php]

En wat lezen we daar:
Description
float cos ( float $arg )

cos() returns the cosine of the arg parameter. The arg parameter is in radians.

Parameters
arg
An angle in radians


De hoek moet dus niet in graden (45) maar in radialen (radians).

Dus even graden naar radialen omzetten... Hoe doen we dat? Dan gaan we iets naar beneden op die PHP.net website en zien we:
See Also
acos() - Arc cosine
sin() - Sine
tan() - Tangent
[php]deg2rad[/php]() - Converts the number in degrees to the radian equivalent


Is dat even handig!
cos is uitgedrukt in radialen.

2 * PI radialen = 360 graden (degrees)

wat jij wil, is

cos( 45 * pi() / 180 )

---
En uiteraard bestaan er omrekeningsfuncties; zie post van Wouter
En overigens kan het nog sneller als je goed hebt opgelet bij wiskunde vroeger ;-)

sin(45°) = .5 * wortel 2

In PHP taal:
<?php
$degree = .5 * sqrt(2);
?>
precies.

en sin (30) is 0.5
leuk dat sin(45) of sin(30) een gemakkelijke waarde bevatten, maar iets doet me vermoeden (waarom anders een script) dat de vraagsteller dit ook bij een hoek van 83.51° wil weten.

Daarom kun je beter bij de algemene formule blijven.

Reageren