Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Ympyrän keskipisteestä kehälle tietyssä kulmassa?

Pentu [22.02.2011 20:29:37]

#

Ensiksi täytyy todeta etten ole mikään matematiikan ihmelapsi.

Eli jos tiedossa on ympyrän säde (r) ja kulma(a), jossa kehää kohti siirrytään.. Toisin sanoin näillä tiedoilla pitäisi laskea piste ympyrän kehältä.
Ymmärtääkseni tämä on mahdollista seuraavasti:
siirtymä y -suunnassa = cos(a)*säde
siirtymä x -suunnassa = sin(a)*säde

Tiedän, tavalliseen tapaani selitän ehkä huonosti asiani... Mutta jos tämä selventäisi:

https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=mat2
(Yksikkö ympyrä -kohta)

Olenko ymmärtänyt... tai tehnyt jotain väärin seuraavassa koodin pätkässä.. (pitäisi piirtää viivan määritettyyn asteeseen.. Mutta jos annan asteen arvoksi($i) 1, niin tuo piirtää viivan 60 asteen kulmaan...


eli missä kohtaa en ymmärtänyt asiaa trikonometriasta, vai onko virhe koodissa?

$image = imagecreatetruecolor($x, $y);

$black = imagecolorallocate($image, 0, 0, 0); //musta
$green = imagecolorallocate($image, 25, 255, 25); //Vihreä

imagefill($image, 0, 0, $black);

imageellipse($image, $center_x, $center_y, $x, $y, $green);
	$i = 1;
	$x_siirtyy = $center_x + (cos($i)*100);
	$y_siirtyy = $center_y +(sin($i)*100);
	imageline($image, $center_x, $center_y, $x_siirtyy, $y_siirtyy, $green);
// Tulostetaan kuva.
header("Content-type: image/png");
imagepng($image);

Grez [22.02.2011 20:33:28]

#

1 = 57,295779513082320876798154814105°

-tossu- [22.02.2011 20:33:51]

#

Pentu kirjoitti:

Olenko ymmärtänyt... tai tehnyt jotain väärin seuraavassa koodin pätkässä.. (pitäisi piirtää viivan määritettyyn asteeseen.. Mutta jos annan asteen arvoksi($i) 1, niin tuo piirtää viivan 60 asteen kulmaan...

Kulma pitää antaa radiaaneina eikä asteina.

Hennkka [22.02.2011 20:36:20]

#

Johtuu siitä, että PHP, kuten muutkin ohjelmointikielet, käyttää trigonometrisissä funktioissa radiaaneja, ei asteita.

Edit. Moniko kerkesi ennen?

Pentu [22.02.2011 21:45:44]

#

Hennkka kirjoitti:

Johtuu siitä, että PHP, kuten muutkin ohjelmointikielet, käyttää trigonometrisissä funktioissa radiaaneja, ei asteita.

Tein pienen tutkimus matkan... PHP:n maailmaan: "deg2rad: Muuttaa asteet radiaaneiksi"

eli pystyisin korjaamaan asian seuraavasti?:

$x_siirtyy = $center_x + (cos(deg2rad($i))*100);
$y_siirtyy = $center_y +(sin(deg2rad($i))*100);

Tuon saan viel nopeen testin jälkeen pelittämään... mutta for -silmukan kanssa ei onnistukkaan...

for($i = 0; $i < 360; $i+60){
$x_siirtyy = $center_x + (cos(deg2rad($i))*100);
$y_siirtyy = $center_y +(sin(deg2rad($i))*100);
imageline($image, $center_x, $center_y, $x_siirtyy, $y_siirtyy, $green);
}

Ilmoittaa vain: "Fatal error: Maximum execution time of 30 seconds exceeded in..."

Grez [22.02.2011 21:54:09]

#

Johtuu siitä että looppisi on ikuinen. $i+60 ei muuta $i:n arvoa. Kokeile laittaa vaikka $i+=60 siihen tilalle.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta