<?xml version="1.0" encoding="UTF-8"?>
<Worksheet><Version major="6" minor="0"/><View-Properties><Zoom percentage="100"/></View-Properties><Styles><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="_pstyle10" rightmargin="0.0" spaceabove="8.0" spacebelow="2.0"/><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="_pstyle9" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="centred" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="_pstyle8" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="_pstyle7" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="_pstyle6" rightmargin="0.0" spaceabove="8.0" spacebelow="4.0"/><Layout alignment="centred" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="_pstyle5" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="centred" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="_pstyle4" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="_pstyle1" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="left" linebreak="space" name="Error"/><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Normal" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="centred" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="_pstyle14" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="_pstyle13" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="_pstyle12" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="_pstyle11" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Font background="[0,0,0]" bold="true" executable="true" family="Monospaced" foreground="[255,0,0]" name="Maple Input" readonly="false"/><Font background="[0,0,0]" bold="true" executable="false" family="Monospaced" foreground="[0,0,0]" italic="false" name="_cstyle14" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="true" name="_cstyle13" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="true" executable="false" family="Monospaced" foreground="[0,0,0]" italic="false" name="_cstyle11" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" executable="false" foreground="[0,128,128]" italic="false" name="Hyperlink" readonly="false" underline="true"/><Font background="[0,0,0]" bold="true" executable="true" family="Monospaced" foreground="[255,0,0]" italic="false" name="_cstyle10" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="_pstyle9" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="_pstyle8" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="_pstyle7" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="_cstyle9" readonly="false" size="14" underline="false"/><Font background="[0,0,0]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="_pstyle6" readonly="false" size="18" underline="false"/><Font background="[0,0,0]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="true" name="_cstyle8" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="_cstyle7" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="_cstyle6" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="_cstyle5" readonly="false" size="18" underline="false"/><Font background="[0,0,0]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="_pstyle1" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="_cstyle3" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="_cstyle2" readonly="false" size="18" underline="false"/><Font background="[0,0,0]" bold="true" executable="true" family="Monospaced" foreground="[255,0,0]" italic="false" name="ParagraphStyle2" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="ParagraphStyle1" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="true" executable="false" family="Monospaced" foreground="[0,0,0]" name="_cstyle21" readonly="false"/><Font background="[0,0,0]" family="Monospaced" foreground="[255,0,255]" name="Error" readonly="true" size="10"/><Font background="[0,0,0]" family="Times New Roman" name="Page Number" underline="false"/><Font background="[0,0,0]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="_pstyle14" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="true" executable="true" family="Monospaced" foreground="[255,0,0]" italic="false" name="_pstyle11" readonly="false" size="12" underline="false"/></Styles><Page-Numbers enabled="false" first-number="1" first-numbered-page="1" horizontal-location="right" style="Page Number" vertical-location="bottom"/><Group><Output><Text-field layout="Error" style="Error"/></Output><Input><Text-field layout="_pstyle4" style="_cstyle2">ON FRACTAL MODELING OF 3D CURVES AND WIREFRAMES</Text-field><Text-field layout="_pstyle5" style="ParagraphStyle1"><Font style="_cstyle3">

Wieslaw Kotarski (</Font><Hyperlink bold="false" family="Times New Roman" hyperlink="true" linktarget="http://" size="12" style="Hyperlink">kotarski@gate.math.us.edu.pl</Hyperlink><Font style="_cstyle3">) &amp; Agnieszka Lisowska (</Font><Hyperlink bold="false" family="Times New Roman" hyperlink="true" linktarget="http://" size="12" style="Hyperlink">alisow@ux2.math.us.edu.pl</Hyperlink><Font style="_cstyle3">)
Institute of Computer Science
Silesian University
Bedzinska 39
41-200 Sosnowiec, Poland</Font>
</Text-field></Input></Group><Section><Title><Text-field layout="_pstyle6" style="_cstyle5">1. INTRODUCTION</Text-field></Title><Group><Input><Text-field layout="_pstyle7" style="ParagraphStyle1"><Font style="_cstyle6">In our previous Maple applications: "On fractal modeling of contours"  </Font><Hyperlink bold="false" family="Times New Roman" hyperlink="true" linktarget="http://www.maplesoft.com/applications/app_center_view.aspx?AID=1651" size="12" style="Hyperlink">http://www.maplesoft.com/applications/app_center_view.aspx?AID=1651</Hyperlink></Text-field><Text-field layout="_pstyle7" style="ParagraphStyle1"><Font style="_cstyle6">and  "Probabilistic approach to fractal modeling of shapes"  </Font><Hyperlink bold="false" family="Times New Roman" hyperlink="true" linktarget="http://www.maplesoft.com/applications/app_center_view.aspx?AID=1657" size="12" style="Hyperlink">http://www.maplesoft.com/applications/app_center_view.aspx?AID=1657</Hyperlink><Font style="_cstyle6"> we showed how to generate fractally any planar contour 2D basing on  the Ron Goldman idea [1]. Here we demonstrate fractal construction of non-planar 3D curves that can be splitted into a finite number of cubic Bezier segments. Details concerning theory one can find in [1] and [2]. We recall only that cubic Bezier curve depends on four control points  P0,P1,P2,P3 in  R3 expressed  in homogeneous coordinates. The IFS that generates cubic Bezier curve fractally has the following form:</Font></Text-field></Input></Group><Group><Input><Text-field layout="_pstyle8" style="_pstyle8"><Image height="29" width="202">TUZOV3RLVWI8b2I8Uj1NRExDZE5ibFJBPXI6Um5bVlJzPUdCTlNET0V0eXl5eVJPP3hud107Xl5DX2I7X2RyT3V3UGxrcGM9QWBOZmJpaHdBUGc+TmdHYGo8Vls8UWZkQXI6QXNAb1pAbmFbWGZ5YFpTZ2pJPnc6cVtdVl5ZQFxcYE55P15zWD5tUj9bVUhcXEtId0VYbDpHXFxuT25cXEljSFlhbGlsaXB3bVhadnloQz9mcVh2XXBuX0FkY1hvQlBvZGduSk5tWE9zTkF3UVdfb2d5WkdqWHhaPnhyWkBvO0drPHZeX3ZnYllgSWZfcW9mOlhaU0dxeWZqckRtY2c9O1ZGWXdnc1dnbVVXeWZbP1VpS1Q+aVdMa3NKU3JKX2I8bVdMXXdkP2NmPXheZUVgO2hqU0hlQVNkRXZSTXdBbXliV0V2V0l2c3hsYUJ0WXZwdWdIaVlaO0RHb0J0UURBcUJvO3RPW0l1S2hbQXJfR3ZwP2JNXUhaXWI7PVZja2g7b3RWR3NUPWhcXF1yQWlGU0lGWW1DdUF5Q2tzTUdmeV9mUjtZUENlV2lpamFGQV9FblVyUVdmR1FFbHdSVnljdUd3bnVCWXVkU09WZmtEd3VZY2dyRFNzX1t5S013XFxdVEV5Uz95ZTxnVXd5c3Nzcl9fVEpDVmtVWWl3Wjo+WkNnYkhfYmhQYlpPNko=</Image></Text-field></Input></Group><Group><Input><Text-field layout="_pstyle9" style="_cstyle7">where</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle8" style="_pstyle8"><Image height="98" width="513">TUZOV3RLVWI8b2I8Uj1NRExDZE5OWjtaXFxHWj1abXl0THhZblpKX2NOZ2J5eXl5XU9Pck1xSUxqTWFOXFxATmRcXFFncVhGeXVBaWtcXExrXXlXYHVycGFObHRsR1BMQ3RMYkFtPWBMUT1UckBuakVMXFxIazpFVERhbE54Tmt5T0pdVVFISz49UjtATF9kSj9YdE09eGFcXG9cXFxcTF9Aa0p4eT5YdkRcXHY8UHZKcEtjdFhreFdzdVdgbXhxQVlnWVVRXFxSXFxhT1dRdXFUUXVpdXF0V1hhcUlhcTs8eVlwWWg9bVxceVB1REpIeFU9YE5WSXd3cXI9eXg8TGp2UXhwXFxPRW1QXlB1eGV4V3BzQnBPXU1QR0FQVUlXXmR2WzxwXWRYPERUbElXPFxcbWlxeGNIWVJNVE1YVmlAcD11VXE9d2xBbGZRdFhFVlxcdG08dGtxYU5CZHhTUGpXbHFRQVRSYGt3QU9IRXdsWFNRWHFeQFheeXdJYU46aUpiVls6V2dJV1pdbm1nT3ZBQG1oTmdvaXlvTlt5SHY9SXdxY3g/Rkd3aVdVdkhrc1d5RHBtRlFZRz5ZWDpHZ1hHQnV3eVJzYltrc1dVd3k7eXV5WE49RWlNVj1BY2B1VkZDdztTU2ZXc1dhRFxceXVZO3dbY2hDT0Jza2RXa1ZYaWlLZWljV2lAXUQ+PVd4c1FmWW10UHJreFhXbVZYeG08WG1OVE11bVB2XVllQHJrSGtrPHBJVFNEZHF2PE9gaVJiUEpWcXJwQFdUcHNbPW5NSU9wTVV0dXlcXHB2ZV1ZYk1Td1xcWUZtdHlsUWBUTWdxUWBEUGpldElASlFhd2Q8dldxVHJUVFVhb0dRdHZcXFhQPW09TVdqZVJmVHFlPHZNQWpoXVFZUVdOPHBveE1oYExYUVU/bHNrZHVFRVFDSVlLTVNLPW5vUEpAcUpyQG4/VXhvTXRlXFxLW0xuYXVqeElNUFhUaj1XX2FQaEhTdlFNO0BXYlxca3dQcmN0U0dMcltRbkhZSzw9U2RdcEBYWEBES0ZpamJFdj9oU1ZJU0VBV1l1V11JczxpT2xQckV0b2RhTD5keERYcmRdd0Nod0BISzttck9tVUZQc3A8UGVYdFxcbW5vXFxSTz1ZS3ByX2VKWG1zP2l4XnFRRXFVa0lTb3FSP0BRXFx0VmZVeG1tUEhReXdlVVtpSnY8T2M8U0NwUmR4S1RcXHFybHNBPE9uRXhARGptaE9MPFZZeUxEZFFcXEl1Z1VNRWRMWD1VPmBTY3hsUzxNcnBtbUF1a1FqSVFxbVFKR0hURGlxV0RZS2RqXUFvWURtanFUakRvbVFqQEhNbEhOZHlqZz1MRFF1OmFTW1VSUWhKd3hrZWh2S3huZzxYcFBORlB5W3FYdWR3aUR4SURxc21sR2lyXUFWUUVzUERycGlxPz1OYFVSeD13V0lLdUlKcVlzPVFXPEB2dlxcVz1ATFtVTVJZbD89VlpFTlVsb3dcXEtVQUw9VXJAaFRVaFN3SFhgaFVrYG5fYFdTSXZQZUxYaUtAYVZ5WW5ZTXJ1WXNJWXJLXFx1bllyUVVPUGlqPkBqWVxcT2k8bWFpakxFcFd1VHZAdj9kTlp1c0V4eFREU2JAdj90eHZAU0JJcEJZaz9tc0U8VkE8bGtRbmlRWHQ9bFFcXE1WdE9uaFVvaFZYPXVnXFxxYWlSdHBveEBVRVlrXXBMWD1rRWFyO0R4XFxpUmdwcUpcXHZbVHNFWHlgZVJAeU5YPXA8eEx5dHRlWWtyVFA+aHA7WGtRXFxxcm1VaXhPcGVrYWlKVXhvSj1LWkRvTHVVdnRQWEFsX0FvP1xcVXhMTVxcTG9ITFdvaWp3aFJ2QHBAcVRzRVZbcXZyRVhNWXF3PVdFZXRsZVlLWVg/YUpsUXZLXFxQckVqT2hSQFlrV3V3blxca2tYTD1kcVlQcW1PWUlobWlTQWFVZztoam9jbUdZZWFmaltSXUNIUktmaFFDdUFVVD1mcW1ncWd2QW9YeVtIbVlyT3FpdFFTW09VWT12WG13aD9yb0dZUnNFPDtlaWVDTkVZS0VTS0VWWD1WSW9JP111SnF0VENZO0dka1Fyb19DW2dmeD9mUUVUSFNIcl92UGdyYG1JXWliPT1zY1FlbUFHWFFoc3N1OllkYW1CWWtJYEdYS3FockVmUVF4XFxvWVhjRlA/ZWpfRlRFaWk/SFFVaE5haGRbQklZZmpDVXZJU1hPWV9RU29vWD8/dnNddDphZElveD5NWENXWEpvU2FJVE1TSXNbd0FPRWk7aV9RYmg/Z2BhaXI/R2l5dD5ZR3FtRW9VZ0ZZQ25pdVFfWGRLSEFJU2FNSUFrUkBZQ0E/ZFhtaFVTWURXaTs/RXR1c3RXeDxzV2JXQnF5VUFhSXN5RFB5RHlPQnZHeWlzc11vSXB1dkt1d3ZnVHY/Vkc/RFZJWDtPdWJpSWtHQk9NY3NdWW5VWVVraHlheUVjZVN3SWxFc2hjdVhCOk1US1dES1dnSjtlWjE6</Image></Text-field></Input></Group><Group><Input><Text-field layout="_pstyle7" style="_cstyle6">Basing on the idea of Ron Goldman [1] it is not possible to construct fractally linear segments, that in fact are Bezier arcs, of the first order. In [2] we showed how to overcome that limitation in 2D case. It appears that linear segments in 3D may be constructed similarly as in 2D case. We start from the well-known fact  that </Text-field><Text-field layout="_pstyle7" style="_cstyle6">the linear segment of lenghts 1  lying on the x -axis joining points [0,0,0] and [1,0,0] can be generated fractally with the usage of the two following matrices:</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle8" style="_pstyle8"><Image height="96" width="342">TUZOV3RLVWI8b2I8Uj1NRExDZE5GWlBbWkdaPVp2Z2BCYVJuWkpfY05nYnl5eXldT09yTXFJREpjYE5cXEBOZFxcUWdxeEVBVWFIVlI8Sz15dm5QV21cXFRcXExSQmRWYkFMa0RQcF1WYmBqc1VKWEFqanFKRmBLRkRWZVlSWkRyVUBMXmxNWmBXRmhMXFw9Vj5Ea1tATmI9UVVJT3BYdHlAdEo9bWJdTkFld1d5bWVJdW94cVZJTHdJdm9NVHNxUVB1UGtBd1VUdXM9VF1cXFY9ZXVwcGp4SHhmSVU/aUttdXNycW1UQHFMbWtSSW1reW5IdGtYSFhERHRoZEtOUFdpcHREYFNqeFViQFFnbE1rSHRwYHhNUXM6bXJlaHA/bU5zTVE7dHJgaFBYZFldaFlPXFxsVVRqcmx0WFFYaGVKVmBzUnl5VHVWV1xca1BdVltcXHhDPU1xTFI7YHhEYXNkVUxiaHJzUXNzSUtQVXhPVEpcXEhrRGh5Pll2dGB4b1RtTEFNRFR2b0x1RUx2R1BUYkB1aWBRWExzakRVdVRQQExNUHBVbXlMdHVURmxOQF1sUXlVWWlscHlNYlVUUXRKd3R2Ul1qW3FrSXlKZ3FwcjxrYVB1VkVRdGxRWVxcYFJfXW55bnlIczpBXUBYbGR2XUpuW2BYdXBHdW8/W1pJWkdQWlJ2aGBhdFJYXFxEaHBqeWw9P28/SXFBZ1xceVBaOmhyO2FsSU5dUkZzUGdqSU47Z3I7RXNBY2M+Z0N3T3V5O3Y9VUJ4WUJ1P1dDTWJDW2ZjaXNMWVlMXXJCYWlYR3ZyZ3dBaUJta0M+bXk8S0hoUXRPS3RgP0doVUNAaUZ0RWJlQ2JcXFF0Z0tUeGd2Ym1XRz1JbWdpTkNXcUNkbkF4Omt3XllJbnFydl9JSW1pXlliP0lSSXd1RkdDc2NCP01kRl9ZeDtVVltydm1YTU1YREtjVldzRWNzQWdjTHdDUHNCdldWP19GYT9mSkdzUkF4W3FFW0Fmall4Z2tkYGFWPnNFUEdGRld1VndZUldic0FJanVnPktXW3FSbFt4bD15akljPXNjSUtDUkt2bj12bUlyXFxBcl9ZYkBrcnhzZFFTZ3RJVl9neU9PeTtRdlpLUndpQkdBeDtVdlpjUndpUj1fZXRJclxcaEpkeU9YeXFDeVh2eVBlQVBpeHFaUE13aUpPQXdpbExDPXBEeWphdExRbVd5RVZZZE10QFFScVJ3aWpSRXg7WXRwVU9ASWx4eE1PTXlzUVVrdWFOZ3dZQG9udmRAST4+WkNnYkhfYmhQYlpPNko=</Image></Text-field></Input></Group><Group><Input><Text-field layout="_pstyle7" style="_cstyle6">To obtain any segment joining two points P1=[x1,y1,z1,1] and P2=[x2,y2,z2,1]  we need to determine the IFS of the form: </Text-field></Input></Group><Group><Input><Text-field layout="_pstyle8" style="_pstyle8"><Image height="26" width="126">TUZOV3RLVWI8b2I8Uj1NRExDZE5iWWJAPXI6ckxLZlhJPkdCTlNET0V0eXl5eVJPP3hudz1RWExDVEpjRFhveFI7RWJnQlI/VkZrRGJTRGg7eElHYlNHWVhlclh5Q2Zdc2lBSVBbU2J3eUJReENHYjtHZD1ZdjtTQkFTZDpJckBrQj9FQz1rUmpPdj5bVG1hQnNbRVI7SVJdRVdHRVJbVW5LbE9deXM8eElsVmhYSkJITklcXFZEPHBZXFx4Xj1WYkh0Tl9kO2FydnldYkddXUliQG9aQG5dP2ZqeWlbOkdneD9cXDtBcjteckZgW0ZAYnA+czp4XUZmWzxOXFxGdmFSQF1VPl1SP2VObmk6YHZ5QWB3P2ZmP3dzcXBZSGo/X2c9SGk9Vlo9cHNfeXRGdmp4SWd2d3VJZmhGPlNXQl51Zl1LclU9REE9SVpTZzpDVT1TVGt5QkJnUjptZ2ZdckY7RmQ9amdVWVBkbD11UHdMPTxqXlBOYUxOUUVOakQ1Qg==</Image></Text-field></Input></Group><Group><Input><Text-field layout="_pstyle7" style="_cstyle6">with</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle8" style="_pstyle8"><Image height="25" width="268">TUZOV3RLVWI8b2I8Uj1NRExDZE5GWkZaU0ZaPVp4cV88YENuWkpfY05nYnl5eXldT09yTXFJQGpvYE5cXEBOZFxcUWdxVkN5dV9IVmI8a115dXFReHRZbEpVajxQUU5UeUBEcm9UblVIT3J5Sm5VV1BEcHh5SmhMa11dTDt1SnlBa0hwa3dZSj5wUTtJdDtJUj5EblpdUmo9WERAdFtES0NVdndgdG49V0tcXG0+WWpFaVV4RHFxdVhzWFk6eVVFVHhgQVJzQFhyRXZeVXhhTWw/QGxZaGpVRG50XFxKRlFLc2lPX2hXZXFVdXFYTXBNdWxtQGxKaFBMcXhTT3hrc1BrQG1RRElYbkxZSUh3bVF1bWlKeHRwT0RqU0VubUlxbkltb1RPPnF0VVFLSmxObV1WR0VVPGFSZ3FzXmxXU2lOclVzWHBKTmhqW1BMOlFzVFFKclRqeFRXY3FvVkBTUlVUOkltXFxBa2Y8U151a0dcXFlKaFdKcHF0XFxQYGBvTWFzO3RWQXRuWGVOYnBUO1hMPXRQXmVLTHFsTFBMTXRxVlhKZFxcTm5tTEE8cT5sWG9oTl9gT05xblZQSj14cW50cmtMdz1BbFd1bldoc1VJVnJgTElkdUFcXFc/cXFrSHhOeU1NPExcXE1yPE13amRLbGBSZEhyRE1NQnlwTnFuRlVWT2BKZ3FVOndlZ2ZdS1FadXBfWnlbSl5oV1dpSmlodz5wd3Bdak9xaUhieFZdS19bQ292eV9hT0ldUl9lXXlfPF9pd1hyXFxpblFfak5ZW0xJeXBoeVxcUW1zPnlhT3g/ZltrYWdbb29gbmNkWzpGYz9vYz5vbzw/ZjwzPA==</Image></Text-field></Input></Group><Group><Input><Text-field layout="_pstyle7" style="_cstyle6">where  </Text-field></Input></Group><Group><Input><Text-field layout="_pstyle8" style="_pstyle8"><Image height="25" width="257">TUZOV3RLVWI8b2I8Uj1NRExDZE5GWjtaU0ZaPVpFPnRDXlluWkpfY05nYnl5eXldT09yTXFJQGpyYE5cXEBOZFxcUWdRV0N5VV9MVlo8S115cVdhb3RAVjppTF5RS2tAVT9Rcjw9dFhFUW1Ndj08VVhFb1pZSmI8VVI9S0BZVD5RVHZNSllFckE8TF1AVmdobD9oaj51bVo8a1pNa2pFWGxFeHZZSnBRdk5UcE1Ic1Fgd3F0dXE8eGlNTkpFSztJU1ZETF5QS3BIbkNYbFxcdXd0cFlXRGp0bmZFdmtsT11YPmZOT3dSaGxPUF1bSXR3WHhWYGNscGJHaXRXYWpiWVpLSG5PP2RRcGRvUWBLWGpRXnlbX3VhSG5rTm9icWFJYHZnXm07Z3VwX1pTUWF1T2BSaVo8aWBPaHY8RmFPbl9gX3RwVmo+cV9vX3V4b3BCd2ZGeXZQaWpGTmlnaV9UV2dPX2xrR3NdYHNuZ1xcTW9mW15xbFhmYz5fdnd0UXdwclB0UmFuWk9jYmlkVmdlO3BwVlZ4c15vUG52TGZbQFh3UFBncVF4Zl5qQ2Znb19eQlZmWl9jVHhsYGZsYWh0aG91PndnTmhqPWlyZFdkRz9jaUhoSXZnR0loVXhgVFZxRl5jQHlkZVlhUVZgeGZnYVlzPWhecXZmcFloYEdkO3ddUFFuZnBiT2l4UGhmXVdeZ3FhbmZfZV5aV1Fda3dsUD9bW15hZ3ZuZVlbYW5zQ3hqT0BnbHlrRElhc2FgVHhcXGtObmlxX2VPeVBfdEtQYDtBdEloYUJ2aVl3W3dpZFB2aXNwbml5c09mZFNWYG5kZEI6TVRLV0RLV2dKO2VaMTo=</Image></Text-field></Input></Group><Group><Input><Text-field layout="_pstyle7" style="_cstyle6">The M  is expressed by  S(s), Ry(-beta),Rx(alpha) ,T(x1,y1,z1) that denote scale matrix, rotations matrices along y and x - axises and translation matrix, respectively. Parameters of transformations are the following:</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle8" style="_pstyle8"><Image height="120" width="625">TUZOV3RLVWI8b2I8Uj1NRExDZE5OWmtbckdaPVphWHRwTk1uWkpfY05nYnl5eXldT09yTXFJUEpwYU5cXEBOZFxcUWdxeGZ4Tm5sa2RcXGt5dXdHWXVDWVNUVG1DXFxscnhKW3hPa2VvO2RuZkVSXlBPUkh1bnRKS3RLS1xcUUJ1U0VdTGZsTUVAdkNVeEx0T0tkUT51U1xcTGpFZHdDXUx0PXc7UWpKSVdCVVN3QHViPEs/PW9mXW5aPXI8WGxUPFhMbFhhXXlgeVVwbVhgTXhhbVhgcFBEbU1TYHNVeVdgbVlpWXl5cXFpbUpaQVhmeVdSRFNMZVxcZ2lcXEhgblppb19BcmVOaWJGX25IckZeeXNRdk94eHRoa2BXZFFxYks/aXVRbHFXX21ZdmRxYDtnY3NIY2dudXh4W0V2X0p4cHc/ZHNZdWlBZmh5cV1pc1dwX1lXdHFoXWpZbnE/ZmppcEVGa3VOeWhAd1pHeGhPZXN3d29nZFJvWlVnXFxET3JZP3FWTmVPUWZuaGlbaXE+UHNLWWxyX1pJRlxcbXlhRXl5U3drPmloZk9wRT9eQD94XFxveGJwXnZ3YVReWndRXFxaaXhOVmpcXEBoYU9mbmZvZWFcXFNfakBfclVIdDtHdmNOeXVAW14/YWB2b0pAXFxqZ29BcGBRcXBHeF1IeGU7Xl1xYV1taWpBV3c6d2RcXE94aFhpcm9uUD52U2FgOllwXVB1Sml5VUhzRHdgWFFfQGZrQkhzdW52bW9hR0FraVB2Oz5sdD9gQ2ZoaHBsOk9yck5zRWdxT2BmQWdwVnlwQ09jeEdnPlhsXWdtQ0FkcnBgO2FrRFlxbmBtZFlabnh3PVZbYklkRnFxcVFlVD5sO194U3hgVkhdOlBtQz54XFxuY0A+Y2V4Z15heUl2Yz1xXFxPQHA8WFtjZlt1eGdeSXFxcGJwSFxcQElcXD5vSG1jbXlITztJaF1UU1tTRllnXFx3c3ZjQmx3c1Z3RERnSD9PVkdPdzp5aXdBWHJhaVRrZlNrRko/SG8/WF91cnZNY3ZpSFc7VU9JZFtXd2xnRnBjSE5BeGBRZmdLdXZFRWlFWGRlZ0dZdVBpeUVFZGFfd0dZdUJVdWNzRVJpV1hPWTt1Um9FVlZhY0hxc1xcUWdidWRbU3RxQUZAW0RDY0ZGXUJQTUhxO3ZHc1JwP1Q9UWNHR3RrdVBdSW1CYHNcXHB2R0F0X0B0S3R0Q3FYVGVuWHl1YERTTXhsc01NX3VTZ0ByU1hzSlFuXllWXkRNQDxzc1lMeUBSX0hWOklLQUFOOnlOaWVYPkxXYmFKUkF3VFxcSmhpTVNkV05UanhMSmpQeHhweFM8TE9Ebld0SlFAcGBBdD51dGtUdFdtbU1odllgTk5wc2docXZZeHBNV3VMbl1EVl1Ja3FoVlRQbHZhUm88cV5JUV9YWWpcXEw+XXRWRXFXRVdkPXJdRXZkQHhCbW9FPVJkYHVNbWxvZVBuXVhhUU5cXE1LTGxSY0RqPmhvcnBwVU14bEl4YlhOcz12cnlQa3lwaFF0Rk12Y2x1RnhRS0ROSkRNZVxcTEZAdmRMcXFBWVJcXGo9RFZMSE8/WGxoRVldXFxqOnFxZlxcTFVAa1psWWtRcm49TW50cjxBUVg8a0BcXHhoVW5PbFNWQE1dWVlmeU1DbXlSeG9dRU1eSVNbXFx0SHFManhQWGlhQWdraF5hWUFlbT9cXFJnY01pdHd5d01RX2hxX3BQdEd5bWlPd0NHX3ZJW2lfZmR4b0ZfeD1gckhxXFxSbnN5aW89b1xceGFqdUBpTnhhZF5hTz5bTl91R150ZkdtO29ec3dlP0FzZXBoXUlpZD5cXF5oXmA/Zlxcb2dbVl5YeW50XnhlZ3Vyb11FcV95Z1xcXl5fbGBjb0lfO1ltb2hxV1ZnWUFJbUNaeXhia0V0ZXdjQ0NEd1ROPUhWcVhATWhQeVlrU3hLS0NvU0JSVXRHaUVWQ1RZU3M+d3RwWUlKP1NRP1ZVU3dYT0NKRWNgR2NGV0VmU1V1R2Zaa3VjQVd5P0hfR2lmU1dYSWJVZUdfSXV0aWJwa0lyVUhEPVdUbWVEO3hSUVJ2b1laSWVUWVRTU0dAW1RiP0hxS0ZAZ2l3ZVdUa0JjP3NTeXNSZ0dxY3J3Q2NtZ1NGYVdVY2ZgdUNnQVlzS2ZKUVhUdWlUV2Z5aXZzT3lZeUJXeXNSUXR0O3R2SUl0cVNfSXJbQUlKV2ZEY1I+eUNXaUNpVXdZXXh5Z0lrUXdjRVN4eUltcXlfU0hYTXV1cVJVbXl5ZXZ3W3Jla0JJP2lHb1lLP1lPZXJMVVlBWVNOQ1VwP1dsbVVeb3luPWJcXEN4VlFSRFVHTHN3PlBrS11NWEVzZ114X21LSUhRV1RXbERTYWB4YGRxXnlsYU1LcHl2bFxcWHlIcF5EUWtBVVxcQFRGWVBSRFVVQG1WUHl4eWtRbXFFVG1LSWpvXWdFcG07RnBFcW5hdmpBcWNQYXZIaGJ3b3JyV21iaHV3aXN4b3hIR2BwQWY+bm9nZmVyUW1ieWhCWGxyQHFuZ3BBVmpaYHFPZmdmUGROYHFeX2k/XnhpP3ltQV9pYWpLeGFTUWB0QG9NWHBZZ3hZaGl2WWNSZ15DV2VvYU1dZEddRFpzR19FY0BHdVJpZjxXd1tzZUxPWVhPeFlvUnRfZWB1eGVlR2pLWGx5UjxFZ3dJQ0FPUmpRZVxcO2VuP1lIXUl5bVdQSWl5Q2hFSUlrYVlpQXd2b3RUb3NDd2h2UUJgdWlFdVlFO1ZfXUg/aUNhRUZpd2l2QUNNc3dbcVVzcUdmPXNbb3ZRQ3lMY0NAUXI8V1c6Q3M7V1hAT2ZRPVNpVXlLWUJld2dkcVd5ZXZRZ3ZoU1Zmc0dYeUZMVWc9Q0VudUlpSWRsd3l3Z0dRa2ViZVNQRXRuP2c+cWRHP2d5bXhuR1hAXWZcXHlZd21nO3FUPWlXZGN1cT9YXFxzZ3ZvZmdpZUpJVmZ1d1V5RkdJY0FhRWk/VD1taVZjY1tHU1JtU3ZTc2tRSGJLRVJJUltXdVpldjxZWFZ5R2JjQ3lZSTp3eEtlQ11BZWBJZ1VhY15vaU47WWJJeEtDVltxVFxcUVZjZ1lKP3lVVVNWXXdJcXk8V3ZZYHluWW5HWHduZXRNSzpgblxcdE5cXHRUWzxQOzI7</Image></Text-field></Input></Group><Group><Input><Text-field layout="_pstyle7" style="_cstyle6">It should be pointed out that we use the left clockwise oriented coordinate system similarly as Maple uses. Below we put the figure that can be useful to understand the idea that lies behind the construction of any linear segment in 3D.</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle9" style="_pstyle9"/><Text-field layout="_pstyle8" style="_pstyle8"><Image height="250" width="250">TUZOV3RLVWI8b2I8Uj1NRExDZE5ieGo6SDpEVUtcXFZ5Sj08T2BMb1xcanl5eXlRdGZ5c2hDO2lWTENUSmNEWG9YdW12aVlFQUVEP0l4cVdpYVdYTltjZ2FmdD9GPXdTXFxHZjtFSVtLQ0FNYzxxUlxcP2ZGZVI7X2JCeWVaUWJcXFtSS0tlWnFGQl1EcXlCWj93RF1ST09iXFxLY15BSDtdRGE/Y1xcVUNEc0ROc0J0Q2ZPO0ZyU0VFUUlBV3VXa1ZQeVh1V2h1c1dYWVNqP3doXUZ5UXV1QXlHWWVpYWlTd3hgbUhKPVRwQ0U9V3RYX2JQeUVdYHBMPFRnPExebnJqRl47QF5PP2JVP2NaT2M9Plxcdl5uO0haSmllYlhvRj5sWVlmOkBnQGVpZ0c7Z0ZaWUJ0V1NXa2Q6UURSTUJ0Z0U+YUNqUXRaeXlxTXhCR0Jsd0NSO0ZEbXNmWVJIQUJBeXNSO1ZneUNoV2NFX0VKeXZuPUQ+O1hSRUNDV0JgX2RieXVeTHlbbXB1aU47XFxwbkV1b0hTb0VYWHVOUUhsSTxZXFx4cWA8WGxQdldYa0VRWXJ1ckpwV2VRdUh5dT9xTm5lTndUbU91S1g8VnJod0FsS2g9d2xod3RgcEFgVWlVd2VRVWRpcDxJTHl1TENxS1dMWGRsblxcTVhZYXhaREs6VXlZeXVzZE88aFFXXXdhVXFxRXNqeHVodE5MeXZeQVZedXRicU9KaHdQZFBueFVBUG5BYGxqQFQ+UHNxcVk6ZW9qVWtxWFZmYHk6PXdKXVh5cVBXdEtEUVlmUUppPUtUeWpaRE06bU1NSHhabUtkdGtjdE0+XFxZW2xUYzxWYVlsSUlqQkxVT1RvdXVqXl1RbkxOU3FKcGx2XUFqbW10S1hLbUBOdV1uSExwWHVUXFxtTHRUTlp4TEhVb0VBVUJQUEQ8UEVRd0hdc2ZxeGlRWDxlUlZoSnJoU2VBbldETEZoalBUcDtAUnJ1amtATFZUdHQ8bXJwVmxwdXNsT21xb0ZFcXZIeVV0SmJMVWJ2bFpnbHBAdFhAaHNYeUFvW3Jna1BOW1ppXFxoUFpjR3A/bmpeQWpScHQ7Pm5BSWVSZ2lrUV5hX3M7dnNWYWlub25MZ3dzVm87SV9bWHJWeV9Ad1pfXndHZndaUVp3WHZveHJoaWdKSXJHVm9FaHNbWG89P148UXVgZndiQXRAcWBMUXlEVlBFWGFxd3ZrUlFLaTxRR1VbeVBldz5XZUVHQ0FbYkl5REtlZkptRmdhVmlJdTpBdHdnREVzaWxHYnhNY18/c0pRdGNRZWVLYmo/YlZrR0V1RlpNV0htckVneHRzR0dpc3FXZVA7SE07WEVfRWBJQ0Z1YkJRREljd2RVeTtddUI7ZWZHWXlDZW5Lc21Bc1hjckpHaTxjSDtzRk1DUjpTRVRZZmdDd1FJdm47dkBlQ1dbZ29FZj1rd213VD1DdklDSVc7WGNhaGVvd0RzVUJJdzpXRW9FRlk7WXE7ZHlfczpld2NHSW51YmN3Y3dDcnd1d2pzWVdbVmBdRWlBQ0lRd1BTRXlfY0VvdV89YlQ9VEp5eXBXV3hJSWZjYlRVZztDYmRxeFxcT3ZRd3JYc0VsPVV5Y2lBZ3lBeUhGaXJtcWRBO2VnW2lJY0ZoV2JTRWk9UUJEPVhFa3ZheXc8UXU8V2U9YVlSXXJOR0VAcUVEW0JZYWRJTVlrS3U/R2NOT1JCO3ljQ3I+T2hUWXdBPWc/U0hyV2c/QUNxa3hKdUZHQUJYbWRCV0RbZ1RoW1VLYWRYV3hPYUJLS0dpc3lbQ2JiQUNrP1R1P0hZWUZNTWRYdWd3Q3Y8Y3RVRWJxX1hoR0VyT0lOVWVib1RmS1NXVUNvaWJ3QXM/W2ZtbXdvSUlTV2VJUUNhS1d0W1Q/a1ZuSWdiV0lLY0RZQ2dkRUg+b1JiWVdVTUk8S2NDaXlzW2dFQ0lpVVVHUWRvR3lgSWZtO0d3V0NVS0lHWVhmTVVoS1NJRXN0VWlLaWJNZ2N4S0RvPXJTSUZvV0RvV2NUQ0NoV0RtU0NKTXJpYWJpP3JiY2VCU3dPXVhfYWJuR2JWQ0dTVWRwZ0Jac2dqTWJJZ1dFO3VlPWdJY1c6U3NUaUVoUXZoZ3lOUUJqX1RNW3VsP0JDT0dLRUJoP2RgZ1VqP0J2UVRGV2dAU2hEO3NjT3RdW3I/X0dIa2dfO0hfUUdMXWh2SXlIUUJKYWR2cXZFX3VqTVNAO3I/X3l1T0lZPVk+X1NFPUZhcXNRU2h5cVRTd3dJVVM6c0RsVVlbWXI/dVNXQ0NJa3Y6eXRyP2RqP2d0T3JHTVVhO0N1W2VOSUdoW1Y/W2NPU1ZbaXlWR0J4YWVrVXR3Y0lNSUZCQUJNa0JCeVJGO0hNX2tLSVN1QXI7VFRoWEtaQWpCSHRbeXU9YFBfYFVzbVNUYWM6Plo6RmM/b2M+b288P2Y8Mzw=</Image></Text-field></Input></Group><Group><Input><Text-field layout="_pstyle7" style="_cstyle6">Detailed analysis of the expression for </Text-field></Input></Group><Group><Input><Text-field layout="_pstyle8" style="_pstyle8"><Image height="29" width="576">TUZOV3RLVWI8b2I8Uj1NRExDZE5OWjpLOnBrOkg6XFxxZ0FudEo9PE9gTG9cXHh5eXlJUE9bSVd5Yjp3WUxDVEpjRFhvWHNldGlRRT89REB1dXFDZV5xSGtLWGVLU3JLYkJhRmJfVUtPdkRfRDtRRmhdcjxRRj9pZGNzR1pLVlNbUj9RRlRHaXI/ZlxcZ2J4WUJ0PVVCZ1ZEU1NbU2Vab2g8b3hbVXRTSWk+X0JwS2lTaXhVZ2V3V2k+U1Z2O1Rlc0JodXVGWWVXd2hZeWdzcUNyeWNAY1J3c2lUTUN0V1hLcWVua3h3P3RxPUJ0O1leQXdCY1g/eWVcXGNoTU9CdDt5TUF1d1tTYnlTQT93RVdiPztWY2RsaWhOeXFMOz1YO0BtO3RQO1hNRlB1Z3RqYkRPZ0lYVl1PdWRLP1lMXm1xT0l0XFxkWFVlWFppeUVQUkJBcWtRT2BsVDthTz1sbzt0blNUaklUUVg8V0d1anJxdWpgd2E9b0ZVSklgVnVMUF5hUHJcXFF4cFRUcXZGXFxuQUlTVFRzaFRQSkFOaUlQZEhPY0B2Vk1WPWVqbGB3QzxXckVKR0xxUD1TQ0xvRmF2PGV4cFhwVEhTV21WdWhRO1F1SHRvR0xScFxcTW1Yd15JUl9tbD9scDpYa19oWTtxTk5AcW5tbXc8V0pZTEZ1Vnh0WW51c1lMU1dkTnFhWUp5UllpWXV4dllIa1hYSm1Ec3RFUVhIamtAa1NNbmBVT05sS1ZZdWJgSndFVl48T0o8dW9seHdVVFNhTEA8bE9JUEN5bU5FV2VRUWFBSm9gb1hMbU5cXFViRFZhZHZJcXduSVlQaE0/ZE9dVFlHXFxxPnFwYHBKPmRzcWRYY0xYbHVtdl1xPU1NXFxQckNBeExocFQ8dF5Bd0FIbENFUl5cXHhAbWpGVE1meVZIcUs9VHVCUU5RWHRMVFlDeFZWVWxQUU5SdXY/UFBTVE1NUXRFUFhJaXJSXVdkRGpBQVlTdU5SdFBjUFZQZU5adXFiQFFCXU1CXUpIdVY7cU09cFREQHZPdFhgdFVJPXBHQFFAXFxrUnhSQWhWUlhKVXlTVFhPPD1TXFxscExobD9lSmFEWHA8U1xcTFU+bHN1RXhgSFA9XXRNaE9VdUxoZVdvUHNqUHc+RFFVZFM9XVU/TU1lbFBYUFdcXG1MXFxdbnlxdFc8VkhEdT1RVV1VVnJpU01VV2twa15ZdGxtdGlZTjt1eVJwVXRRal5NdD9hVVJ0WXd4UGRhck1MT2FVbW1JdVdRbzw9cExkdVlsU3F0TUlFcWdZVztJcHBdVE1NVkBBcUJEV3NES0FgT2RUV25IWVZ0T1JBc05cXG5baFlBaXRMZVhpZGdhYXA+ZlxcUWZiVD9wPEdna3dpbGB5RG5cXGZRQ1liQ1lidk9SYD9jdUtSW2t0UmdEP0lDQVFiV3VWc0lEQGVndF9XZVtIcFdodUloRWFjUWlYR3dzTEdGQnVFWHlGVGlGbDtUWlVnV2FybnNXQ2FVdT1zaGFlbHNkZGd4RXFiTWVxR0lsQXBzXlB1UEBRUllwb0l0V1xcb2x4V1hcXHlDdWpGeFlNWXB1bU1LeXVMTFJJUVJFZHF5eW93WUtFcGl3eWBkSXVjUXJhUVk+WkNnYkhfYmhQYlpPNko=</Image></Text-field></Input></Group><Group><Input><Text-field layout="_pstyle7" style="_cstyle6">shows that because of the special form of matrix   F1 the formula for FM1 may be reduced to:</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle8" style="_pstyle8"><Image height="25" width="240">TUZOV3RLVWI8b2I8Uj1NRExDZE5Cdj5aU0ZaPVpvPnRrVk1uWkpfY05nYnl5eXldT09yTXFJQGplYE5cXEBOZFxcUWdRdmJ4bV9IVlpsa3h4dV9RV1xcZUtsVWpCZW1GPG9aeVJiYW5RPVhqXXdSSVB4PUtXVVlLQGo8aFVWYU1WTGtNWFZBdFJLWE9yPHlfXFxqYnlOQkBOUnBsSlh4TGBUVElSdEx3VW1rcXF1aXl5O3RZO0BYc2hNdlFvbGh2Q21rbWlYXmxVSnlrQE1OZ0RRaTx0WVRybmxtZHRUczxNXmlxW0xNaXhXO01UY2xKaUlPUEV1XWVtR1l3QW12XUVvZXV0PFBOcXBsTWxSZ3BrT1lWT2l5Y3VucD1YYnFPRnBSamVXVVl3RUBsQDxRakRwOlR4WmxzSlF0SE1sbEx0RlRMW1VKYUhqY1VWP2xuVXFQcUFyV2xRT2RqWl1YTERPcWR4RFFvQkh4RlBOa2lTZDxsW1Rsc2BPRVh4dFRxPHhKUGZzYkZfZVdnSXlvQ2lbUEFebmZrYEZkST51TF9gXFx2XUZYXFxfP2pHeGZjbnRrWG9seWt4R2w/PnVAZl5maFtwSHVyZmQ6d1tgUWRASGt5QWJkYWU9d2tMQXVpPndET2tzSWdOeFxcPl9dV1BnQFdlZ254PlB2O2F5RV9gcGFcXHF4YmJAbDt4XVVJc1Bedz5WZmVwc3Jva0Y/dXVRc0xwYGVXaV1Pc05uZ2dRW0xRdV52anVBZ2ReeV1ucTteXUh2Zng+bTtxbmpMOkZjP29jPm9vPD9mPDM8</Image></Text-field></Input></Group><Group><Input><Text-field layout="_pstyle7" style="_cstyle6"> that means that, in reality, this expression does not depend on scale and rotation matrices and depends only on translation. FM2 may also be simplified similarly as FM1. Further simplifications lead to the following formulas:</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle8" style="_pstyle8"><Image height="117" width="376">TUZOV3RLVWI8b2I8Uj1NRExDZE5GWnJbb0daPVp4T3Fid0tuWkpfY05nYnl5eXldT09yTXFJSEpRYU5cXEBOZFxcUWdxWEZ5dXFIV1pMa115d1ZYV11xVEtVd1xcXFxqdlxcbFBpbkZcXGtbVXdKRVRdTFFuXXN5d3h5Pl89TmRBPlxcaE5vSndaQGBrRj5jPnh5OkhqeT5yPGdcXE0+Y1tvYkJHWm8/Z2FOXk5IXkdQdD5YaWFhbWl2c3NYX0RfZEA+ZGZmcEN4bXlweXRpdWl4a1lpWlp5cXJud19xc1VJcUlJcks/Z3JWZlR2XFxMeWtfdnRleGQ7aHJDPnJmaVo6eGVnZ25raXdaSXJQT149P2R4ZlpyP21idnk+aGw7PmVsPmhiRmd1XmtDV2RZdnc7Zm5JVlpLUG9NQVxcWVFraz5yRFB0WT9wckhsQEBmTT95Z3lmdD93VU9cXGhRdE1JaFVZbWNZYlFBaVdIYlpHeHFhX0hIbj93XVJodmZucGJZYkVwbVhQaE9uYWJOWm5RWktJaWFRcmp5anBZaFBPXWxeWkFRbkl2a2RRc3lQWkdHaEh4czpJcGZnZmhJZltGYz0/XkB4XFxkUV9Yb3NfR3ZlSGZJaXJdSGt1eWlkeG1keWpvQWtNbl5gYWBGcVtHd3BuR3Fqb3F2Pm1MSGxQWXliYHJlYGp5TlxceW5pYEluc1lqckd3al5teWBqeU5cXEN3bnZ4YUR5XU1uZW1YbmtnYHdZdlJvXFx3WHNmbnlzPmlSXmRIaWZqQV1bQGNYd2dlZ2t1Tm9ybmJVbl1gSXlNWWJmSWlFT2t5TmVpPnhcXGFyUnl4PnhhTHJ2X0VJR0d5bWZ0VWJ4P3RIbXhGdURwb1VQY2N0cWVRVWdSb0d2RXdGYXlDd0lUa0hOd0lMc0ZYd2hhQ3k9YXl1SWNUR2RTW1c+c1loZ0VQX0R5XUZMT0ZOPVN4QUhia0hfa1VuW1dQTXQ8T1ZvQ3RfQ1RHWXdEbXlqQ1RcXGVldVVmakdVUGNCP3lYPFdDQ1FCSHFYSW1pUHNzQEVJbFN3dD9odHF0TnFVSGV5bTt1Pl90eTt2Y29Ja1VTYG9HZVFocktwPlhyU1RXVUBWTUxZWG1XS1VzXjx5R1hwQXl1WEBUWVxccXlxV05Jd19BVlFcXFBuSFZTbFhqSVZcXHRVWFxcbztcXHVwaXFOQVA7QUxGSXZDXVlCPFRHcGpzWW5bVXQ8SGpYdWw+dVhadVVreWpVPXlNRXBqeVZYUVBxVVdQSHlwWXNcXHh4YFh3d01veXlSb2lqcT1xRE1sS2hvZGlTVl1yWURMRmhTXFx4cTpJc1hRVGpldEFJTUBwVV1wcUZVeDtVd3A9UWJcXFFuSXQ9eVlZXFxUW0lWRHl1d2BYWXFubmF3TWx5PXFSZkRMZmFzXFxNTVZdUVZocVpQWT5gTD1NTmdYdGFITmNsdj5ETVNRUUtZeDplTnVxbV5hcEBod3RJT3hxVlhFc1ZgbHhYVE1ddm5FU3NcXHhTZVdndHM9RXlsTU5naXVLdVVkYW5zcVNSXFxub0BWeXRucURKQXlSVUFPdWlWWlR0XVxcdmR1WF5xbEtAd2U8cUN4S21hTEZJeE1pcE55V1tdUFt5d09sWWtIT1hhcHd5VkE8cnR5a0hAanVYakRQUHRVTFk8UmtYeW5JUWZscHFVb0o8WXlVUVlUcHhRcW9pa1ptdFlAVW5Jcl5Zd1FUa2BQSkhldj9McV08U049Vz1Qd3dJdlxcaVZCdW1HZWpMZHRxZVRjTXRheG9jcW5EZHhicFFQdXhudFJReVdNdUs/YXJnaXZkRVZecXhCbW1ERFFOdXdkbEpqYFlReEs8XW1kWVh4XFxKXWxrYGFrXUV4W2R4XnR0RXhPTXlXXUlLWGF2TGB5U3huPHVwYnBZWXRyP1R5ZkVsdHlQTj1XbVFsb0FZX1l5Y2hKRXFKc1VOcVBZXUlYd3lyd2xZPVRLVVhXbXhTYmlPZko6YG5cXHROXFx0VFs8UDsyOw==</Image></Text-field></Input></Group><Group><Input><Text-field layout="_pstyle7" style="ParagraphStyle1"><Font style="_cstyle6">from which it follows that </Font><Font style="_cstyle8">IFS  </Font><Font style="_cstyle6">for  linear segments depends only on  its ends i.e. points P1=[x1,y1,z1,1]and P2=[x2,y2,z2,1].</Font></Text-field><Text-field layout="_pstyle7" style="_cstyle6">The above mentioned observations help us to improve Maple code for generation of any linear segment. Especially, using the above nice tricks one can simplify Maple codes given in [2] and [3]. In this worksheet we demonstrate some examples of construction of 3D curves and wireframes generated fractally using both deterministic and probabilistic approaches.</Text-field></Input></Group><Text-field layout="_pstyle7" style="_pstyle7"/><Text-field layout="_pstyle7" style="_pstyle7"/></Section><Section><Title><Text-field layout="_pstyle6" style="_cstyle5">2. MAPLE PROGRAM</Text-field></Title><Text-field layout="_pstyle7" style="_pstyle7"/><Section><Title><Text-field layout="_pstyle10" style="_cstyle9"> 2.1 DETERMINISTIC APPROACH
</Text-field></Title><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">restart;</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">with(linalg):</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">with(plots):</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">DEFINITION OF HOMOGENEOUS POINT IN 3D</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">P:=(x,y,z)-&gt;[x,y,z,1]:</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">TRANSLATION MATRIX</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">T:=(x,y,z)-&gt;[[1,0,0,0],[0,1,0,0],[0,0,1,0],[x,y,z,1]]:</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" style="_pstyle11"/></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">POINT TRANSFORMATION</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">TransPoint:=proc(p,t)
[t[1]*p[1]+t[2]*p[2]+t[3]*p[3]+t[4],t[5]*p[1]+t[6]*p[2]+t[7]*p[3]+t[8],
t[9]*p[1]+t[10]*p[2]+t[11]*p[3]+t[12]]
end:</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" style="_pstyle11"/></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">FACE TRANSFORMATION</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">TransFace:=proc(face,t)
local i;
[seq(TransPoint(face[i],t),i=1 .. nops(face))]
end:</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" style="_pstyle11"/></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">OBJECT TRANSFORMATION</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">TransObj:=proc(obj,t)
local i;
[seq(TransFace(obj[i],t),i=1 .. nops(obj))]
end:</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" style="_pstyle11"/></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11"> IFS3d PROCEDURE</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" style="_pstyle11"/></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">IFS3d:=proc(obj,n,List_of_Trans)
local i, j, k, s, ResObj:
ResObj:=obj;
for j to n do
    s:=NULL;
    for i to nops(List_of_Trans) do
    s:=s,seq(TransObj(op(k,[ResObj]),List_of_Trans[i]),k=1 .. nops([ResObj]))
    od;
ResObj:=s;
od;
polygonplot3d([ResObj],axes=boxed,labels=[x,y,z],color=green,scaling=constrained,thickness=5)
end:</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" style="_pstyle11"/></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">GIVEN INITIAL 3D OBJECT - BOX</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" style="_pstyle11"/></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="ParagraphStyle2"><Font style="_cstyle10">v1:=[1,0,0]:
v2:=[1,1,0]:
v3:=[1,1,1]:
v4:=[1,0,1]:
v5:=[0,0,0]:
v6:=[0,1,0]:
v7:=[0,1,1]:
v8:=[0,0,1]:
front:=[v1,v2,v3,v4]:
back:=[v6,v5,v8,v7]:
left:=[v1,v4,v8,v5]:
right:=[v2,v6,v7,v3]:
bottom:=[v1,v5,v6,v2]:
top:=[v4,v3,v7,v8]:
box:=[front,back,left,right,bottom,top]:</Font>
</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" style="_pstyle11"/></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">GIVEN INITIAL 3D OBJECT - TETRAHEDRON</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">tetra:=[[[1., 1., 1.866025404], [1., 1.816496581, .7113248653], [.2928932190, .5917517094, .7113248653]],[[1., 1., 1.866025404], [.2928932190, .5917517094, .7113248653], [1.707106781, .5917517094, .7113248653]],[[1., 1., 1.866025404], [1.707106781, .5917517094, .7113248653], [1., 1.816496581, .7113248653]],[[1., 1.816496581, .7113248653], [1.707106781, .5917517094, .7113248653], [.2928932190, .5917517094, .7113248653]]]:</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" style="_pstyle11"/></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">3D BEZIER CURVE AS FRACTAL</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" style="_pstyle11"/></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">DEFINITION OF BERSTEIN POLYNOMIALS</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" style="_pstyle11"/></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">B:=(i,n,u)-&gt;(n!/(i!*(n-i)!)*(1-u)^(n-i)*u^i):</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" style="_pstyle11"/></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">3D BEZIER CURVE</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" style="_pstyle11"/></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">KB3d:=proc(p)
local Qx,Qy,Qz,a,b:
Qx:=(u,p)-&gt;sum('p[i,1]*B(i-1,nops(p)-1,u)','i'=1..nops(p)):
Qy:=(u,p)-&gt;sum('p[i,2]*B(i-1,nops(p)-1,u)','i'=1..nops(p)):
Qz:=(u,p)-&gt;sum('p[i,3]*B(i-1,nops(p)-1,u)','i'=1..nops(p)):
a:=plot3d([Qx(u,p),Qy(u,p),Qz(u,p)],u=0..1,v=0..1,color=red);
b:=PLOT3D(CURVES(p),COLOUR(RGB,0,1,0),LINESTYLE(3));
display(a,thickness=4,axes=boxed,labels=[x,y,z]);
end:</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">AN EXAMPLE OF 3D BEZIER CURVE</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" style="_pstyle11"/></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">KB3d([[2,1,3],[6,2,4],[1,-3,1],[5,0,-3],[3,4,5],[6,6,2]]);</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" style="_pstyle11"/></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">FRACTAL 3D BEZIER CURVE GENERATION PROCEDURE. Four points P1,P2,P3,P4,initial object and n - the number of iterations should be given. </Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" style="_pstyle11"/></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="ParagraphStyle2"><Font style="_cstyle10">GenBez3d:=proc(P0,P1,P2,P3,box,n)
local PP,L, M, LP, MP, bezier3d;
PP:=[P0,P1,P2,P3];
L:= [[B(0,0,1/2),0,0,0],[B(0,1,1/2),B(1,1,1/2),0,0],
[B(0,2,1/2),B(1,2,1/2),B(2,2,1/2),0],
[B(0,3,1/2),B(1,3,1/2),B(2,3,1/2),B(3,3,1/2)]];
M:=[[B(0,3,1/2),B(1,3,1/2),B(2,3,1/2),B(3,3,1/2)],[0,B(0,2,1/2),B(1,2,1/2), B(2,2,1/2)],[0,0,B(0,1,1/2),B(1,1,1/2)],[0,0,0,B(0,0,1/2)]];
LP:=evalm(inverse(PP)&amp;*L&amp;*PP);
MP:=evalm(inverse(PP)&amp;*M&amp;*PP);
bezier3d:=[[LP[1,1],LP[2,1],LP[3,1],LP[4,1],LP[1,2],LP[2,2],LP[3,2],LP[4,2],LP[1,3],LP[2,3],LP[3,3],LP[4,3]],[MP[1,1],MP[2,1],MP[3,1],MP[4,1],MP[1,2],MP[2,2],MP[3,2],MP[4,2],MP[1,3],MP[2,3],MP[3,3],MP[4,3]]];
IFS3d(box,n,bezier3d);
end:</Font>
</Text-field></Input></Group><Section><Title><Text-field layout="_pstyle13" style="_cstyle13">2.2 EXAMPLES</Text-field></Title><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">AN EXAMPLE - FRACTAL GENERATION OF CUBIC 3D BEZIER CURVE</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">starting from a box</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">GenBez3d(P(0,0,0),P(0,1,0),P(1,0,0),P(0,0,1),box,6);</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">starting from a tetrahedron </Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">GenBez3d(P(0,0,0),P(0,1,0),P(1,0,0),P(0,0,1),tetra,6);</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">starting from the segment joining points [0,0,0] and [1,1,1]</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">GenBez3d(P(0,0,0),P(0,1,0),P(1,0,0),P(0,0,1),[[[0,0,0],[1,1,1]]],6);</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">ANIMATION</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">starting from a box</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">for n from 0 by 2 to 8 do
GenBez3d(P(0,0,0),P(0,1,0),P(1,0,0),P(0,0,1),box,n);
print(`Iteration` = n);
od;</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">starting from a tetrahedron</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">for n from 0 by 2 to 8 do
GenBez3d(P(0,0,0),P(0,1,0),P(1,0,0),P(0,0,1),tetra,n);
print(`Iteration` = n);
od;</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">starting from the segment joining points [0,0,0] and [1,1,1]</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">for n from 0 by 2 to 8 do
GenBez3d(P(0,0,0),P(0,1,0),P(1,0,0),P(0,0,1),[[[0,0,0],[1,1,1]]],n);
print(`Iteration` = n);
od;</Text-field></Input></Group><Text-field layout="_pstyle7" style="_pstyle7"/><Group><Input><Text-field layout="_pstyle11" style="_pstyle11"/></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">FURTHER EXAMPLES </Text-field><Text-field layout="_pstyle12" style="_cstyle11">EXAMPLE 1</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">Using Bezier Procedure</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">display(
KB3d([[0,0,0],[0,1,0],[1,0,0],[0,0,1]]),
KB3d([[0,0,1],[0,-1,0],[-1,0,0],[0,0,2]]),
KB3d([[0,0,2],[0,2,1],[2,0,1],[0,0,3]]),
KB3d([[0,0,3],[0,-2,0],[-2,0,0],[0,0,0]]),
orientation=[120,30],labels=[x,y,z],scaling=unconstrained);</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">Generated Fractally</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" style="_pstyle11"/></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">display(
GenBez3d(P(0,0,0),P(0,1,0),P(1,0,0),P(0,0,1),box,8),
GenBez3d(P(0,0,1),P(0,-1,0),P(-1,0,0),P(0,0,2),box,8),
GenBez3d(P(0,0,2),P(0,2,1),P(2,0,1),P(0,0,3),box,8),
GenBez3d(P(0,0,3),P(0,-2,0),P(-2,0,0),P(0,0,0),box,8),
orientation=[120,30],labels=[x,y,z],scaling=unconstrained);</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">Animation</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">for n from 0 by 1 to 8 do
display(
GenBez3d(P(0,0,0),P(0,1,0),P(1,0,0),P(0,0,1),box,n),
GenBez3d(P(0,0,1),P(0,-1,0),P(-1,0,0),P(0,0,2),box,n),
GenBez3d(P(0,0,2),P(0,2,1),P(2,0,1),P(0,0,3),box,n),
GenBez3d(P(0,0,3),P(0,-2,0),P(-2,0,0),P(0,0,0),box,n),
orientation=[120,30],labels=[x,y,z],scaling=unconstrained);
print('Iteration'=n);
od;</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">EXAMPLE 2</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">Using Bezier Procedure</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">display(KB3d([[0,-1,0],[1,-1,0],[-1,1,0],[0,-1,1]]),
KB3d([[0,-1,1],[0,-2,0],[-2,0,0],[0,-1,2]]),
KB3d([[0,-1,2],[0,-3,0],[-3,0,0],[0,-1,3]]),orientation=[20,50],labels=[x,y,z],
scaling=unconstrained);</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">Generated Fractally</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">display(
GenBez3d(P(0,-1,0),P(1,-1,0),P(-1,1,0),P(0,-1,1),box,8),
GenBez3d(P(0,-1,1),P(0,-2,0),P(-2,0,0),P(0,-1,2),box,8),
GenBez3d(P(0,-1,2),P(0,-3,0),P(-3,0,0),P(0,-1,3),box,8),
orientation=[20,50],labels=[x,y,z],scaling=unconstrained);</Text-field></Input></Group><Text-field layout="_pstyle7" style="_pstyle7"/></Section><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">PROCEDURE FOR 3D SEGMENT GENERATION (two points,starting object and n - the number of iterations are needed)</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">GenSe3d:=proc(P1,P2,obj,n)
local F1,F2,segment;
F1:=[[1/2,0,0,0],[0,1/2,0,0],[0,0,1/2,0],[0,0,0,1]];
F2:=[[1/2,0,0,0],[0,1/2,0,0],[0,0,1/2,0],[1/2,0,0,1]];
segment:=[[F1[1,1],F1[2,1],F1[3,1],P1[1]/2,F1[1,2],F1[2,2],F1[3,2],P1[2]/2,F1[1,3],F1[2,3],F1[3,3],P1[3]/2],
[F2[1,1],F2[2,1],F2[3,1],P2[1]/2,F2[1,2],F2[2,2],F2[3,2],P2[2]/2,F2[1,3],F2[2,3],F2[3,3],P2[3]/2]];
IFS3d(obj,n,segment);
end:</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" style="_pstyle11"/></Input></Group><Group><Input><Text-field layout="_pstyle9" style="_cstyle14">FRACTAL GENERATION OF WIREFRAME 3D OBJECT - BOX</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">a:=GenSe3d(P(1,1,0),P(1,1,1),tetra,5):</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">b:=GenSe3d(P(0,0,0),P(0,0,1),tetra,5):</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">c:=GenSe3d(P(0,0,0),P(0,1,0),tetra,5):</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">d:=GenSe3d(P(0,1,0),P(0,1,1),tetra,5):</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">e:=GenSe3d(P(0,0,1),P(0,1,1),tetra,5):</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">f:=GenSe3d(P(1,0,0),P(1,0,1),tetra,5):</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">g:=GenSe3d(P(1,0,0),P(1,1,0),tetra,5):</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">h:=GenSe3d(P(1,0,1),P(1,1,1),tetra,5):</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">i:=GenSe3d(P(0,1,0),P(1,1,0),tetra,5):</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">j:=GenSe3d(P(0,1,1),P(1,1,1),tetra,5):</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">k:=GenSe3d(P(0,0,0),P(1,0,0),tetra,5):</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">l:=GenSe3d(P(0,0,1),P(1,0,1),tetra,5):</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" style="_pstyle11"/></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">display(a,b,c,d,e,f,g,h,i,j,k,l);</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">obj:=box:</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle9" style="_cstyle14">ANIMATION starting from a box</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="ParagraphStyle2"><Font style="_cstyle10">display(seq(display(GenSe3d(P(1,1,0),P(1,1,1),obj,n),GenSe3d(P(0,0,0),P(0,0,1),obj,n),
GenSe3d(P(0,0,0),P(0,1,0),obj,n),GenSe3d(P(0,1,0),P(0,1,1),obj,n),GenSe3d(P(0,0,1),P(0,1,1),obj,n),GenSe3d(P(1,0,0),P(1,0,1),obj,n),GenSe3d(P(1,0,0),P(1,1,0),obj,n),GenSe3d(P(1,0,1),P(1,1,1),obj,n),GenSe3d(P(0,1,0),P(1,1,0),obj,n),GenSe3d(P(0,1,1),P(1,1,1),obj,n),GenSe3d(P(0,0,0),P(1,0,0),obj,n),GenSe3d(P(0,0,1),P(1,0,1),obj,n)),n=0..7),insequence=true,scaling=constrained);</Font>
</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">seg:=[[[1,1,1],[2,2,2]]]:</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="_cstyle21"><Font italic="false" size="12" underline="false">FRACTAL GENERATION OF WIREFRAME 3D OBJECT - TETRAHEDRON</Font></Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">display(
GenSe3d(P(0,0,0),P(.3,1,.5),seg,8),
GenSe3d(P(0,0,0),P(1,.3,.5),seg,8),
GenSe3d(P(0,0,0),P(1,1,.3),seg,8),
GenSe3d(P(.3,1,.5),P(1,.3,.5),seg,8),
GenSe3d(P(1,.3,.5),P(1,1,.3),seg,8),
GenSe3d(P(.3,1,.5),P(1,1,.3),seg,8),
orientation=[120,75]);</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="_cstyle21"><Font italic="false" size="12" underline="false">ANIMATION starting from a tetrahedron</Font></Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">display(seq(display(
GenSe3d(P(0,0,0),P(.3,1,.5),tetra,n),
GenSe3d(P(0,0,0),P(1,.3,.5),tetra,n),
GenSe3d(P(0,0,0),P(1,1,.3),tetra,n),
GenSe3d(P(.3,1,.5),P(1,.3,.5),tetra,n),
GenSe3d(P(1,.3,.5),P(1,1,.3),tetra,n),
GenSe3d(P(.3,1,.5),P(1,1,.3),tetra,n),
orientation=[120,75]),n=0..6),insequence=true,scaling=constrained);</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" style="_pstyle11"/></Input></Group><Group><Input><Text-field layout="Normal" style="_cstyle21"><Font italic="false" size="12" underline="false">ANIMATION starting from a segment</Font></Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">display(seq(display(GenSe3d(P(0,0,0),P(1,1,1),[[[1,2,3],[3,4,3]]],n),GenSe3d(P(1,1,1),P(2,3,4),[[[1,2,3],[3,4,3]]],n),GenSe3d(P(0,0,0),P(2,3,4),[[[1,2,3],[3,4,3]]],n),labels=[x,y,z],orientation=[-120,70]),n=0..8),insequence=true,scaling=constrained);</Text-field><Text-field layout="_pstyle14" style="_pstyle14"/></Input></Group></Section><Section><Title><Text-field layout="_pstyle10" style="_cstyle9">2.2 PROBABILISTIC APPROACH</Text-field></Title><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">PROCEDURE FOR CREATING TWO FUNCTIONS f1,f2 FROM GIVEN COEFFICENTS: a,b,c,d,e,f,g,h,i,j,k,l</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="ParagraphStyle2"><Font style="_cstyle10">MakeMapFromCoeffs:=proc(a,b,c,d,e,f,g,h,i,j,k,l)
   local x, y, z;
   unapply([a*x+b*y+c*z+j,d*x+e*y+f*z+k,g*x+h*y+i*z+l],x,y,z);
end:</Font>
</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">MakeMapFromCoeffs(1,2,3,4,5,6,7,8,9,10,11,12):</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">GENERATOR OF UNIFORMLY DISTRIBUTED NUMBERS 1 or 2 </Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="ParagraphStyle2"><Font style="_cstyle10">d:=rand(1..2):</Font>
</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">PROBABILISTIC PROCEDURE FOR GENERATING OF QUADRATIC BEZIER CURVE.Four non-colinear points P0,P1,P2,P3 and n - the number of iterations should be given).Starting point is chosen as P0 i.e. it belongs to the attractor! </Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="ParagraphStyle2"><Font style="_cstyle10">BezProb3d:=proc(P0,P1,P2,P3,n)
local L, M, PP, LP, MP, i, l, z, dd, x, y, f1, f2, zz:
PP:=[P0,P1,P2,P3];
L:= [[1,0,0,0],[1/2,1/2,0,0],[1/4,1/2,1/4,0],[1/8,3/8,3/8,1/8]];
M:=[[1/8,3/8,3/8,1/8],[0,1/4,1/2,1/4],[0,0,1/2,1/2],[0,0,0,1]]:
LP:=evalm(inverse(PP)&amp;*L&amp;*PP);
MP:=evalm(inverse(PP)&amp;*M&amp;*PP);
f1:=MakeMapFromCoeffs(LP[1,1],LP[2,1],LP[3,1],LP[1,2],LP[2,2],LP[3,2],LP[1,3],LP[2,3],LP[3,3],LP[4,1],LP[4,2],LP[4,3]);
f2:=MakeMapFromCoeffs(MP[1,1],MP[2,1],MP[3,1],MP[1,2],MP[2,2],MP[3,2],MP[1,3],MP[2,3],MP[3,3],MP[4,1],MP[4,2],MP[4,3]);
x[0]:=P0[1]:
y[0]:=P0[2]:
z[0]:=P0[3]:
zz[0]:=[x[0],y[0],z[0]]:
for i from 0 to n do
dd:=d():
if  dd=1 then zz[i+1]:=evalf(f1(zz[i][1],zz[i][2],zz[i][3])): 
else zz[i+1]:=evalf(f2(zz[i][1],zz[i][2],zz[i][3])):
fi:
od:
i:='i':
l:={seq(zz[i],i=0..n)}:
pointplot3d(l,symbol=CROSS,axes=none,color=red,axes=boxed,labels=[x,y,z]):
end:</Font>
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="_cstyle21"><Font italic="false" size="12" underline="false">AN EXAMPLE</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">BezProb3d(P(0,0,0),P(0,1,0),P(1,0,0),P(0,0,1),3000);</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="Normal" style="_cstyle21"><Font italic="false" size="12" underline="false">ANIMATION</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">for n from 0 by 50 to 500 do
display(
BezProb3d(P(0,0,0),P(0,1,0),P(1,0,0),P(0,0,1),n),
BezProb3d(P(0,0,1),P(0,-1,0),P(-1,0,0),P(0,0,2),n),
BezProb3d(P(0,0,2),P(0,2,1),P(2,0,1),P(0,0,3),n),
BezProb3d(P(0,0,3),P(0,-2,0),P(-2,0,0),P(0,0,0),n),
orientation=[120,30],labels=[x,y,z],scaling=unconstrained);
print('Iteration'=n);
od;</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">display(
BezProb3d(P(0,-1,0),P(1,-1,0),P(-1,1,0),P(0,-1,1),1000),
BezProb3d(P(0,-1,1),P(0,-2,0),P(-2,0,0),P(0,-1,2),1000),
BezProb3d(P(0,-1,2),P(0,-3,0),P(-3,0,0),P(0,-1,3),1000),
orientation=[20,50],labels=[x,y,z],scaling=unconstrained);</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" style="_cstyle11">THE SECOND GENERATOR OF UNIFORMLY DISTRIBUTED NUMBERS 1 or 2 </Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">d1:=rand(1..2):</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle12" style="_cstyle11">SEGMENT GENERATED FRACTALLY</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="ParagraphStyle2"><Font style="_cstyle10">SegProb3d:=proc(P1,P2,n)
local  F1, F2, f1, f2, zz, x, y, z, l, dd,i;
F1:=[[1/2,0,0,0],[0,1/2,0,0],[0,0,1/2,0],[0,0,0,1]];
F2:=[[1/2,0,0,0],[0,1/2,0,0],[0,0,1/2,0],[0,0,0,1]];
f1:=MakeMapFromCoeffs(F1[1,1],F1[2,1],F1[3,1],F1[1,2],F1[2,2],F1[3,2],F1[1,3],F1[2,3],F1[3,3],P1[1]/2,P1[2]/2,P1[3]/2);
f2:=MakeMapFromCoeffs(F2[1,1],F2[2,1],F2[3,1],F2[1,2],F2[2,2],F2[3,2],F2[1,3],F2[2,3],F2[3,3],P2[1]/2,P2[2]/2,P2[3]/2);
x[0]:=P1[1]:
y[0]:=P1[2]:
z[0]:=P1[3]:
zz[0]:=[x[0],y[0],z[0]]:
for i from 0 to n do
dd:=d1():
if  dd=1 then zz[i+1]:=evalf(f1(zz[i][1],zz[i][2],zz[i][3])): 
else zz[i+1]:=evalf(f2(zz[i][1],zz[i][2],zz[i][3])):
fi:
od:
i:='i':
l:={seq(zz[i],i=0..n)}:
pointplot3d(l,symbol=CROSS,color=red,axes=boxed,labels=[x,y,z]):
end:</Font>
</Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">SegProb3d(P(0,0,1),P(1,2,3),1000);</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="_cstyle21"><Font italic="false" size="12" underline="false">ANIMATION - TETRAHEDRON GENETATED FRACTALLY</Font></Text-field></Input></Group><Group><Input><Text-field layout="_pstyle11" prompt="&gt; " style="_cstyle10">display(seq(display(
SegProb3d(P(0,0,0),P(.3,1,.5),n),
SegProb3d(P(0,0,0),P(1,.3,.5),n),
SegProb3d(P(0,0,0),P(1,1,.3),n),
SegProb3d(P(.3,1,.5),P(1,.3,.5),n),
SegProb3d(P(1,.3,.5),P(1,1,.3),n),
SegProb3d(P(.3,1,.5),P(1,1,.3),n),
orientation=[120,75]),n=[0,2,5,10,20,50,100,200,300,500]),insequence=true,scaling=constrained);</Text-field></Input><Text-field layout="_pstyle7" style="_pstyle7"/></Group></Section></Section><Text-field layout="_pstyle6" style="_pstyle6"/><Section><Title><Text-field layout="_pstyle6" style="_cstyle5">4. CONCLUSIONS</Text-field></Title><Text-field layout="_pstyle9" style="_cstyle7">Here in this worksheet we demonstrated some examples of fractal rendering of 3D curves. More complex 3D curves that can be splitted exactly or approximately into a sum of cubic 3D Bezier arcs and linear segments may be generated fractally using the methodology presented in this Maple application. It should be pointed out that fractal rendering is a progressive one. Further it should be mentioned that it seems to be possible to render fractally also  Bezier patches [1]. But that problem is still an open one. </Text-field></Section><Section><Title><Text-field layout="_pstyle6" style="_cstyle5">5. REFERENCES</Text-field></Title><Text-field layout="_pstyle7" style="_pstyle7"/><Text-field layout="_pstyle7" style="ParagraphStyle1"><Font encoding="ISO8859-1" style="_cstyle6">[1] Goldman R.; The fractal nature of B\351zier curves, Proceedings of the Geometric Modeling and Processing 2004, April 13-15, Beijing, China, 2004, 3-11.</Font><Font style="_cstyle6">
[2] Kotarski W.,  Lisowska, A. On fractal modeling of contours, Maplesoft, 2005,  </Font><Hyperlink bold="false" family="Times New Roman" hyperlink="true" linktarget="http://www.maplesoft.com/applications/app_center_view.aspx?AID=1651" size="12" style="Hyperlink">http://www.maplesoft.com/applications/app_center_view.aspx?AID=1651</Hyperlink><Font style="_cstyle6">.
[3] Kotarski W., Lisowska, A. Probabilistic approach to fractal modeling of shapes, Maplesoft, 2005,  </Font><Hyperlink bold="false" family="Times New Roman" hyperlink="true" linktarget="http://www.maplesoft.com/applications/app_center_view.aspx?AID=1657" size="12" style="Hyperlink">http://www.maplesoft.com/applications/app_center_view.aspx?AID=1657</Hyperlink><Font style="_cstyle6">.</Font>

</Text-field><Text-field layout="_pstyle7" style="_pstyle7"/><Text-field layout="_pstyle7" style="_cstyle6">The undersigned (the "Author") has developed an Application (the "Application") using Maple and wishes to submit the Application to Maplesoft, a division of Waterloo Maple Inc. for publication by Maplesoft or its agents. 

1. The Author grants to Maplesoft a non-exclusive, perpetual License and right to use all or any part of the Application, to modify or adapt the Application for the promotion of Maplesoft. 
2. The Author represents that the Application is the original work of the Author, the Author has the right to grant a License to Maplesoft with respect to the Application, no other party has any right, title or interest in or to the Application, and that the use of the Application by Maplesoft will not infringe any intellectual property rights of any third party. 
3. The Author agrees to execute such documents and take such other action as Maplesoft may request in order to give effect to the intention of this License Agreement. 
This License Agreement shall be binding upon and inure to the benefit of the Author, and all heirs, executors, administrators, successors and permitted assigns of the Author. </Text-field><Text-field layout="_pstyle7" style="_pstyle7"/><Text-field layout="_pstyle7" style="_cstyle6">Wieslaw Kotarski and Agnieszka Lisowska</Text-field><Text-field layout="_pstyle7" style="_cstyle6">Sosnowiec, July 2005</Text-field></Section><Text-field layout="_pstyle1" style="_pstyle1"/><Text-field layout="_pstyle1" style="_pstyle1"/><Text-field layout="_pstyle1" style="_pstyle1"/><Text-field layout="_pstyle1" style="_pstyle1"/><Text-field layout="_pstyle1" style="_pstyle1"/><Text-field layout="_pstyle1" style="_pstyle1"/><Text-field layout="_pstyle1" style="_pstyle1"/><Text-field layout="_pstyle1" style="_pstyle1"/><Text-field layout="_pstyle1" style="_pstyle1"/><Text-field/><Text-field/></Worksheet>