#!/usr/local/bin/perl
use CGI;
$q = new CGI;
$studname = "Hari";
$naid = "123456-7";
if ($q -> param('submit') eq "Submit")
{
record_data();
save_data();
to_vrml();
create_form_two();
}
elsif ($q -> param('submit') eq "View_VRML")
{
show_vrml();
}
else
{
create_form();
}
sub create_form
{
print $q -> header;
print $q -> start_html;
print $q -> start_multipart_form;
print $q -> h1('
Blocks Assignment Submission Form');
print "
";
print "";
print "| ";
print "Student Name : | ";
print "";
print $q -> textfield('studname');
print " |
";
print "| ";
print "Comment: | ";
print "";
print $q -> textfield('comment');
print " |
";
print "| ";
print "File : | ";
print "";
print $q -> filefield(-name => 'assignment',
-default => 'null',
-size => 20,
-maxlength => 80);
print " |
";
print "
";
print "
";
print $q -> reset;
print $q -> submit(-name => 'submit', -value => "Submit");
print $q -> endform;
print $q -> end_html;
}
sub record_data
{
$studname = $q -> param('studname');
$comment = $q -> param('comment');
$file = $q->param('assignment');
$ENV{'PATH'} = '/bin:/usr/bin';
$path = $ENV{'PATH'};
$tmpfile = $q->tmpFileName($file);
$date = `date`;
chop $date;
}
sub save_data
{
open(IN, ">typescript");
while($line = <$file>)
{
$line =~ s/\r\n/\n/;
print IN "$line";
}
close (IN);
}
sub create_form_two
{
print $q->header(-type => 'text/html');
print $q->start_html;
print $q->start_form;
print $q->h3('Your assignment has been submitted successfully');
print "
";
print "You can view the VRML world by clicking on the submit button now";
print "VRML WORLD";
print "
";
print $q->reset;
print $q->submit(-name => 'submit', -value => 'View_VRML');
print $q->endform;
print $q->end_html;
}
sub show_vrml
{
print $q -> header(-type => 'x-world/x-vrml');
open(IN, ")
{
print "$_";
}
close(IN);
}
sub to_vrml
{
open(IN, "temp") || die "Cannot open file Junk";
$step = 1;
while($line = )
{
if ($line =~ /\bNIL\D\bNIL/)
{
$flag = 1;
}
if ($line =~ /\bshow-stack/)
{
$step++;
print OUT "\n --- STEP $step --- \n\n";
$flag = 0;
}
if ($line =~ /\>\s\(\bput-[a-z]+\s\'[a-z]\s\'[a-z]\)/)
{
print OUT $line;
}
if ($flag eq 0)
{
print OUT $line;
}
}
close(IN);
close(OUT);
#----------------------------------------------------
#---------------------------------------------------
open(IN, "junk.wrl") || die "cannot open file junk.wrl";
print OUT "#VRML V2.0 utf8\n\n";
print OUT "\n\n";
print OUT "Background {\n";
print OUT "groundAngle [ 0.9, 1.5, 1.57 ]\n";
print OUT "groundColor [\n";
print OUT "0 0.2 0.5,\n";
print OUT "0 0.2 0.5,\n";
print OUT "0 0.2 0.5,\n";
print OUT "0 0.2 0.60\n";
print OUT "]\n";
print OUT "skyAngle [ 0.9, 1.5, 1.57 ]\n";
print OUT "skyColor [\n";
print OUT "0.21 0.18 0.66,\n";
print OUT "0.2 0.44 0.65,\n";
print OUT "0.51 0.81 0.65,\n";
print OUT "0.77 0.8 0.82\n";
print OUT "]\n";
print OUT "}\n\n";
print OUT "DEF Entry Viewpoint {\n";
print OUT "position -15 4 -10\n";
print OUT "description \"Entry View\"\n ";
print OUT "}\n\n";
print OUT "DEF Overview Viewpoint {\n";
print OUT "position 0 25 30\n";
print OUT "description \"OverView\"\n ";
print OUT "}\n\n";
print OUT "Transform {\n";
print OUT "translation -22 2 -20\n";
print OUT "children [\n";
print OUT "\tShape {\n";
print OUT "\t\tappearance Appearance{\n";
print OUT "\t\t\tmaterial Material{\n";
print OUT "\t\t\t\tdiffuseColor 1 0 0\n";
print OUT "\t\t\t}\n";
print OUT "\t\t}\n";
print OUT "\t\tgeometry Text {\n";
print OUT "\tstring \[\"Name : $studname\" \]\n";
print OUT "\t\tfontStyle FontStyle {\n";
print OUT "\t\t\tsize 0.5\n";
print OUT "\t\t}\n";
print OUT "\t} #geometry\n";
print OUT "\t} #shape\n";
print OUT "]\n";
print OUT "}\n\n";
print OUT "Transform {\n";
print OUT "translation -22 1.5 -20\n";
print OUT "children [\n";
print OUT "\tShape {\n";
print OUT "\t\tappearance Appearance{\n";
print OUT "\t\t\tmaterial Material{\n";
print OUT "\t\t\t\tdiffuseColor 1 0 0\n";
print OUT "\t\t\t}\n";
print OUT "\t\t}\n";
print OUT "\t\tgeometry Text {\n";
print OUT "\tstring \[\"Comment : $comment\" \]\n";
print OUT "\t\tfontStyle FontStyle {\n";
print OUT "\t\t\tsize 0.5\n";
print OUT "\t\t}\n";
print OUT "\t} #geometry\n";
print OUT "\t} #shape\n";
print OUT "]\n";
print OUT "}\n\n";
print OUT "Transform {\n";
print OUT "translation -22 1 -20\n";
print OUT "children [\n";
print OUT "\tShape {\n";
print OUT "\t\tappearance Appearance{\n";
print OUT "\t\t\tmaterial Material{\n";
print OUT "\t\t\t\tdiffuseColor 1 0 0\n";
print OUT "\t\t\t}\n";
print OUT "\t\t}\n";
print OUT "\t\tgeometry Text {\n";
print OUT "\tstring \[\"Date : $date\" \]\n";
print OUT "\t\tfontStyle FontStyle {\n";
print OUT "\t\t\tsize 0.5\n";
print OUT "\t\t}\n";
print OUT "\t} #geometry\n";
print OUT "\t} #shape\n";
print OUT "]\n";
print OUT "}\n\n";
print OUT "Transform {\n";
print OUT "translation -3 25 20\n";
print OUT "children [\n";
print OUT "\tShape {\n";
print OUT "\t\tappearance Appearance{\n";
print OUT "\t\t\tmaterial Material{\n";
print OUT "\t\t\t\tdiffuseColor 1 0 0\n";
print OUT "\t\t\t}\n";
print OUT "\t\t}\n";
print OUT "\t\tgeometry Text {\n";
print OUT "\tstring \[\"OverView\" \]\n";
print OUT "\t} #geometry\n";
print OUT "\t} #shape\n";
print OUT "]\n";
print OUT "}\n\n";
$step++;
$decrement = 0;
$step = 0;
$obj = "";
$string = "Initial State";
while ()
{
$line = $_;
$pattern = $line;
if ($pattern = /\>\s(\(\bput-[a-z]+\s\'([a-z])\s\'([a-z])\))\n/)
{
$source = $2;
$target = $3;
$string = $1;
}
if ($pattern = /^(TABLE)\s\n/)
{
$obj = $1;
$flag = 0;
}
if ($pattern = /^([A-Z])\s\n/)
{
$obj = lc($1);
$flag = 1;
}
if ($pattern = /\bSTEP\b\D*(\d+)/)
{
$value3 = $decrement - 30;
$strpos = $value3 - 15;
print OUT "Transform {\n";
print OUT "translation 7 -3 $strpos\n";
print OUT "children [\n";
print OUT "\tShape {\n";
print OUT "\t\tappearance Appearance{\n";
print OUT "\t\t\tmaterial Material{\n";
print OUT "\t\t\t\tdiffuseColor 1 0 0\n";
print OUT "\t\t\t}\n";
print OUT "\t\t}\n";
print OUT "\t\tgeometry Text {\n";
print OUT "\tstring \[\"Step $step \: $string\" \]\n";
print OUT "\t} #geometry\n";
print OUT "\t} #shape\n";
print OUT "]\n";
print OUT "}\n\n";
#For Touch Sensor
print OUT "\n";
print OUT "DEF Step$step Viewpoint {\n";
print OUT "position 3 3 $value3\n";
print OUT "description \"Step $step\"\n ";
print OUT "}\n";
$step++;
print OUT "\n# This is Step $1\n";
{
$decrement = $decrement - 50;
}
}
if ($pattern = /\bCOLOR/)
{
if ($pattern = /\bRED/)
{
$color = "1 0 0";
}
if ($pattern = /\bGREEN/)
{
$color = "0 1 0";
}
if ($pattern = /\bBLUE/)
{
$color = "0 0 1";
}
else
{
$color = "1 0 1";
}
}
if ($pattern = /^[TABLE]/)
{
$color = "0 0 0";
}
if ($pattern = /\bSIZE/){
print OUT "\nDEF Object$obj Transform {\n";
if ($pattern = /\bPOSITION\b\D*(\d+) (\d+) (\d+)\b\D*/)
{
$varX = $1;
$varY = $3;
$varZ = $decrement + $2;
$handX = $varX;
$handY = $varY;
$handZ = $varZ;
$newY = $varY + 2;
if (($obj =~ m/$source/i) && ($flag == 1))
{
print OUT "\n";
$puthand = 1;
}
if ($flag == 1)
{
print OUT "translation $varX $varY $varZ\n";
}
else
{
print OUT "translation $varX -1.5 $varZ\n";
}
}
print OUT "\tchildren [\n";
if (($pattern = /\bBRICK/) || ($pattern = /\bTABLE/))
{
$object = "Box";
}
if ($pattern = /\bPYRAMID/)
{
$object = "Cone";
}
if ($pattern = /\bSPHERE/)
{
$object = "Sphere";
}
print OUT "\t\tShape {geometry $object ";
if (($object eq "Cone") && ($pattern = /\bSIZE\b\D*(\d+)\b\D*/))
{
{ $output = $1}
print OUT " { }\n";
}
if (($object eq "Box") && ($pattern = /\bSIZE\b\D*(\d+) (\d+) (\d+)\b\D*/))
{
{ $output = "$1 $2 $3"}
if ($puthand == 1)
{
$height = $2;
}
print OUT " { size $output }\n";
}
if (($object eq "Sphere") && ($pattern = /\bSIZE\b\D*(\d+)\b\D*/))
{
{ $output = $1}
print OUT " { }\n";
}
print OUT "\t\t\tappearance Appearance {\n";
print OUT "\t\t\t texture ImageTexture {url \"$obj.JPG\"}\n";
print OUT "\t\t\t material Material { emissiveColor $color }\n";
print OUT "\t\t\t}\n";
print OUT "\t\t}\n";
print OUT "\t]\n";
print OUT "}\n";
if ($puthand == 1)
{
$puthand = 0;
print OUT "# $obj\n";
$handY = $handY + $height;
print OUT "Transform {\n";
print OUT "translation $handX $handY $handZ\n";
print OUT "children [\n";
print OUT "Shape {geometry Box { size 2 2 2 }\n";
print OUT "appearance Appearance {\n";
print OUT "texture ImageTexture {url \"hando.jpg\"}\n";
print OUT "material Material { emissiveColor 0 0 1 }\n";
print OUT "}\n";
print OUT "}\n";
print OUT "]\n";
print OUT "}\n\n";
}
}
}
close(IN);
close(OUT);
}