Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Visualisointi "bars"

Macro [07.05.2010 15:34:13]

#

Hei

Tein PHP-virityksen, joka tekee vaakasuunnassa olevia "baareja", eli eräänlaista musiikin visualisointia.

<?php
echo "<table cellspacing=\"1\" cellpadding=\"0\">";
$varit = array("00FF00", "FFFF90", "FFFF78", "FFFF60", "FFFF48");
for($leveys = 0; $leveys < 20; $leveys++) {
	echo "<tr>";
	for($korkeus = 0; $korkeus < rand(5, 25); $korkeus++) {
		echo "<td style=\"background-color: lime\" width=\"5\" height=\"5\"></td>";
	}
	echo "</tr>";
}
echo "</table>";

Ongelma on, että miten käännän tätä "rotation 90 degrees left"? Lisäksi se pitäisi saada siten, että alimmat ovat vihreänä, sitten on vähän kellertämpi, punertavampi jne... Eli, kuvaisi perjaatteessa äänenvoimakkuutta, vihreä on hiljainen ja punainen on kova. Onko helppo toteuttaa koodi, joka kertoisi minulle nollasta 30:een värit, jotka alkavat 00FF00 ja päättyvät FF0000:aan? Siten, että värit menevät tasaisesti vihreästä kohti punaista.

moptim [07.05.2010 15:47:43]

#

<?php
function varia_elamaan(var $luku) {
    echo dechex($luku * 8.5); // 8.5 * 30 = 255, siis maksimiarvo
    echo dechex(255 - $luku * 8.5);
    echo "00";
}
?>

Toivottavasti menee tollain, en oo aikoihin koodannu mitään. Eli siis tuolle funktiolle annetaan arvo 0-30 ja sen pitäis ulostaa arvoa vastaava väri.

Macro [07.05.2010 15:57:08]

#

Muuten ihan ok, mutta var ei kuulu PHP:hen tuohon kohtaan. Entä miten käännän taulukon pystysuuntaan?

Metabolix [07.05.2010 16:08:34]

#

Et voi konkreettisesti kääntää HTML-taulukkoa, toivottavasti et tätä kysynytkään. Voit sen sijaan muuttaa silmukkaasi. Muuta ensin koodisi niin, että tallennat ensin taulukkoon ($taulukko[$x][$y]) totuusarvoja, jotka kuvaavat toivottua lopputulosta, ja tulostat vasta tämän jälkeen taulukon sisällön HTML:ksi. Sitten pitäisikin olla triviaalia vaihtaa jälkimmäisestä silmukasta x ja y eri päin.

Macro [07.05.2010 21:09:41]

#

Hei, kiitos avusta Metabolix ja moptim! :) Pähkäilin kauan sen kanssa, kun se oli väärin päin. Kun kävin pystysuoria rivejä, kävin for-silmukassa lukuja ylöspäin. Kun lähdin alaspäin, se meni oikein.

<?php
function varit($luku) {
	return dechex($luku * 4.25) . dechex(255 - $luku * 4.25) . "00";
}

$taulukko = array();

for($x = 0; $x < 40; $x++) {
	for($y = 0; $y < 60; $y++) {
		$bool = rand(0, 40);
		if($bool % 7 == 1) {
			$taulukko[$x][$y] = 1;

			for($z = 0; $z < $y; $z++) {
				$taulukko[$x][$z] = 1;
			}

		} else $taulukko[$x][$y] = 0;
	}
}

echo "<table cellspacing=\"0\">";
for($a = 58; $a > 0; $a--) {
	echo "<tr>";
	for($b = 0; $b < 40; $b++) {
		if($taulukko[$b][$a] == 1)
			echo "<td style=\"background-color: #" . varit(($a > 40) ? $a - 2 : $a) . "\" width=\"5\" height=\"5\"></td>";
		else
			echo "<td style=\"background-color: black\" width=\"5\" height=\"5\"></td>";
	}
	echo "</tr>";
}
echo "</table>";

Jos joku haluaa leikkiä :) Millä kielellä se olisi järkevä kääntää exeksi? C++ & SDL? En ole käsittänyt SDL:ää niin hyvin, että voisin tehdä tuon itse, mutta jos jollain on tylsää, niin voisi vaikka vilkaista. :)

Vastaus

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

Tietoa sivustosta