<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
 	<channel>
		<title>Gallery | PLaSM | Alberto Paoluzzi</title>
		<link>http://www.dia.uniroma3.it/~paoluzzi/plasm502/gallery/</link>
		<description></description>
		<language>en</language>
		<lastBuildDate>Wed, 03 Oct 2007 11:53:53 +0200</lastBuildDate>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<generator>Sandvox 1.2.2</generator>
		<item>
			<title>Simple examples</title>
			<link>http://www.dia.uniroma3.it/~paoluzzi/plasm502/gallery/simple_examples/</link>
			<description>
				&lt;div class="article-thumbnail"&gt;
					&lt;img id="k-Page-image-315"
						src="http://www.dia.uniroma3.it/~paoluzzi/plasm502/_Media/rsimplex_thumbnail.jpeg"
						alt="Simple examples"
						width="128"
						height="128" /&gt;
				&lt;/div&gt;
			</description>
			<pubDate>Sat, 20 Jan 2007 04:53:56 +0100</pubDate>
			<guid>http://www.dia.uniroma3.it/~paoluzzi/plasm502/gallery/simple_examples/</guid>
		</item>
		<item>
			<title>New projects</title>
			<link>http://www.dia.uniroma3.it/~paoluzzi/plasm502/gallery/complex_projects/</link>
			<description>
				&lt;div class="article-thumbnail"&gt;
					&lt;img id="k-Page-image-313"
						src="http://www.dia.uniroma3.it/~paoluzzi/plasm502/_Media/pisa2_thumbnail.jpeg"
						alt="New projects"
						width="103"
						height="128" /&gt;
				&lt;/div&gt;
&lt;p&gt; &lt;span style="font-size: 18px; text-align: center;"&gt;Model of a commercial district&lt;/span&gt;&lt;/p&gt;
&lt;div class="sectionbody"&gt;
&lt;p&gt;In this section we discuss the development of some parameterized symbolic models of virtual warehousing buildings, that could be used by a security enforcement system to model the protection and the security of a logistics company. Our modeling design will be based on the elementary standardized items of such kind of building trade, i.e.~on the models of the pallet and of the storage rack.&lt;/p&gt;
&lt;h3&gt;Modular warehouse elements&lt;/h3&gt;
&lt;p&gt;In Listing 1 is given the PLaSM coding of the &lt;em&gt;EUR-Epal&lt;/em&gt; pallet
specification, shown in Figure 6a. Each layer is generated by
Cartesian product of three 1D polyhedral complexes. The four
wooden layers are stacked by the TOP operator, and finally the
solid angles are subtracted to the model, named europallet.
The single angle is generated by extrusion (Cartesian product by
the 1D segment q:1.66) of the properly-scaled standard triangle
simplex:2 of unit size.&lt;/p&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;tt&gt;DEF europallet =
        (layer4 TOP layer3 TOP layer2 TOP layer1) - angles
WHERE
        dy = (0.800 - 0.145*3 - 0.100*2)/4,
        layer1 = q:1.2 * q:&amp;lt;0.145,-:dy,0.1,-:dy,0.145,-:dy,0.1,-:dy,0.145&amp;gt; * q:0.022,
        layer2 = q:&amp;lt;0.145,-0.382,0.145,-0.382,0.145&amp;gt; * q:0.8 * q:0.022,
        layer3 = q:&amp;lt;0.145,-0.382,0.145,-0.382,0.145&amp;gt; * q:&amp;lt;0.1,-:(dy+0.045),-0.1,-:dy,0.145,-:dy,-0.1,-:(dy+0.045),0.1&amp;gt; * q:0.1,
        layer4 = q:1.2 * q:&amp;lt;0.1,-:(dy+0.045),-0.1,-:dy,0.145,-:dy,-0.1,-:(dy+0.045),0.1&amp;gt; * q:0.022,
        angle = S:&amp;lt;1,2&amp;gt;:&amp;lt;0.022,0.022&amp;gt;:(simplex:2) * q:1.66,
        angles = STRUCT:&amp;lt; angle,T:1:1.2 ~ S:1:-1,angle,T:2:0.8 ~ S:2:-1,angle,S:1:-1~T:1:-1.2,angle  &amp;gt;
END;
VIEW:europallet;&lt;/tt&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="title"&gt;Europallet model&lt;/div&gt;
&lt;p&gt;&lt;span class="image"&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;A deposit of pallets is generated by the code in Listing 2 and displayed in Figure 6c. The palletpile function concatenates n instances of the pair &amp;lt;europalette,T:3:0.166&amp;gt;, where T:3:0.166 is a z -translation of 0.166 meters, and assembles the pile according to the semantics of the PHIGS structures [iso/iec 9592-1 1989]. The europalette symbol contains a geometric value obtained by europallet by exchanging the x and y coordinates, according to the semantics of the MAP operator.&lt;/p&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;tt&gt;DEF palletpile(n::isintpos) =
        (STRUCT~##:n):&amp;lt;europalette,T:3:0.166&amp;gt;
WHERE
        europalette = MAP:[s2,s1,s3]:europallet
END;
DEF palletwall(n,m::isintpos) =
        (STRUCT~##:m):&amp;lt;palletpile:n,T:1:0.8&amp;gt;;
VIEW:(palletwall:&amp;lt;30,12&amp;gt;);&lt;/tt&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="title"&gt;Palletwall instance&lt;/div&gt;
&lt;p&gt;In Listing 3 we show the definition of a warehouse rack parameterized with respect to the number nn of floors, the number m of piles, the height, width, and depth of the single floor, and even to the geometry of the stored warehouse. The frame module is a structure of four column at the angles of the rack element, named theframe, which also contains two horizzontal elements hsupport and two pairs of diagonal elements dsupport1 and dsupport2. It may be useful to notice that dsupport2 is generated by applying a suitable vertex MAP to dsupport1, that reverses the sign of the x coordinates, and applies a linear map $y \mapsto depth •y$ to the y coordinates, while leaving the z coordinates invariant.&lt;/p&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;tt&gt;DEF warehouse_rack (nn,m::isintpos)(height,width,depth::isrealpos) (loading::ispol) =
        (STRUCT~##:m):&amp;lt; pile,T:1:(width+0.2)&amp;gt;
WHERE
        frame_module = STRUCT:&amp;lt; column,T:2:depth,column,T:1:width,column,T:2:(-:depth),column &amp;gt;,
        column = cylinder:&amp;lt;0.02,height&amp;gt;:12,
        hsupport = STRUCT:&amp;lt;T:1:-0.02,cuboid:&amp;lt;0.04,depth,0.02&amp;gt;&amp;gt;,
        dsupport1 = (R:&amp;lt;2,3&amp;gt;:(atan:(height/depth))~CUBOID):&amp;lt;0.01,SQRT:(height**2+depth**2),0.02&amp;gt;,
        dsupport2 = MAP:[-~S1,K:depth - S2,S3]:dsupport1,
        beams = q:width * (q~#:nbeams):0.1 * q:&amp;lt;-0.02,0.1&amp;gt; TOP loading,
        nbeams = FLOOR:(depth/0.1),
        theframe = STRUCT:&amp;lt;beams,frame_module ,dsupport1,dsupport2,hsupport,T:1:width,hsupport,dsupport1,dsupport2&amp;gt;,
        pile = (STRUCT~##:nn):&amp;lt;theframe,T:3:height&amp;gt; TOP top_pile,
        top_pile = STRUCT:&amp;lt;beams,hsupport,T:1:width,hsupport &amp;gt;
END;&lt;/tt&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;In Listing 4 we show a possible definition for the loading of
the warehouse rack, in this case given as a double pair, in turn
assembled as a carton and an europallet oriented with the
main axis along the y direction. The loading value defined here
is the one used in Figures 7a and 7b.&lt;/p&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;tt&gt;DEF loading = STRUCT:&amp;lt; pair,T:1:1.2, pair &amp;gt;
WHERE
        pair = MAP:[s2,s1,s3]:europallet TOP carton,
        carton = CUBOID:&amp;lt;0.7,1.2,1.2&amp;gt;
END;
VIEW:(pallet_rack:&amp;lt;6,8&amp;gt;:&amp;lt;1.8,2.5,1.5&amp;gt;: loading);&lt;/tt&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The model shown in Figure 7c is generated by the PLaSM code in Listing 5. The warehouse function has the same interface than the warehouse rack function, but without the formal parameter loading of polyhedral type. The reader may see that the argument expression of the VIEW primitive is used to generate three warehouse instances with different actual parameter values, and to locate the 1st and 3rd instances below and on the left of the 2nd one, respectively. The reader should understand that a multiple infix expression like exp1 OP1 exp2 OP2 ex3 is evaluated from left-toright as ((exp1 OP1 exp2 ) OP2 ex3 ).&lt;/p&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;tt&gt;%DEF warehouse (nn,m::isintpos)
        (height,width,depth::isrealpos) = .... ;
VIEW:(warehouse:&amp;lt;3,4&amp;gt;:&amp;lt;1.8,2.5,1.5&amp;gt; STRUCT
        T:3:(1.8*3):(warehouse:&amp;lt;1,4&amp;gt;:&amp;lt;1.8,2.5,1.0&amp;gt;)
        LEFT T:1:0.2:(warehouse:&amp;lt;4,3&amp;gt;:&amp;lt;1.8,2,1.0&amp;gt;) );%&lt;/tt&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Warehouse buildings&lt;/h3&gt;
&lt;p&gt;In order to generate some nice models of very different warehouse
buildings, we start by preparing a small geometric library, allowing
for both realistic and fancy construction models. We have a double
aim: (a) to generate some complex models by writing an extremely
compact PLaSM code; (b) to show the amazing descriptive power
of the language. In particular, we proceed in the following way.
First, we generate three Coons' surfaces S, S, S: [0, 1]^2
\rightarrow E^3.&lt;/p&gt;
&lt;p&gt;Then we linearly combine such surfaces pairwise, to generate two
volume maps V0, V1: [0, 1]^3 \rightarrow E^3
that we will use to produce the columns and the beams, respectively, according
to different engineering schemes for the resistant structure. Let us notice that
a CoonsPatch is a surface generated by transfinite interpolation of 4 boundary
curves u0,u1,v0,v1. Bezier is the PLaSM naming of the transfinite and
multivariate B •ezier library function (see, e.g. [Paoluzzi 2003]). The physical
dimensions of the building are defined by the parameters w,d,h of the surface
function, which stand for width, depth, and height (in meters), respectively.
The further parameters uw,ud,uh and vw,vd,vh are used to variate the geometry of
the beams and the roof in the u, v directions of the domain space, and are all
zero in the building of Figure 9a.&lt;/p&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;tt&gt;DEF surface(w,d,h::isreal)(uw,ud,uh::isreal)
        (vw,vd,vh::isreal) = CoonsPatch:&amp;lt;u0,u1,v0,v1&amp;gt;
WHERE
        u0 = bezier:s1:&amp;lt;&amp;lt;0,0,h&amp;gt;,&amp;lt;w/3,0,h+uh&amp;gt;,&amp;lt;2*w/3,0,h+uh&amp;gt;,&amp;lt;w,0,h&amp;gt;&amp;gt;,
        u1 = bezier:s1:&amp;lt;&amp;lt;0,d,h&amp;gt;,&amp;lt;w/3,d,h+uh&amp;gt;,&amp;lt;2*w/3,d,h+uh&amp;gt;,&amp;lt;w,d,h&amp;gt;&amp;gt;,
        v0 = bezier:s1:&amp;lt;&amp;lt;0,0,h&amp;gt;,&amp;lt;0,d/3,h+vh&amp;gt;,&amp;lt;0,2*d/3,h+vh&amp;gt;,&amp;lt;0,d,h&amp;gt;&amp;gt; (AA:COMP~DISTR) [S2],
        v1 = bezier:s1:&amp;lt;&amp;lt;w,0,h&amp;gt;,&amp;lt;w,d/3,h+vh&amp;gt;,&amp;lt;w,2*d/3,h+vh&amp;gt;,&amp;lt;w,d,h&amp;gt;&amp;gt; (AA:COMP~DISTR) [S2]
END;
DEF S_0 = surface:&amp;lt;40,16,0&amp;gt;:&amp;lt;0,0,0&amp;gt;:&amp;lt;0,0,0&amp;gt;;
DEF S_1 = surface:&amp;lt;40,16,10&amp;gt;:&amp;lt;0,0,-1&amp;gt;:&amp;lt;0,0,1.0&amp;gt;;
DEF S_2 = surface:&amp;lt;40,16,12&amp;gt;:&amp;lt;0,0,-2&amp;gt;:&amp;lt;0,0,2.0&amp;gt;;
DEF V0 = bezier:s3:&amp;lt; S_0, S_1 &amp;gt;;
DEF V1 = bezier:s3:&amp;lt; S_1, S_2 &amp;gt;;&lt;/tt&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The actual building shape is defined by suitably setting some subsets of the
domain &lt;sup style="font-size: 10px;"&gt;3 of the volume maps V0 , V1 to accomodate the various building
fabric subsystems, i.e. columns, beams, roofs, enclosure1 and enclosure2, each
one defined as a Cartesian product of three 1D (set of) intervals. The resulting
building as a set of E3 points is just a STRUCT aggregation of the MAPped
subdomains of [0, 1]&lt;/sup&gt;3 . Figure 9 shows some examples.&lt;/p&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;tt&gt;DEF dom (n::isint; m::isrealpos) =
        ##:(n - 1):&amp;lt;full,-:empty&amp;gt; AR full
WHERE
        full = m/n, empty = (1- full*n)/(n - 1)
END;
DEF pattern = dom:&amp;lt;12,0.10&amp;gt;;
DEF columns = q:pattern * q:&amp;lt;0.05,-0.9,0.05&amp;gt;* q:1;
DEF beams = q:pattern * q:(#:20:0.05) * q:1;
DEF roofs = (q ~ aa:-):pattern * q:(#:20:0.05)
        * q:&amp;lt;-0.8,0.2&amp;gt;;
DEF enclosure1 = (q ~ aa:-):pattern
        * q:&amp;lt;0.01,-0.98,0.01&amp;gt; * q:&amp;lt;0.5,-0.5&amp;gt;;
DEF enclosure2 = (q ~ aa:-):pattern
        * q:&amp;lt;0.01,-0.98,0.01&amp;gt; * q:1;
&lt;/tt&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;tt&gt;DEF building1 = STRUCT:&amp;lt; MAP:V0:columns, MAP:V1:beams, MAP:V1:roofs, MAP:V0:enclosure1, MAP:V1: enclosure2%, deposit% &amp;gt;
WHERE
        S_0 = surface:&amp;lt;60,12,0&amp;gt;:&amp;lt;0,0,0&amp;gt;:&amp;lt;0,0,0&amp;gt;,
        S_1 = surface:&amp;lt;60,12,10&amp;gt;:&amp;lt;0,0,-1&amp;gt;:&amp;lt;0,0,1.0&amp;gt;,
        S_2 = surface:&amp;lt;60,12,12&amp;gt;:&amp;lt;0,0,-2&amp;gt;:&amp;lt;0,0,2.0&amp;gt;,
        V0 = bezier:S3:&amp;lt; S_0, S_1 &amp;gt;,
        V1 = bezier:S3:&amp;lt; S_1, S_2 &amp;gt;
END;
DEF building2 = STRUCT:&amp;lt; MAP:V0:columns, MAP:V1:beams, MAP:V1:roofs, MAP:V0:enclosure1, MAP:V1: enclosure2%, deposit% &amp;gt;
WHERE
        S_0 = surface:&amp;lt;60,12,0&amp;gt;:&amp;lt;0,0,0&amp;gt;:&amp;lt;0,0,0&amp;gt;,
        S_1 = surface:&amp;lt;60,12,10&amp;gt;:&amp;lt;0,0,-1&amp;gt;:&amp;lt;0,0,-1.0&amp;gt;,
        S_2 = surface:&amp;lt;60,12,12&amp;gt;:&amp;lt;0,0,-2&amp;gt;:&amp;lt;0,0,-2.0&amp;gt;,
        V0 = bezier:S3:&amp;lt; S_0, S_1 &amp;gt;,
        V1 = bezier:S3:&amp;lt; S_1, S_2 &amp;gt;
END;
DEF building3 = STRUCT:&amp;lt; MAP:V0:columns, MAP:V1:beams, MAP:V1:roofs, MAP:V0:enclosure1, MAP:V1: enclosure2%, deposit% &amp;gt;
WHERE
        S_0 = surface:&amp;lt;60,12,0&amp;gt;:&amp;lt;0,0,0&amp;gt;:&amp;lt;0,0,0&amp;gt;,
        S_1 = surface:&amp;lt;60,12,10&amp;gt;:&amp;lt;0,0,1&amp;gt;:&amp;lt;0,0,0&amp;gt;,
        S_2 = surface:&amp;lt;60,12,12&amp;gt;:&amp;lt;0,0,2&amp;gt;:&amp;lt;0,0,0&amp;gt;,
        V0 = bezier:S3:&amp;lt; S_0, S_1 &amp;gt;,
        V1 = bezier:S3:&amp;lt; S_1, S_2 &amp;gt;
END;
DEF building4 = STRUCT:&amp;lt; MAP:V0:columns, MAP:V1:beams, MAP:V1:roofs, MAP:V0:enclosure1, MAP:V1: enclosure2%, deposit% &amp;gt;
WHERE
        S_0 = surface:&amp;lt;60,12,0&amp;gt;:&amp;lt;0,0,0&amp;gt;:&amp;lt;0,0,0&amp;gt;,
        S_1 = surface:&amp;lt;60,12,10&amp;gt;:&amp;lt;0,0,0&amp;gt;:&amp;lt;0,0,1&amp;gt;,
        S_2 = surface:&amp;lt;60,12,12&amp;gt;:&amp;lt;0,0,0&amp;gt;:&amp;lt;0,0,2&amp;gt;,
        V0 = bezier:S3:&amp;lt; S_0, S_1 &amp;gt;,
        V1 = bezier:S3:&amp;lt; S_1, S_2 &amp;gt;
END;
DEF loading_rack = (T:1:20~R:&amp;lt;1,2&amp;gt;:(pi/2)~ warehouse_rack:&amp;lt;4,3&amp;gt;:&amp;lt;1.8,  2.5, 1.5&amp;gt;): loading;
DEF deposit = (STRUCT ~ ##:10):&amp;lt; loading_rack , T:1:3.6&amp;gt;;
VIEW: building1;&lt;/tt&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="title"&gt;"building1" value&lt;/div&gt;
&lt;h3&gt;Simple road models&lt;/h3&gt;
&lt;p&gt;The function road in Listing 8 takes as input a polycurve output, i.e. a
sequence of triples of control points, as well as a width w, and returns a solid
model of the road having as axis the set of quadratic B •ezier curves produced
by the control points. The set of roads of our model in generated by Listing 9.&lt;/p&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;tt&gt;DEF road(w::isreal) = STRUCT ~ aa:(stripe:&amp;lt;w,6&amp;gt;);
DEF stripe(width::IsReal;n::IsIntPos)
        (points::ismat) = MAP:coordFuncs:domain
WHERE
        coordFuncs = Bezier:s1:points vectsum (s2 scalarvectprod (Norm2 ~DerBezier):points),
        domain = (S:2:(width/2) ~ T:&amp;lt;1,2&amp;gt;:&amp;lt;1E-5,-1&amp;gt;):
                (Intervals:1:n * Intervals:2:1)
END;&lt;/tt&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;tt&gt;DEF polycurve (radius::isreal) (points::ismat) = if:&amp;lt; gt:2 ~ len,
    cat ~ addExtremeLinearSegments
    ~ distributeLinearSegmentsBetweenQuadratic, id&amp;gt;  :points
WHERE
  addExtremeLinearSegments =
    [[[k:(first:points), s1~s1]], id, [[last~last, k:(last:points)]]],
  distributeLinearSegmentsBetweenQuadratic =
    rtail~cat~trans~[id,  ar~[trans~[rtail~s3, tail~s1]~trans, K:0]]
    ~ generateQuadraticSegments,
  generateQuadraticSegments = aa:(newpoints:radius) ~ triples,
  triples = trans~[rtail~rtail, tail~rtail, tail~tail],
  newpoints (b::isrealpos) (p1,p2,p3::ispoint) = &amp;lt;p12,p2,p23&amp;gt;
  WHERE
    v12 = p1 vectdiff p2,    v23 = p3 vectdiff p2,
    p12 = p2 vectsum (v12 scalarvectprod (b / vectnorm:v12)),
    p23 = p2 vectsum (v23 scalarvectprod (b / vectnorm:v23))
  END
END;&lt;/tt&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;tt&gt;DEF road(width::isreal) =
        STRUCT ~ AA:(stripe:&amp;lt;width,6&amp;gt;);
DEF avenue1 = (road:6 ~ polycurve:10):
        &amp;lt;&amp;lt;0,0&amp;gt;,&amp;lt;0,-74&amp;gt;,&amp;lt;0,-148&amp;gt;&amp;gt;;
DEF avenue2 = (road:6 ~ polycurve:10):
        &amp;lt;&amp;lt;78,-12&amp;gt;,&amp;lt;78,-151&amp;gt;,&amp;lt;-78,-151&amp;gt;,&amp;lt;-78,-12&amp;gt;&amp;gt;;
DEF parking = (T:&amp;lt;1,2&amp;gt;:&amp;lt;3,-141&amp;gt; ~ CUBOID):
        &amp;lt;72,40,0.2&amp;gt;;
DEF road112 = (road:8 ~ polycurve:20):&amp;lt;&amp;lt;0,-160&amp;gt;,&amp;lt;-90,-160&amp;gt;,&amp;lt;-90,4&amp;gt;,&amp;lt;90+170,4&amp;gt;,&amp;lt;90+170,-180&amp;gt;,&amp;lt;90,-180&amp;gt;,&amp;lt;30,-160&amp;gt;,&amp;lt;0,-160&amp;gt;&amp;gt;;
DEF road01 = (STRUCT ~ AA:(road:8 ~ polycurve:20) ~ [ID, AA:[s1, C:+:-8 ~ s2]]):
        &amp;lt; &amp;lt;-190,-160&amp;gt;,&amp;lt;0,-160&amp;gt;,&amp;lt;30,-160&amp;gt;,&amp;lt;90,-180&amp;gt;,&amp;lt;260,-180&amp;gt;,&amp;lt;360,-180&amp;gt; &amp;gt;;
VIEW: road01;
&lt;/tt&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="title"&gt;"road01" value&lt;/div&gt;
&lt;h3&gt;The model of a commercial district&lt;/h3&gt;
&lt;p&gt;The VR model of a whole commercial district, including roads, service zones,
parkings and several warehouse building with internal warehouse decks,
merchandise containers, cartons and pallets is generated using the code
discussed in the above subsections, as the value produced by the evaluation
of the commercial district symbol, given in Listing 10 and shown in Figure 1.
Such a virtual environment is very easy to set up or digitize, as it only
requires a small set of points to define the control points of the road axes.&lt;/p&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;tt&gt;DEF triple(p::ispol) =
        (STRUCT ~ ##:3 ~ [ID, T:2 ~ SIZE:2]):p;
DEF double(b1,b2::ispol) =
        STRUCT:&amp;lt;T:&amp;lt;1,2&amp;gt;:&amp;lt;-75,-48&amp;gt;,b1,T:2:-48,b2&amp;gt;;
DEF avenue12 = STRUCT:&amp;lt;avenue1,avenue2,parking,
        S:1:-1:parking,
        (double ~ AA:triple):&amp;lt;building1,building2&amp;gt;,
        (S:1:-1 ~ double ~ AA:triple):&amp;lt;building3,building4&amp;gt; &amp;gt;;
DEF commercial_district = STRUCT:&amp;lt; road01,road112,avenue12,T:1:170,S:1:-1:avenue12 &amp;gt;;
VIEW:commercial_district;&lt;/tt&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="title"&gt;Commercial district model&lt;/div&gt;
&lt;div class="title"&gt;&lt;br class="webkit-block-placeholder" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="footer"&gt;
&lt;div id="footer-text"&gt;
Last updated 26-Sep-2007 16:12:31 CEST
&lt;/div&gt;
&lt;/div&gt;
 &lt;p&gt;
&lt;/p&gt;
			</description>
			<pubDate>Sat, 20 Jan 2007 04:53:56 +0100</pubDate>
			<guid>http://www.dia.uniroma3.it/~paoluzzi/plasm502/gallery/complex_projects/</guid>
		</item>
		<item>
			<title>Complex projects</title>
			<link>http://www.dia.uniroma3.it/~paoluzzi/plasm502/gallery/complex_projects_2/</link>
			<description>
				&lt;div class="article-thumbnail"&gt;
					&lt;img id="k-Page-image-960"
						src="http://www.dia.uniroma3.it/~paoluzzi/plasm502/_Media/aggr9-2_thumbnail.jpeg"
						alt="Complex projects"
						width="128"
						height="90" /&gt;
				&lt;/div&gt;
&lt;p&gt;The language allows to code pretty complex geometric projects. In this page we link two quite old structured and non trivial models. The interested reader is also referred to the newest project page. Currently we are developing the more complicated set of models ever accomplished with Plasm, and relative to the Emperor's Palace on the Palatino Hill in Rome, including the Domus Flavia, the Domus Augustana and the Diocletian stadium. Both the plasm code and images of the generated models will be given on this site as soon as they become available.&lt;/p&gt;
&lt;p&gt; So, stay tuned !!!&lt;/p&gt;
			</description>
			<pubDate>Sat, 20 Jan 2007 04:53:56 +0100</pubDate>
			<guid>http://www.dia.uniroma3.it/~paoluzzi/plasm502/gallery/complex_projects_2/</guid>
		</item>
 	</channel>
</rss>
