<!--
  - Authors:
  -   Christian Schulte <schulte@ps.uni-sb.de>
  -
  - Copyright:
  -   Christian Schulte, 1998
  -
  - Last change:
  -   $Date: 2003/01/28 21:45:23 $ by $Author: duchier $
  -   $Revision: 1.8.8.1 $
  -
  - This file is part of Mozart, an implementation
  - of Oz 3
  -    http://www.mozart-oz.org
  -
  - See the file "LICENSE" or
  -    http://www.mozart-oz.org/LICENSE.html
  - for information on usage and redistribution
  - of this file, and for a DISCLAIMER OF ALL
  - WARRANTIES.
  -
  -->

<Chapter id="chapter.cutting">
  <Title/Cutting Glass Plates/
  <Author.Extern to="author.db" key="Christian.Schulte">

  <P>
    <List class=linkmenu>
      <Item><Ref.Extern to="applets/Cutting.oza"/Start Applet/
      <Item>
	<Ref.extern to="ozdoc:install" key="appendix.applets"/How to enable Applets/
    </List>
  </P>

  <P>
    This small demo allows to <Ref to="section.cutting.edit"/edit/
    cutting problems and to 
    <Ref to="section.cutting.compute"/compute/
    a solution for the edited problem.
  </P>
     
  <Section class=unnumbered id="section.cutting.problem">
    <Title/The Problem/

    <P>
      A number of small glass plates must be cut from a
      large target glass plate. Additionally, cuts can only be
      straight and must cut the entire remaining plate (remember the
      material to be cut is glass).
    </P>

  </Section>

  <Section class=unnumbered id="section.cutting.edit">
    <Title/Edit/

    <P>
      The number entries allow to enter the number of glass plates
      that are to be cut from the target plate. Both x- and y-size of
      the target plate can be edited by the lower number entries as
      well.
    </P>

    <P>
      The status entry gives suggestions on whether all glass plates
      can be cut from the target plate.
    </P>

  </Section>


  <Section class=unnumbered id="section.cutting.compute">
    <Title/Compute/

    <P>
      <List>
        <Entry><Menu/Start/
        <Item>
          Starts computing a placement of the glass plates together
          with how the plate can be cut into pieces.

        <Entry><Menu/Stop/
        <Item>
          Stops a currently running computation.

        <Entry><Menu/Animate/
        <Item>
          Animates the glass plate cutting.
      </List>

    <P>
      The status entry gives information on whether the computation
      found a solution.
    </P>

  </Section>

  <section class=unnumbered id="section.cutting.implementation">
    <title/Implementation/

    <subsection class=unnumbered id=code.cutting.main>
      <title>Root functor: <file/Main.oz/</title>
      <para><title><ref.extern to="Cutting/Main.oz">Source
File</ref.extern></title>
<code.extern display to="Cutting/Main.oz" proglang=oz></para>
    </subsection>

    <subsection class=unnumbered id=code.cutting.script>
      <title>Constraint script: <file/Script.oz/</title>
      <para><title><ref.extern to="Cutting/Script.oz">Source
File</ref.extern></title>
<code.extern display to="Cutting/Script.oz" proglang=oz></para>
    </subsection>

    <subsection class=unnumbered id=code.cutting.edit>
      <title>Graphical interface for editing: <file/Edit.oz/</title>
      <para><title><ref.extern to="Cutting/Edit.oz">Source
File</ref.extern></title>
<code.extern display to="Cutting/Edit.oz" proglang=oz></para>
    </subsection>

    <subsection class=unnumbered id=code.cutting.compute>
      <title/Graphical interface for computing solutions: <file/Compute.oz/</title>
      <para><title><ref.extern to="Cutting/Compute.oz">Source
File</ref.extern></title>
<code.extern display to="Cutting/Compute.oz" proglang=oz></para>

    </subsection>

    <subsection class=unnumbered id=code.cutting.configure>
      <title>Default parameters: <file/Configure.oz/</title>
      <para><title><ref.extern to="Cutting/Configure.oz">Source
File</ref.extern></title>
<code.extern display to="Cutting/Configure.oz" proglang=oz></para>
    </subsection>


  </section>

</Chapter>
