overlay_image    version 0.2    Overlay a transparent image on top of another image.
There are no comments yet
New Comment
overlay_image    version 0.2    Overlay a transparent image on top of another image.
There are no comments yet
New Comment
function lathe_shape ($equation, $start_x, $end_x, $detail, $degree_x, $degree_y, $degree_z, $face_color, $vertex_color, $scale, $image_size
{
$vdist = 20;
$dist = 20;
$sides = lathe_polygons$equation, $start_x, $end_x, $detail);
// project each of the polygons
for ($i=0; $icount$sides); $i++) {
$points[] = project_polygon$sides$i], $degree_x, $degree_y, $degree_z, ($end_x$start_x)/2, 0, 0, 20, 20, true);
}
// scale the image somewhat
$scale = $image_size$scale/($end_x$start_x);
return render_polygons$points, $vertex_color, $face_color, false, false, $image_size, $scale);
}
function kmp_search ($x, $y
{
// see http://www-igm.univ-mlv.fr/~lecroq/string/node8.html
// set-up phase
$i = 0;
$j = -1;
$kmpNext = array();
while ($i < $m) {
while ($j > -1 && $x[i] != $x[j])
$j = $kmpNext$j];
$i++;
$j++;
if ($x$i] == $x$j])
$kmpNext$i] = $kmpNext$j];
else
$kmpNext$i] = $j
}
// search phase
$i = 0;
$j = 0;
$m = strlen$x);
$n = strlen$y);
$results = array();
while ($j < $n) {
while ($i > -1 && $x$i] != $y$j])
$i = $kmpNext$i];
$i++;
$j++;
if ($i >= $m) {
$results[] = $j$i+1;
$i = $kmpNext$i];
}
}
return $results
}
show_address    version 0.6    Given an address, show the location on a map.
There are no comments yet
New Comment
function magic8ball ()
{
$answers =array'It is certain', 'It is decidedly so', 'Without a doubt'
'Yes – definitely', 'You may rely on it', 'As I see it, yes'
'Most likely', 'Outlook good', 'Signs point to yes', 'Yes'
'Reply hazy, try again', 'Ask again later'
'Better not tell you now', 'Cannot predict now'
'Concentrate and ask again', 'Don't bet on it'
'My reply is no', 'My sources say no', 'Outlook not so good'
'Very doubtful' );
$index = rand(0, count$answers));
return ($answers$index]);
}
function isbn_validate ($isbn, $type
{
$okay = false;
$isbn = str_replacearray'-'' '), '', $isbn);
// check ISBN 13
if ($type!=2)
{
if (strlen$isbn)==13)
{
$sum=0;
$charsokay=true;
for ($i=0;$i<12;$i++)
{
if (($i%2)==1)
$weight=3;
else
$weight=1;
if (is_numeric$isbn$i]))
$sum += $weight$isbn$i];
else
$charsokay=false;
}
if ($charsokay
if ($sum>0)
if ((10-($sum % 10)) % 10==$isbn[12])
$okay = true;
}
}
// check ISBN 10
if ($type!=1)
{
if (strlen$isbn)==10)
{
$sum=0;
$charsokay=true;
for ($i=0;$i<10;$i++)
{
if (is_numeric$isbn$i]))
$sum += ($i+1)*$isbn$i];
else
{
if ((strtolower$isbn$i])=='x') && ($i==9))
$sum += 100;
else
$charsokay=false;
}
}
if ($charsokay
if ($sum>0)
if (($sum % 11)==0)
$okay = true;
}
}
return $okay
}
function isbn_validator ($isbn
{
$isbnpreg_replace'/[^dX]/'''$isbn); //remove all non-numeric or X chars
$casestrlen$isbn);
switch ($case
{
case 10:
if(!isbn_validate$isbn, 2))
return 0; //Failure - not valid ISBN
else
$isbnconv_isbn$isbn);
break
case 13:
$isbnpreg_replace'/[^d]/'''$isbn); //remove all non-numeric chars
if(!isbn_validate$isbn, 1))
return 0; //Failure - not valid ISBN
break
default
return 0;
}
$isbnisbn_hyphenate$isbn);
return $isbn
}
function morse ($data, $direction
{
$codes = array
'a' => '.-'
'b' => '-...'
'c' => '-.-.'
'd' => '-...'
'e' => '.'
'f' => '..-.'
'g' => '--.'
'h' => '....'
'i' => '..'
'j' => '.---'
'k' => '-.-'
'l' => '.-..'
'm' => '--'
'n' => '-.'
'o' => '---'
'p' => '.--.'
'q' => '--.-'
'r' => '.-.'
's' => '...'
't' => '-'
'u' => '..-'
'v' => '...-'
'w' => '.--'
'x' => '-..-'
'y' => '-.--'
'z' => '--..'
'0' => '-----'
'1' => '.----'
'2' => '..---'
'3' => '...--'
'4' => '....-'
'5' => '.....'
'6' => '-....'
'7' => '--...'
'8' => '---..'
'9' => '----.'
',' => '--..--'
'.' => '.-.-.-'
'?' => '..--..'
);
$output = ''
if ($direction=='text') {
$codes = array_flip$codes);
$elements = explode' ', $data);
foreach ($elements as $element) {
if (array_key_exists$element, $codes))
$output .= $codes$element];
}
} else {
$data = strtolower$data);
$elements = str_split$data);
foreach ($elements as $element) {
if (array_key_exists$element, $codes))
$output .= $codes$element].' '
}
$output = trim$output);
}
return $output
}
function number2roman ($num
{
// http://www.go4expert.com/forums/showthread.php?t=4948
// Make sure that we only use the integer portion of the value
$n = intval$num);
$result = ''
// Declare a lookup array that we will use to traverse the number:
$lookup = array'M' => 1000, 'CM' => 900, 'D' => 500, 'CD' => 400,
'C' => 100, 'XC' => 90, 'L' => 50, 'XL' => 40,
'X' => 10, 'IX' => 9, 'V' => 5, 'IV' => 4, 'I' => 1);
foreach ($lookup as $roman => $value)
{
// Determine the number of matches
$matches = intval$n / $value);
// Store that many characters
$result .= str_repeat$roman, $matches);
// Substract that from the number
$n = $n % $value
}
// The Roman numeral should be built, return it
return $result
}
function lathe_polygons ($equation, $start_x, $end_x, $detail
{
$degrees = 360/$detail
$step = ($end_x$start_x)/$detail
$max_y = 0;
for ($ii=0;$ii<=$detail$ii++) {
$x = $start_x+($ii$step);
$y0 = evaluate_for_x$equation, $x);
if (!is_nan$y0) && !is_infinite$y0)) {
if ($y0 > $max_y) $max_y = $y0
for ($jj=0;$jj$detail$jj++) {
$y = $y0 * sindeg2rad$degrees$jj));
$z = $y0 * cosdeg2rad$degrees$jj));
// the top of the shape
/*if ($ii==0) {
$sides[-1][] = $x;
$sides[-1][] = $y;
$sides[-1][] = $z;
}*/
// the bottom of the shape
/*if ($ii==$detail) {
$sides[-2][] = $x;
$sides[-2][] = $y;
$sides[-2][] = $z;
}*/
// the sides of the shape
if ($ii$detail) {
$poly = $ii$detail$jj+1;
$sides$poly][6] = $x
$sides$poly][7] = $y
$sides$poly][8] = $z
$poly = $ii$detail+(($jj$detail-1) % $detail)+1;
$sides$poly][9] = $x
$sides$poly][10] = $y
$sides$poly][11] = $z
}
// the sides of the shape
if ($ii>0) {
$poly = ($ii-1)*$detail$jj+1;
$sides$poly][3] = $x
$sides$poly][4] = $y
$sides$poly][5] = $z
$poly = ($ii-1)*$detail+(($jj$detail-1) % $detail)+1;
$sides$poly][0] = $x
$sides$poly][1] = $y
$sides$poly][2] = $z
}
}
}
}
$sides = array_values$sides);
return $sides
}