PM?AppleApple_partition_map?PM@disk imageApple_HFS@3PMX Apple_Free ERb? NMxTAxZ&collide_fast.povcube.pov glow_sim.povhysteresis.pov particle.pov planets.povroll.pov rotate.pov tshirt.povviscoelastic.pov nappe.povno_radiosity.pov noisepig.povnorm_trans.povparametric.pov pat_aoi.pov pat_proj.povpostproc$clip_colors.povӾUUʙ\ʙTEXTNPOVz&color_matrix.povԾVVʙ\ʙTEXTNPOVz2convolution_matrix.povվWWʙ\ʙTEXTNPOVSz depth.pov־TTʙ\ʙTEXTNPOVz"find_edges.pov׾SSʙ\ʙTEXTNPOV[z  ppcontent.incؾVVʙ\ʙ TincNPOVzclip_colors.povcolor_matrix.povconvolution_matrix.pov depth.povfind_edges.pov ppcontent.incprojection.povradiosity_improvements.povsor_spline.pov splines.povtest_motion.pov textalign.povtone_mapping.pov torus_uv.pov N $ n @ r N  xf:Z,zT. b@H+10.0ʙʙ\ʙMG'ւ%PNN PPNNH+10.0ʙʙYʙM2'EAD'ւ%NN PNN  'xBud1povdilcblMegapovdilcblob FMegapovfwi0blobFicnvMegapovfwswlongMegapovfwvhshor~Megapovicgoblob  @ @ @ @ EDSDB ` @ @ @{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;\f2\fnil\fcharset77 Verdana; \f3\fnil\fcharset77 Verdana-Bold;} {\colortbl;\red255\green255\blue255;} {\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid1} {\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid2}} {\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}} \paperw11900\paperh16840\margl1440\margr1440\vieww15380\viewh14440\viewkind0 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural \f0\b\fs32 \cf0 \ul \ulc0 MegaPOV 1.2.1 r3 March 2007 - README (Apple Macintosh GUI version)\ \f1\b0\fs24 \ulnone \ \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural \cf0 \ \f0\b\fs28 \ul 1) Changes for this third release \fs26 \ \f1\b0\fs24 \ulnone \ \f2\fs23\fsmilli11667 \ \ \pard\tx220\tx720\pardeftab720\li720\fi-720\qj \ls1\ilvl0\cf0 {\listtext \'a5 } \fs28 The colorpicker in the template dialogs keeps the correct color when saved and opened again. \fs23\fsmilli11667 \ {\listtext \'a5 } \fs28 #macro and #declare popup are updated now when needed. \fs23\fsmilli11667 \ {\listtext \'a5 } \fs28 Syntax coloring has improved a lot. \fs23\fsmilli11667 \ {\listtext \'a5 } \fs28 Many little changes in the editor to fix a few minor bugs.\ \ls1\ilvl0 \fs23\fsmilli11667 \ \pard\tx220\pardeftab720\qj \ls2\ilvl0\cf0 \ This is a new version, it uses the Cocoa framework and is available as a \f3\b Universal Binary \f2\b0 which will run on any Intel-Based Macintosh Intel based Macintosh and PPC G5 based Macintosh computers.\ It is \f3\b also available for PPC G4 and G3 \f2\b0 based Macintosh computers. \ This new version will only run on system 10.3.9 or later.\ For older systems another Carbon application is available at the same place where you downloaded this version.\ \ \pard\tx220\pardeftab720\qj \ls2\ilvl0 \f3\b\fs27\fsmilli13667 \cf0 \ul Documentation\ \pard\tx220\pardeftab720\qj \ls2\ilvl0 \f2\b0\fs23\fsmilli11667 \cf0 \ulnone Documentation about the MegaPOV patches and MacMegaPOV is included in this package.\ Simply go to the \f3\b Help \f2\b0 \f3\b menu \f2\b0 in MacMegaPOV and select "MegaPOV help" to open the documentation for the application, select "MegaPOV patches" to get more info on the patches implemented in MegaPOV.\ \ \pard\tx220\pardeftab720\qj \ls2\ilvl0 \f3\b\fs27\fsmilli13667 \cf0 \ul Contatct \f2\b0\fs23\fsmilli11667 \ulnone \ We can be contacted here:\ yvo.s@gmx.net or smellenbergh@skynet.be\ \ \ \pard\tx220\pardeftab720\qj \ls2\ilvl0 \f3\b\fs25\fsmilli12667 \cf0 \ul General information: \f2\b0 \ulnone \ \pard\tx220\pardeftab720\qj \ls2\ilvl0 \fs23\fsmilli11667 \cf0 \ MegaPOV is a collection of unofficial extensions for the freeware raytracer POV-Ray. It is maintained by a group of POV-Community members - the MegaPOV Team. Up-to-date versions and information can be obtained at the MegaPOV website:\ \ http://megapov.inetart.net/\ \ This package contains all files that are necessary to run MegaPOV in addition to the offical POV-Ray distribution. If you do not already have a version of POV-Ray installed you have to get one from the POV-Ray website:\ \ http://www.povray.org/\ \ otherwise MegaPOV won't function correctly!\ \ If you would like the MegaPOV Documentation in a different format than it is supplied in this package you can obtain it separately in a different form at the MegaPOV website.\ \ All further information about using MegaPOV can be found in the Documentation.\ \ For the conditions for using POV-Ray and modified versions you should have a look at the POV-Ray license (povlegal.doc) that is included in this package.\ \ This is a unofficial custom version of POV-Ray in terms of this document. The POV-Ray Team is not responsible for supporting it.\ \ \ \pard\tx220\pardeftab720\qj \ls2\ilvl0 \f3\b \cf0 \ul Platform specific information: \f2\b0 \ulnone \ \ This package contains the Apple Macintosh GUI version for OS X 10.3.9 and later of MegaPOV (MacMegaPOV).\ \ The executable should run fine on all MacOS system versions starting from 10.3.9.\ \ The content of the package:\ \ |\ {\listtext +--ReadMe.rtf }- this file\ {\listtext +--povlegal.doc }- POV-Ray licence\ |\ {\listtext +-----MegaPOV } - the program executable\ {\listtext +-----include } - the include files for megapov.\ {\listtext +-----scenes } - sample scenes.\ {\listtext +-----Insert Menu } - Template files from the official Windows version of POV_Ray\ \ For installing the program, unstuff the package in any folder of you choice. \ Double click the program executable file and.... read the the Apple Macintosh specific documentation to get help\ which you can access via the help menu.\ \ March 2007,\ \ MegaPOV Team\ megapov@megapov.inetart.net\ \ Thank you for trying MacMegaPOV!}Bud1udedsclboincludedsclboolincludefwi0bloby<icnvincludefwswlongincludefwvhshor  @ @ @ @ EDSDB ` @ @ @ POV-Ray License Agreement DISTRIBUTOR'S LICENCE AGREEMENT Persistence of Vision Raytracer(tm) (POV-Ray(tm)) 13 August 2004 Licensed Versions: Versions 3.5 and 3.6 Please read through the terms and conditions of this license carefully. This is a binding legal agreement between you, the "Distributor" and Persistence of Vision Raytracer Pty. Ltd. ACN 105 891 870 ("POV"), a company incorporated in the state of Victoria, Australia, for the product known as the "Persistence of Vision Raytracer(tm)", also referred to herein as "POV-Ray(tm)". The terms of this agreement are set out at http://www.povray.org/distribution-license.html ("Official Terms"). The Official Terms take precedence over this document to the extent of any inconsistency. 1. INTRODUCTION 1.1. In this agreement, except to the extent the context requires otherwise, the following capitalised terms have the following meanings: (a) Distribution means: (i) a single item of a distribution medium, including a CD Rom or DVD Rom, containing software programs and/or data; (ii) a set of such items; (iii) a data file in a generally accepted data format from which such an item can be created using generally available standard tools; (iv) a number of such data files from which a set of such items can be created; or (v) a data file in a generally accepted data storage format which is an archive of software programs and/or data; (b) Derived Code means all software which is derived from or is an adaptation of any part of the Software other than a scene file; (c) Intellectual Rights means: (i) all copyright, patent, trade mark, trade secret, design, and circuit layout rights; (ii) all rights to the registration of such rights; and (iii) all rights of a similar nature which exist anywhere in the world; (d) Licensed Version means the version set out at the top of this agreement against the heading "Licensed Version" and all minor releases of this version (ie releases of the form x.y.z); (e) POV Associate means any person associated directly or indirectly with POV whether as a director, officer, employee, subcontractor, agent, representative, consultant, licensee or otherwise; (f) Modification Terms means the most recent version from time to time of the document of that name made available from the Site (g) Revocation List means the list of that name linked to from the Official Terms; (h) Site means www.povray.org; (i) Software means the Licensed Version of the Persistence of Vision Raytracer(tm) (also known as POV-Ray(tm)) (including all POV-Ray program source files, executable (binary) files, scene files, documentation files, help files, bitmaps and other POV-Ray files associated with the Licensed Version) in a form made available by POV on the Site; (j) User Licence means the most recent version from time to time of the document of that name made available from the Site. 2. OPEN SOURCE DISTRIBUTIONS 2.1. In return for the Distributor agreeing to be bound by the terms of this agreement, POV grants the Distributor permission to make a copy of the Software by including the Software in a generally recognised Distribution of a recognised operating system where the kernel of that operating system is made available under licensing terms: (a) which are approved by the Open Source Initiative (www.opensource.org) as complying with the "Open Source Definition" put forward by the Open Source Initiative; or (b) which comply with the "free software definition" of the Free Software Foundation (www.fsf.org). 2.2. As at June 2004, and without limiting the generality of the term, each of the following is a "generally recognised Distribution" for the purposes of clause 2.1: Debian, Red Hat (Enterprise and Fedora), SuSE, Mandrake, Xandros, Gentoo and Knoppix Linux distributions, and officially authorized distributions of the FreeBSD, OpenBSD, and NetBSD projects. 2.3. Clause 2.1 also applies to the Software being included in the above distributions 'package' and 'ports' systems, where such exist; 2.4. Where the Distributor reproduces the Software in accordance with clause 2.1: (a) the Distributor may rename, reorganise or repackage (without omission) the files comprising the Software where such renaming, reorganisation or repackaging is necessary to conform to the naming or organisation scheme of the target operating environment of the Distribution or of an established package management system of the target operating environment of the Distribution; and (b) the Distributor must not otherwise rename, reorganise or repackage the Software. 3. DISTRIBUTION LICENCE 3.1. Subject to the terms and conditions of this agreement, and in return for Distributor agreeing to be bound by the terms of this agreement, POV grants the Distributor permission to make a copy of the Software in any of the following circumstances: (a) in the course of providing a mirror of the POV-Ray Site (or part of it), which is made available generally over the internet to each person without requiring that person to identify themselves and without any other restriction other than restrictions designed to manage traffic flows; (b) by placing it on a local area network accessible only by persons authorized by the Distributor whilst on the Distributor's premises; (c) where that copy is provided to a staff member or student enrolled at a recognised educational institution; (d) by including the Software as part of a Distribution where: (i) neither the primary nor a substantial purpose of the distribution of the Distribution is the distribution of the Software. That is, the distribution of the Software is merely incidental to the distribution of the Distribution; and (ii) if the Software was not included in the Distribution, the remaining software and data included within the Distribution would continue to function effectively and according to its advertised or intended purpose; (e) by including the Software as part of a Distribution where: (i) there is no data, program or other files apart from the Software on the Distribution; (ii) the Distribution is distributed by a person to another person known to that person; or (iii) the Distributor has obtained explicit written authority from POV to perform the distribution, citing this clause number, prior to the reproduction being made. 3.2. In each case where the Distributor makes a copy of the Software in accordance with clause 3.1, the Distributor must, unless no payment or other consideration of any type is received by Distributor in relation to the Distribution: (a) ensure that each person who receives a copy of the Software from the Distributor is aware prior to acquiring that copy: (i) of the full name and contact details of the Distributor, including the Distributor's web site, street address, mail address, and working email address; (ii) that the Software is available without charge from the Site; (iii) that no charge is being made for the granting of a licence over the Software. (b) include a copy of the User Licence and this Distribution License with the copy of the Software. These licences must be stored in the same subdirectory on the distribution medium as the Software and named in such a way as to prominently identify their purpose; 3.3. The Distributor must not rename, reorganise or repackage any of the files comprising the Software without the prior written authority of POV. 3.4. Except as explicitly set out in this agreement, nothing in this agreement permits Distributor to make any modification to any part of the Software. 4. RESTRICTIONS ON DISTRIBUTION 4.1. Nothing in this agreement gives the Distributor: (a) any ability to grant any licence in respect of the use of the Software or any part of it to any person; (b) any rights or permissions in respect of, including rights or permissions to distribute or permit the use of, any Derived Code; (c) any right to bundle a copy of the Software (or part thereof), whether or not as part of a Distribution, with any other items, including books and magazines. POV may, in response to a request, by notice in writing and in its absolute discretion, permit such bundling on a case by case basis. This clause 4.1(c) does not apply to Distributions permitted under clause 2; (d) any right, permission or authorisation to infringe any Intellectual Right held by any third party. 4.2. Distributor may charge a fee for the making or the provision of a copy of the Software. 4.3. Where the making, or the provision, of a copy of the Software is authorised under the terms of clause 3 but not under those of clause 2 of this agreement, the total of all fees charged in relation to such making or provision and including all fees (including shipping and handling fees) which are charged in respect of any software, hardware or other material provided in conjunction with or in any manner which is reasonably connected with the making, or the provision, of a copy of the Software must not exceed the reasonable costs incurred by the Distributor in making the reproduction, or in the provision, of that copy for which the fee is charged. 4.4. Notwithstanding anything else in this agreement, nothing in this agreement permits the reproduction of any part of the Software by, or on behalf of: (a) Any person currently listed on the Revocation List from time to time; (b) Any related body corporate (as that term is defined in section 50 of the Corporations Law 2001 (Cth)) of any person referred to in clause 4.4(a); (c) Any person in the course of preparing any publication in any format (including books, magazines, CD Roms or on the internet) for any of the persons identified in paragraph (a); (d) Any person who is, or has been, in breach of this Agreement and that breach has not been waived in writing signed by POV; or (e) Any person to whom POV has sent a notice in writing or by email stating that that person may not distribute the Software. 4.5. From the day two years after a version of the Software more recent than the Licensed Version is made available by POV on the Site clause 3 only permits reproduction of the Software where the Distributor ensures that each recipient of such a reproduction is aware, prior to obtaining that reproduction, that that reproduction of the Software is an old version of the Software and that a more recent version of the Software is available from the Site. 5. COPYRIGHT AND NO LITIGATION 5.1. Copyright subsists in the Software and is protected by Australian and international copyright laws. 5.2. Nothing in this agreement gives Distributor any rights in respect of any Intellectual Rights in respect of the Software or which are held by or on behalf of POV. Distributor acknowledges that it does not acquire any rights in respect of such Intellectual Rights. 5.3. Distributor acknowledges that if it performs out any act in respect of the Software without the permission of POV it will be liable to POV for all damages POV may suffer (and which Distributor acknowledges it may suffer) as well as statutory damages to the maximum extent permitted by law and that it may also be liable to criminal prosecution. 5.4. Distributor must not commence any action against any person alleging that the Software or the use or distribution of the Software infringes any rights, including Intellectual Rights of the Distributor or of any other person. If Distributor provides one or more copies of the Software to any other person in accordance with the agreement, Distributor waives all rights it has, or may have in the future, to bring any action, directly or indirectly, against any person to the extent that such an action relates to an infringement of any rights, including Intellectual Rights of any person in any way arising from, or in relation to, the use, or distribution, (including through the authorisation of such use or distribution) of: (a) the Software; (b) any earlier or later version of the Software; or (c) any other software to the extent it incorporates elements of the software referred to in paragraphs (a) or (b) of this clause 5.4. 6. DISCLAIMER OF WARRANTY 6.1. To the extent permitted by law, all implied terms and conditions are excluded from this agreement. Where a term or condition is implied into this agreement and that term cannot be legally excluded, that term has effect as a term or condition of this agreement. However, to the extent permitted by law, the liability of POV for a breach of such an implied term or condition is limited to the fullest extent permitted by law. 6.2. To the extent permitted by law, this Software is provided on an "AS IS" basis, without warranty of any kind, express or implied, including without limitation, any implied warranties of merchantability, fitness for a particular purpose and non-infringement of intellectual property of any third party. The Software has inherent limitations including design faults and programming bugs. 6.3. The entire risk as to the quality and performance of the Software is borne by Distributor, and it is Distributor's responsibility to ensure that the Software fulfils Distributor's requirements prior to using it in any manner (other than testing it for the purposes of this paragraph in a non-critical and non-production environment), and prior to distributing it in any fashion. 6.4. This clause 6 is an essential and material term of, and cannot be severed from, this agreement. If Distributor does not or cannot agree to be bound by this clause, or if it is unenforceable, then Distributor must not, at any time, make any reproductions of the Software under this agreement and this agreement gives the Distributor no rights to make any reproductions of any part of the Software. 7. NO LIABILITY 7.1. When you distribute or use the Software you acknowledge and accept that you do so at your sole risk. Distributor agrees that under no circumstances will it have any claim against POV or any POV Associate for any loss, damages, harm, injury, expense, work stoppage, loss of business information, business interruption, computer failure or malfunction which may be suffered by you or by any third party from any cause whatsoever, howsoever arising, in connection with your use or distribution of the Software even where POV was aware, or ought to have been aware, of the potential of such loss. 7.2. Neither POV nor any POV Associate has any liability to Distributor for any indirect, general, special, incidental, punitive and/or consequential damages arising as a result of a breach of this agreement by POV or which arises in any way related to the Software or the exercise of a licence granted to Distributor under this agreement. 7.3. POV's total aggregate liability to the Distributor for all loss or damage arising in any way related to this agreement is limited to the lesser of: (a) AU$100, and (b) the amount received by POV from Distributor as payment for the grant of a licence under this agreement. 7.4. Distributor must bring any action against POV in any way related to this agreement or the Software within 3 months of the cause of action first arising. Distributor waives any right it has to bring any action against POV and releases POV from all liability in respect of a cause of action if initiating process in relation to that action is not served on POV within 3 months of the cause of action arising. Where a particular set of facts give rise to more than one cause of action this clause 7.4 applies as if all such causes of action arise at the time the first such cause of action arises. 7.5. This clause 7 is an essential and material term of, and cannot be severed from, this agreement. If Distributor does not or cannot agree to be bound by this clause, or if it is unenforceable, then Distributor must not, at any time, make any reproductions of the Software under this agreement and this agreement gives the Distributor no rights to make any reproductions of any part of the Software. 8. INDEMNITY 8.1. Distributor indemnifies POV and each POV Associate and holds each of them harmless against all claims which arise from any loss, damages, harm, injury, expense, work stoppage, loss of business information, business interruption, computer failure or malfunction, which may be suffered by Distributor or any other party whatsoever as a consequence of: (a) any act or omission of POV and/or any POV Associate, whether negligent or not; (b) Distributor's use and/or distribution of the Software; or (c) any other cause whatsoever, howsoever arising, in connection with the Software. This clause 8 is binding on Distributor's estate, heirs, executors, legal successors, administrators, parents and/or guardians. 8.2. Distributor indemnifies POV, each POV Associate and each of the authors of any part of the Software against all loss and damage and for every other consequence flowing from any breach by Distributor of any Intellectual Right held by POV. 8.3. This clause 8 constitutes an essential and material term of, and cannot be severed from, this agreement. If Distributor does not or cannot agree to be bound by this clause, or if it is unenforceable, then Distributor must not, at any time, make any reproductions of the Software under this agreement and this agreement gives the Distributor no rights to make any reproductions of any part of the Software. 9. HIGH RISK ACTIVITIES 9.1. This Software and the output produced by this Software is not fault-tolerant and is not designed, manufactured or intended for use as on-line control equipment in hazardous environments requiring fail-safe performance, in which the failure of the Software could lead or directly or indirectly to death, personal injury, or severe physical or environmental damage ("High Risk Activities"). POV specifically disclaims all express or implied warranty of fitness for High Risk Activities and, notwithstanding any other term of this agreement, explicitly prohibits the use or distribution of the Software for such purposes. 10. ENDORSEMENT PROHIBITION 10.1. Distributor must not, without explicit written permission from POV, claim or imply in any way that: (a) POV or any POV Associate officially endorses or supports the Distributor or any product (such as CD, book, or magazine) associated with the Distributor or any reproduction of the Software made in accordance with this agreement; or (b) POV derives any benefit from any reproduction made in accordance with this agreement. 11. TRADEMARKS 11.1. "POV-Ray(tm)", "Persistence of Vision Raytracer(tm)" and "POV-Team(tm)" are trademarks of Persistence of Vision Raytracer Pty. Ltd. Any other trademarks referred to in this agreement are the property of their respective holders. Distributor must not use, apply for, or register anywhere in the world, any word, name (including domain names), trade mark or device which is substantially identical or deceptively or confusingly similar to any of Persistence of Vision Raytracer Pty. Ltd's trade marks. 12. MISCELLANEOUS 12.1. The Official Terms, including those documents incorporated by reference into the Official Terms, and the Modification Terms constitute the entire agreement between the parties relating to the distribution of the Software and, except where stated to the contrary in writing signed by POV, supersedes all previous negotiations and correspondence in relation to it. 12.2. POV may modify this agreement at any time by making a revised licence available from the Site at http://www.povray.org/distribution-license.html. This agreement is modified by replacing the terms in this agreement with those of the revised licence from the time that the revised licence is so made available. It is your responsibility to ensure that you have read and agreed to the current version of this agreement prior to distributing the Software. 12.3. Except where explicitly stated otherwise herein, if any provision of this Agreement is found to be invalid or unenforceable, the invalidity or unenforceability of such provision shall not affect the other provisions of this agreement, and all provisions not affected by such invalidity or unenforceability shall remain in full force and effect. In such cases Distributor agrees to attempt to substitute for each invalid or unenforceable provision a valid or enforceable provision which achieves to the greatest extent possible, the objectives and intention of the invalid or unenforceable provision. 12.4. A waiver of a right under this agreement is not effective unless given in writing signed by the party granting that waiver. Unless otherwise stipulated in the waiver, a waiver is only effective in respect of the circumstances in which it is given and is not a waiver in respect of any other rights or a waiver in respect of future rights or actions. 12.5. The validity and interpretation of this agreement is governed by the laws in force in the State of Victoria, Australia. Distributor submits to the exclusive jurisdiction of the courts of that State and courts located within that State exercising federal jurisdiction. 12.6. References in this agreement to "written" and "writing" mean on paper or by fax and expressly exclude email and other forms of electronic communication. 13. CONTACT INFORMATION 13.1. This clause 13 does not form part of the agreement. License inquiries can be made via email; please use the following address (but see 13.2 below prior to emailing) : team-coord-[three-letter month]-[four-digit year]@povray org. for example, team-coord-jun-2004@povray.org should be used if at the time you send the email it is the month of June 2004. The changing email addresses are necessary to combat spam. Old email addresses may be deleted at POV's discretion. 13.2. Note that the address referred to in 13.1 may change for reasons other than those referred to in that clause; please check the current version of this document at http://www.povray.org/distribution-license.html. for the current address. Your inability or failure to contact us is no excuse for violating the licence. 13.3. Do NOT send any email attachments of any sort other than by prior arrangement. Do not send email in HTML format. EMAIL MESSAGES INCLUDING ATTACHMENTS WILL BE DELETED UNREAD. 13.4. The following postal address is only for official license business. Please note that it is preferred that initial queries about licensing be made via email; postal mail should only be used when email is not possible, or when written documents are being exchanged by prior arrangement. While it is unlikely this address will change in the short term it would be advisable to check http://www.povray.org/distribution-license.html for the current one prior to sending postal mail. Persistence of Vision Raytracer Pty. Ltd. PO Box 407 Williamstown, Victoria 3016 Australia Bud1%  @ @ @ @ E%DSDB` @ @ @// Persistence of Vision Ray Tracer version 3.5 Include File // File: arrays.inc // Last updated: May 7 2002 // Description: Array manipulation macros...sorting, resizing, etc. #ifndef(ARRAYS_INC_TEMP) #declare ARRAYS_INC_TEMP = version; #version 3.5; #ifdef(View_POV_Include_Stack) #debug "including arrays.inc\n" #end // Input: a one dimensional array and a random stream // Output: a random item from the input array // Source: variate.inc by Ingo Janssen #macro Rand_Array_Item(Array, Stream) #if(dimensions(Array)=1) Array[floor(rand(Stream)*0.9999999*dimension_size(Array,1))] #else #error "The Rand_Array_Item() macro only works for 1D arrays." #end #end #macro Resize_Array(Array, NewSize) #if(dimensions(Array)=1) #local NewArray = array[NewSize] #local C = 0; #local Max = min(NewSize, dimension_size(Array, 1)); #while (C < Max) #ifdef (Array[C]) #local NewArray[C] = Array[C]; #end #local C = C + 1; #end #declare Array = NewArray #else #error "The Resize_Array() macro only works for 1D arrays." #end #end #macro Reverse_Array(Array) #if(dimensions(Array)=1) #local J = 0; #local N = dimension_size(Array, 1) - 1; #while(J < N/2) #local Temp = Array[J]; #local Array[J] = Array[N-J]; #local Array[N-J] = Temp; #local J = J + 1; #end #else #error "The Reverse_Array() macro only works for 1D arrays." #end #end // #macro Insert_In_Array(Item, DestArray, Index) // #macro Insert_Array_In_Array(ItemArray, DestArray, Index) // #macro Append_To_Array(Item, DestArray, Index) // #macro Append_Array_To_Array(ItemArray, DestArray, Index) // This macro will compare float values and vector lengths. // It is intended to be redefined by the user to suit their // needs, but it should always return true if A is "less than" // B, otherwise false. // #macro SortCompare(A, B) (vlength(A) < vlength(B)) #end // #macro SortCompare(Array, IdxA, IdxB) (vlength(Array[IdxA]) < vlength(Array[IdxB])) #end #macro Sort_Compare(Array, IdxA, IdxB) (Array[IdxA] < Array[IdxB]) #end // This macro swaps the data in two locations. The user can // redefine it, for example to swap additional data along a // second dimension, keeping columns of data together. #macro Sort_Swap_Data(Array, IdxA, IdxB) #local Tmp = Array[IdxA]; #declare Array[IdxA] = Array[IdxB]; #declare Array[IdxB] = Tmp; #end // Sort macros slightly modified from QuickSort macros by Juha Nieminen #macro Sort_Array(Array) Sort_Partial_Array(Array, 0, dimension_size(Array, 1)-1) #end #macro Sort_Partial_Array(Array, FirstInd, LastInd) ARRAYS_HybridQuickSortStep(Array, FirstInd, LastInd) ARRAYS_InsertionSort(Array, FirstInd, LastInd) #end #declare ARRAYS_QuickSortSeed = seed(0); #macro ARRAYS_HybridQuickSortStep(Array, FirstInd, LastInd) #local FInd = FirstInd; #while(FInd < LastInd-10) #local RInd = FInd + rand(ARRAYS_QuickSortSeed)*(LastInd - FInd); Sort_Swap_Data(Array, FInd, RInd) #local I = FInd-1; #local J = LastInd+1; #local Mid = -1; #while(Mid < 0) #local J = J-1; #while(Sort_Compare(Array, FInd, J)) #local J = J-1; #end #local I = I+1; #while(Sort_Compare(Array, I, FInd)) #local I = I+1; #end #if(I < J) Sort_Swap_Data(Array, I, J) #else #local Mid = J; #end #end ARRAYS_HybridQuickSortStep(Array, FInd, Mid) #local FInd = Mid+1; #end #end #macro ARRAYS_InsertionSort(Array, FirstInd, LastInd) #local Ind1 = FirstInd+1; #while(Ind1 <= LastInd) #local Ind2 = Ind1; #while(Ind2 > FirstInd) #local NextInd2 = Ind2-1; #if(Sort_Compare(Array, Ind2, NextInd2)) Sort_Swap_Data(Array, Ind2, NextInd2) #local Ind2 = NextInd2; #else #local Ind2 = 0; #end #end #local Ind1 = Ind1+1; #end #end #version ARRAYS_INC_TEMP; #end #declare Ash_Inc_Temp=version; /* Persistence of Vision Raytracer Version 3.1 Ash wood color_map */ #declare M_Ash = color_map { [0.000000 rgb <0.298039, 0.188235, 0.125490>] [0.003922 rgb <0.313726, 0.203922, 0.141176>] [0.007843 rgb <0.313726, 0.203922, 0.172549>] [0.011765 rgb <0.329412, 0.188235, 0.109804>] [0.015686 rgb <0.329412, 0.219608, 0.125490>] [0.019608 rgb <0.329412, 0.219608, 0.156863>] [0.023529 rgb <0.329412, 0.235294, 0.172549>] [0.027451 rgb <0.329412, 0.250980, 0.125490>] [0.031373 rgb <0.345098, 0.203922, 0.141176>] [0.035294 rgb <0.345098, 0.219608, 0.109804>] [0.039216 rgb <0.345098, 0.219608, 0.188235>] [0.043137 rgb <0.345098, 0.235294, 0.141176>] [0.047059 rgb <0.360784, 0.203922, 0.109804>] [0.050980 rgb <0.360784, 0.219608, 0.156863>] [0.054902 rgb <0.360784, 0.235294, 0.109804>] [0.058824 rgb <0.360784, 0.235294, 0.203922>] [0.062745 rgb <0.360784, 0.250980, 0.156863>] [0.066667 rgb <0.376471, 0.219608, 0.094118>] [0.070588 rgb <0.376471, 0.219608, 0.125490>] [0.074510 rgb <0.376471, 0.235294, 0.141176>] [0.078431 rgb <0.376471, 0.235294, 0.172549>] [0.082353 rgb <0.376471, 0.250980, 0.125490>] [0.086275 rgb <0.376471, 0.266667, 0.172549>] [0.090196 rgb <0.376471, 0.266667, 0.203922>] [0.094118 rgb <0.392157, 0.203922, 0.109804>] [0.098039 rgb <0.392157, 0.219608, 0.156863>] [0.101961 rgb <0.392157, 0.235294, 0.109804>] [0.105882 rgb <0.392157, 0.250980, 0.156863>] [0.109804 rgb <0.392157, 0.250980, 0.188235>] [0.113725 rgb <0.392157, 0.250980, 0.219608>] [0.117647 rgb <0.392157, 0.266667, 0.141176>] [0.121569 rgb <0.392157, 0.282353, 0.172549>] [0.125490 rgb <0.392157, 0.282353, 0.219608>] [0.129412 rgb <0.392157, 0.298039, 0.188235>] [0.133333 rgb <0.407843, 0.219608, 0.094118>] [0.137255 rgb <0.407843, 0.219608, 0.125490>] [0.141176 rgb <0.407843, 0.235294, 0.172549>] [0.145098 rgb <0.407843, 0.250980, 0.125490>] [0.149020 rgb <0.407843, 0.266667, 0.172549>] [0.152941 rgb <0.407843, 0.266667, 0.203922>] [0.156863 rgb <0.407843, 0.298039, 0.235294>] [0.160784 rgb <0.407843, 0.313726, 0.266667>] [0.164706 rgb <0.423529, 0.235294, 0.109804>] [0.168627 rgb <0.423529, 0.235294, 0.141176>] [0.172549 rgb <0.423529, 0.250980, 0.188235>] [0.176471 rgb <0.423529, 0.266667, 0.109804>] [0.180392 rgb <0.423529, 0.266667, 0.141176>] [0.184314 rgb <0.423529, 0.282353, 0.188235>] [0.188235 rgb <0.423529, 0.282353, 0.219608>] [0.192157 rgb <0.423529, 0.298039, 0.250980>] [0.196078 rgb <0.423529, 0.313726, 0.219608>] [0.200000 rgb <0.423529, 0.313726, 0.282353>] [0.203922 rgb <0.423529, 0.345098, 0.266667>] [0.207843 rgb <0.439216, 0.219608, 0.125490>] [0.211765 rgb <0.439216, 0.250980, 0.094118>] [0.215686 rgb <0.439216, 0.250980, 0.125490>] [0.219608 rgb <0.439216, 0.250980, 0.156863>] [0.223529 rgb <0.439216, 0.266667, 0.203922>] [0.227451 rgb <0.439216, 0.282353, 0.156863>] [0.231373 rgb <0.439216, 0.298039, 0.125490>] [0.235294 rgb <0.439216, 0.298039, 0.203922>] [0.239216 rgb <0.439216, 0.298039, 0.235294>] [0.243137 rgb <0.439216, 0.313726, 0.188235>] [0.247059 rgb <0.439216, 0.313726, 0.266667>] [0.250980 rgb <0.439216, 0.329412, 0.298039>] [0.254902 rgb <0.454902, 0.235294, 0.141176>] [0.258824 rgb <0.454902, 0.266667, 0.109804>] [0.262745 rgb <0.454902, 0.266667, 0.141176>] [0.266667 rgb <0.454902, 0.266667, 0.172549>] [0.270588 rgb <0.454902, 0.282353, 0.219608>] [0.274510 rgb <0.454902, 0.298039, 0.141176>] [0.278431 rgb <0.454902, 0.298039, 0.172549>] [0.282353 rgb <0.454902, 0.298039, 0.250980>] [0.286275 rgb <0.454902, 0.313726, 0.219608>] [0.290196 rgb <0.454902, 0.313726, 0.282353>] [0.294118 rgb <0.454902, 0.329412, 0.250980>] [0.298039 rgb <0.454902, 0.329412, 0.313726>] [0.301961 rgb <0.454902, 0.345098, 0.282353>] [0.305882 rgb <0.454902, 0.360784, 0.329412>] [0.309804 rgb <0.470588, 0.235294, 0.109804>] [0.313726 rgb <0.470588, 0.250980, 0.125490>] [0.317647 rgb <0.470588, 0.282353, 0.125490>] [0.321569 rgb <0.470588, 0.282353, 0.156863>] [0.325490 rgb <0.470588, 0.282353, 0.188235>] [0.329412 rgb <0.470588, 0.298039, 0.235294>] [0.333333 rgb <0.470588, 0.313726, 0.188235>] [0.337255 rgb <0.470588, 0.313726, 0.266667>] [0.341176 rgb <0.470588, 0.329412, 0.298039>] [0.345098 rgb <0.470588, 0.345098, 0.219608>] [0.349020 rgb <0.470588, 0.345098, 0.250980>] [0.352941 rgb <0.470588, 0.345098, 0.313726>] [0.356863 rgb <0.470588, 0.360784, 0.266667>] [0.360784 rgb <0.470588, 0.360784, 0.298039>] [0.364706 rgb <0.486275, 0.250980, 0.156863>] [0.368627 rgb <0.486275, 0.266667, 0.109804>] [0.372549 rgb <0.486275, 0.266667, 0.172549>] [0.376471 rgb <0.486275, 0.298039, 0.141176>] [0.380392 rgb <0.486275, 0.298039, 0.172549>] [0.384314 rgb <0.486275, 0.298039, 0.203922>] [0.388235 rgb <0.486275, 0.329412, 0.172549>] [0.392157 rgb <0.486275, 0.329412, 0.203922>] [0.396078 rgb <0.486275, 0.329412, 0.235294>] [0.400000 rgb <0.486275, 0.329412, 0.266667>] [0.403922 rgb <0.486275, 0.345098, 0.282353>] [0.407843 rgb <0.486275, 0.360784, 0.235294>] [0.411765 rgb <0.486275, 0.376471, 0.282353>] [0.415686 rgb <0.486275, 0.376471, 0.313726>] [0.419608 rgb <0.501961, 0.250980, 0.094118>] [0.423529 rgb <0.501961, 0.266667, 0.141176>] [0.427451 rgb <0.501961, 0.282353, 0.125490>] [0.431373 rgb <0.501961, 0.282353, 0.172549>] [0.435294 rgb <0.501961, 0.313726, 0.156863>] [0.439216 rgb <0.501961, 0.313726, 0.188235>] [0.443137 rgb <0.501961, 0.313726, 0.219608>] [0.447059 rgb <0.501961, 0.313726, 0.250980>] [0.450980 rgb <0.501961, 0.345098, 0.219608>] [0.454902 rgb <0.501961, 0.345098, 0.250980>] [0.458824 rgb <0.501961, 0.360784, 0.266667>] [0.462745 rgb <0.501961, 0.360784, 0.298039>] [0.466667 rgb <0.501961, 0.376471, 0.250980>] [0.470588 rgb <0.501961, 0.392157, 0.329412>] [0.474510 rgb <0.517647, 0.282353, 0.156863>] [0.478431 rgb <0.517647, 0.298039, 0.141176>] [0.482353 rgb <0.517647, 0.298039, 0.203922>] [0.486275 rgb <0.517647, 0.329412, 0.172549>] [0.490196 rgb <0.517647, 0.329412, 0.203922>] [0.494118 rgb <0.517647, 0.329412, 0.235294>] [0.498039 rgb <0.517647, 0.345098, 0.282353>] [0.501961 rgb <0.517647, 0.360784, 0.203922>] [0.505882 rgb <0.517647, 0.360784, 0.235294>] [0.509804 rgb <0.517647, 0.376471, 0.282353>] [0.513726 rgb <0.517647, 0.376471, 0.313726>] [0.517647 rgb <0.517647, 0.407843, 0.313726>] [0.521569 rgb <0.517647, 0.407843, 0.345098>] [0.525490 rgb <0.533333, 0.282353, 0.125490>] [0.529412 rgb <0.533333, 0.298039, 0.172549>] [0.533333 rgb <0.533333, 0.313726, 0.141176>] [0.537255 rgb <0.533333, 0.313726, 0.219608>] [0.541176 rgb <0.533333, 0.345098, 0.156863>] [0.545098 rgb <0.533333, 0.345098, 0.188235>] [0.549020 rgb <0.533333, 0.345098, 0.219608>] [0.552941 rgb <0.533333, 0.345098, 0.250980>] [0.556863 rgb <0.533333, 0.360784, 0.298039>] [0.560784 rgb <0.533333, 0.376471, 0.250980>] [0.564706 rgb <0.533333, 0.392157, 0.298039>] [0.568627 rgb <0.533333, 0.392157, 0.329412>] [0.572549 rgb <0.549020, 0.313726, 0.188235>] [0.576471 rgb <0.549020, 0.329412, 0.235294>] [0.580392 rgb <0.549020, 0.360784, 0.172549>] [0.584314 rgb <0.549020, 0.360784, 0.203922>] [0.588235 rgb <0.549020, 0.360784, 0.235294>] [0.592157 rgb <0.549020, 0.360784, 0.266667>] [0.596078 rgb <0.549020, 0.376471, 0.313726>] [0.600000 rgb <0.549020, 0.392157, 0.235294>] [0.603922 rgb <0.549020, 0.392157, 0.266667>] [0.607843 rgb <0.549020, 0.407843, 0.313726>] [0.611765 rgb <0.549020, 0.407843, 0.345098>] [0.615686 rgb <0.564706, 0.282353, 0.125490>] [0.619608 rgb <0.564706, 0.313726, 0.125490>] [0.623529 rgb <0.564706, 0.313726, 0.156863>] [0.627451 rgb <0.564706, 0.329412, 0.203922>] [0.631373 rgb <0.564706, 0.345098, 0.141176>] [0.635294 rgb <0.564706, 0.345098, 0.250980>] [0.639216 rgb <0.564706, 0.376471, 0.219608>] [0.643137 rgb <0.564706, 0.376471, 0.250980>] [0.647059 rgb <0.564706, 0.376471, 0.282353>] [0.650980 rgb <0.564706, 0.392157, 0.329412>] [0.654902 rgb <0.564706, 0.407843, 0.250980>] [0.658824 rgb <0.564706, 0.407843, 0.282353>] [0.662745 rgb <0.564706, 0.423529, 0.329412>] [0.666667 rgb <0.564706, 0.423529, 0.360784>] [0.670588 rgb <0.580392, 0.329412, 0.172549>] [0.674510 rgb <0.580392, 0.345098, 0.219608>] [0.678431 rgb <0.580392, 0.360784, 0.172549>] [0.682353 rgb <0.580392, 0.360784, 0.266667>] [0.686275 rgb <0.580392, 0.392157, 0.235294>] [0.690196 rgb <0.580392, 0.392157, 0.266667>] [0.694118 rgb <0.580392, 0.392157, 0.298039>] [0.698039 rgb <0.580392, 0.407843, 0.345098>] [0.701961 rgb <0.580392, 0.423529, 0.266667>] [0.705882 rgb <0.580392, 0.423529, 0.298039>] [0.709804 rgb <0.580392, 0.439216, 0.345098>] [0.713726 rgb <0.580392, 0.454902, 0.392157>] [0.717647 rgb <0.596078, 0.345098, 0.156863>] [0.721569 rgb <0.596078, 0.345098, 0.188235>] [0.725490 rgb <0.596078, 0.360784, 0.235294>] [0.729412 rgb <0.596078, 0.376471, 0.188235>] [0.733333 rgb <0.596078, 0.407843, 0.250980>] [0.737255 rgb <0.596078, 0.407843, 0.282353>] [0.741176 rgb <0.596078, 0.407843, 0.313726>] [0.745098 rgb <0.596078, 0.423529, 0.360784>] [0.749020 rgb <0.596078, 0.439216, 0.313726>] [0.752941 rgb <0.596078, 0.454902, 0.360784>] [0.756863 rgb <0.611765, 0.360784, 0.172549>] [0.760784 rgb <0.611765, 0.360784, 0.203922>] [0.764706 rgb <0.611765, 0.376471, 0.250980>] [0.768627 rgb <0.611765, 0.392157, 0.203922>] [0.772549 rgb <0.611765, 0.423529, 0.266667>] [0.776471 rgb <0.611765, 0.423529, 0.298039>] [0.780392 rgb <0.611765, 0.423529, 0.329412>] [0.784314 rgb <0.611765, 0.439216, 0.376471>] [0.788235 rgb <0.611765, 0.454902, 0.298039>] [0.792157 rgb <0.611765, 0.454902, 0.329412>] [0.796078 rgb <0.611765, 0.470588, 0.376471>] [0.800000 rgb <0.627451, 0.376471, 0.188235>] [0.803922 rgb <0.627451, 0.376471, 0.219608>] [0.807843 rgb <0.627451, 0.392157, 0.266667>] [0.811765 rgb <0.627451, 0.407843, 0.219608>] [0.815686 rgb <0.627451, 0.439216, 0.235294>] [0.819608 rgb <0.627451, 0.439216, 0.282353>] [0.823529 rgb <0.627451, 0.439216, 0.313726>] [0.827451 rgb <0.627451, 0.439216, 0.345098>] [0.831373 rgb <0.627451, 0.470588, 0.345098>] [0.835294 rgb <0.627451, 0.486275, 0.392157>] [0.839216 rgb <0.643137, 0.392157, 0.203922>] [0.843137 rgb <0.643137, 0.392157, 0.235294>] [0.847059 rgb <0.643137, 0.407843, 0.282353>] [0.850980 rgb <0.643137, 0.423529, 0.250980>] [0.854902 rgb <0.643137, 0.423529, 0.329412>] [0.858824 rgb <0.643137, 0.454902, 0.298039>] [0.862745 rgb <0.643137, 0.454902, 0.329412>] [0.866667 rgb <0.643137, 0.454902, 0.360784>] [0.870588 rgb <0.643137, 0.486275, 0.360784>] [0.874510 rgb <0.658824, 0.407843, 0.219608>] [0.878431 rgb <0.658824, 0.423529, 0.298039>] [0.882353 rgb <0.658824, 0.439216, 0.266667>] [0.886275 rgb <0.658824, 0.470588, 0.282353>] [0.890196 rgb <0.658824, 0.470588, 0.313726>] [0.894118 rgb <0.658824, 0.470588, 0.345098>] [0.898039 rgb <0.658824, 0.470588, 0.376471>] [0.901961 rgb <0.658824, 0.501961, 0.376471>] [0.905882 rgb <0.674510, 0.423529, 0.235294>] [0.909804 rgb <0.674510, 0.454902, 0.250980>] [0.913725 rgb <0.674510, 0.454902, 0.298039>] [0.917647 rgb <0.674510, 0.454902, 0.329412>] [0.921569 rgb <0.674510, 0.486275, 0.298039>] [0.925490 rgb <0.674510, 0.486275, 0.329412>] [0.929412 rgb <0.674510, 0.486275, 0.360784>] [0.933333 rgb <0.674510, 0.486275, 0.392157>] [0.937255 rgb <0.674510, 0.517647, 0.392157>] [0.941176 rgb <0.690196, 0.439216, 0.266667>] [0.945098 rgb <0.690196, 0.470588, 0.266667>] [0.949020 rgb <0.690196, 0.470588, 0.313726>] [0.952941 rgb <0.690196, 0.470588, 0.345098>] [0.956863 rgb <0.690196, 0.501961, 0.345098>] [0.960784 rgb <0.690196, 0.501961, 0.376471>] [0.964706 rgb <0.690196, 0.533333, 0.407843>] [0.968627 rgb <0.705882, 0.454902, 0.250980>] [0.972549 rgb <0.705882, 0.454902, 0.282353>] [0.976471 rgb <0.705882, 0.486275, 0.329412>] [0.980392 rgb <0.705882, 0.517647, 0.360784>] [0.984314 rgb <0.705882, 0.517647, 0.392157>] [0.988235 rgb <0.721569, 0.486275, 0.282353>] [0.992157 rgb <0.721569, 0.549020, 0.407843>] [0.996078 rgb <0.737255, 0.501961, 0.313726>] } #version Ash_Inc_Temp; #declare Benediti_Inc_Temp=version; /* Persistence of Vision Raytracer Version 3.1 Benediti marble color_map */ #declare M_Benediti = color_map { [0.000000 rgb <0.878431, 0.847059, 0.690196>] [0.003922 rgb <0.878431, 0.815686, 0.737255>] [0.007843 rgb <0.878431, 0.815686, 0.627451>] [0.011765 rgb <0.862745, 0.768627, 0.674510>] [0.015686 rgb <0.815686, 0.768627, 0.705882>] [0.019608 rgb <0.815686, 0.768627, 0.658824>] [0.023529 rgb <0.815686, 0.752941, 0.627451>] [0.027451 rgb <0.800000, 0.752941, 0.533333>] [0.031373 rgb <0.800000, 0.737255, 0.580392>] [0.035294 rgb <0.784314, 0.784314, 0.580392>] [0.039216 rgb <0.784314, 0.737255, 0.611765>] [0.043137 rgb <0.784314, 0.721569, 0.643137>] [0.047059 rgb <0.784314, 0.705882, 0.517647>] [0.050980 rgb <0.768627, 0.737255, 0.674510>] [0.054902 rgb <0.768627, 0.705882, 0.596078>] [0.058824 rgb <0.752941, 0.721569, 0.627451>] [0.062745 rgb <0.752941, 0.705882, 0.658824>] [0.066667 rgb <0.752941, 0.690196, 0.549020>] [0.070588 rgb <0.737255, 0.690196, 0.454902>] [0.074510 rgb <0.737255, 0.658824, 0.580392>] [0.078431 rgb <0.721569, 0.690196, 0.611765>] [0.082353 rgb <0.721569, 0.658824, 0.611765>] [0.086275 rgb <0.721569, 0.658824, 0.533333>] [0.090196 rgb <0.721569, 0.658824, 0.501961>] [0.094118 rgb <0.721569, 0.643137, 0.705882>] [0.098039 rgb <0.721569, 0.627451, 0.329412>] [0.101961 rgb <0.705882, 0.674510, 0.643137>] [0.105882 rgb <0.705882, 0.643137, 0.470588>] [0.109804 rgb <0.705882, 0.627451, 0.533333>] [0.113725 rgb <0.705882, 0.580392, 0.313726>] [0.117647 rgb <0.690196, 0.658824, 0.580392>] [0.121569 rgb <0.690196, 0.658824, 0.470588>] [0.125490 rgb <0.690196, 0.643137, 0.423529>] [0.129412 rgb <0.690196, 0.627451, 0.580392>] [0.133333 rgb <0.690196, 0.611765, 0.501961>] [0.137255 rgb <0.674510, 0.643137, 0.611765>] [0.141176 rgb <0.674510, 0.643137, 0.517647>] [0.145098 rgb <0.674510, 0.627451, 0.564706>] [0.149020 rgb <0.674510, 0.611765, 0.627451>] [0.152941 rgb <0.674510, 0.611765, 0.454902>] [0.156863 rgb <0.658824, 0.658824, 0.690196>] [0.160784 rgb <0.658824, 0.627451, 0.454902>] [0.164706 rgb <0.658824, 0.596078, 0.533333>] [0.168627 rgb <0.658824, 0.596078, 0.423529>] [0.172549 rgb <0.658824, 0.580392, 0.470588>] [0.176471 rgb <0.658824, 0.533333, 0.298039>] [0.180392 rgb <0.643137, 0.658824, 0.564706>] [0.184314 rgb <0.643137, 0.611765, 0.580392>] [0.188235 rgb <0.643137, 0.611765, 0.501961>] [0.192157 rgb <0.643137, 0.580392, 0.627451>] [0.196078 rgb <0.643137, 0.564706, 0.423529>] [0.200000 rgb <0.627451, 0.596078, 0.454902>] [0.203922 rgb <0.627451, 0.580392, 0.549020>] [0.207843 rgb <0.627451, 0.564706, 0.658824>] [0.211765 rgb <0.627451, 0.564706, 0.501961>] [0.215686 rgb <0.627451, 0.564706, 0.454902>] [0.219608 rgb <0.627451, 0.549020, 0.392157>] [0.223529 rgb <0.611765, 0.596078, 0.533333>] [0.227451 rgb <0.611765, 0.596078, 0.407843>] [0.231373 rgb <0.611765, 0.564706, 0.596078>] [0.235294 rgb <0.611765, 0.549020, 0.423529>] [0.239216 rgb <0.611765, 0.533333, 0.501961>] [0.243137 rgb <0.611765, 0.501961, 0.392157>] [0.247059 rgb <0.596078, 0.580392, 0.486275>] [0.250980 rgb <0.596078, 0.564706, 0.533333>] [0.254902 rgb <0.596078, 0.564706, 0.376471>] [0.258824 rgb <0.596078, 0.517647, 0.454902>] [0.262745 rgb <0.580392, 0.533333, 0.580392>] [0.266667 rgb <0.580392, 0.533333, 0.392157>] [0.270588 rgb <0.580392, 0.517647, 0.360784>] [0.274510 rgb <0.580392, 0.501961, 0.423529>] [0.278431 rgb <0.564706, 0.564706, 0.423529>] [0.282353 rgb <0.564706, 0.564706, 0.345098>] [0.286275 rgb <0.564706, 0.549020, 0.454902>] [0.290196 rgb <0.564706, 0.533333, 0.501961>] [0.294118 rgb <0.564706, 0.517647, 0.533333>] [0.298039 rgb <0.564706, 0.501961, 0.501961>] [0.301961 rgb <0.564706, 0.486275, 0.360784>] [0.305882 rgb <0.549020, 0.517647, 0.439216>] [0.309804 rgb <0.549020, 0.517647, 0.360784>] [0.313726 rgb <0.549020, 0.486275, 0.564706>] [0.317647 rgb <0.549020, 0.486275, 0.407843>] [0.321569 rgb <0.549020, 0.486275, 0.329412>] [0.325490 rgb <0.549020, 0.470588, 0.454902>] [0.329412 rgb <0.533333, 0.517647, 0.517647>] [0.333333 rgb <0.533333, 0.517647, 0.470588>] [0.337255 rgb <0.533333, 0.486275, 0.486275>] [0.341176 rgb <0.533333, 0.454902, 0.360784>] [0.345098 rgb <0.533333, 0.454902, 0.313726>] [0.349020 rgb <0.517647, 0.517647, 0.392157>] [0.352941 rgb <0.517647, 0.517647, 0.329412>] [0.356863 rgb <0.517647, 0.486275, 0.454902>] [0.360784 rgb <0.517647, 0.486275, 0.298039>] [0.364706 rgb <0.517647, 0.454902, 0.470588>] [0.368627 rgb <0.517647, 0.439216, 0.407843>] [0.372549 rgb <0.517647, 0.423529, 0.360784>] [0.376471 rgb <0.501961, 0.486275, 0.360784>] [0.380392 rgb <0.501961, 0.470588, 0.533333>] [0.384314 rgb <0.501961, 0.470588, 0.407843>] [0.388235 rgb <0.501961, 0.454902, 0.329412>] [0.392157 rgb <0.501961, 0.439216, 0.282353>] [0.396078 rgb <0.501961, 0.423529, 0.329412>] [0.400000 rgb <0.486275, 0.470588, 0.470588>] [0.403922 rgb <0.486275, 0.454902, 0.439216>] [0.407843 rgb <0.486275, 0.454902, 0.376471>] [0.411765 rgb <0.486275, 0.439216, 0.486275>] [0.415686 rgb <0.486275, 0.439216, 0.407843>] [0.419608 rgb <0.486275, 0.423529, 0.423529>] [0.423529 rgb <0.486275, 0.423529, 0.345098>] [0.427451 rgb <0.470588, 0.501961, 0.407843>] [0.431373 rgb <0.470588, 0.470588, 0.376471>] [0.435294 rgb <0.470588, 0.454902, 0.298039>] [0.439216 rgb <0.470588, 0.439216, 0.250980>] [0.443137 rgb <0.470588, 0.423529, 0.282353>] [0.447059 rgb <0.470588, 0.407843, 0.470588>] [0.450980 rgb <0.470588, 0.407843, 0.392157>] [0.454902 rgb <0.470588, 0.407843, 0.282353>] [0.458824 rgb <0.470588, 0.392157, 0.250980>] [0.462745 rgb <0.454902, 0.454902, 0.439216>] [0.466667 rgb <0.454902, 0.454902, 0.407843>] [0.470588 rgb <0.454902, 0.454902, 0.376471>] [0.474510 rgb <0.454902, 0.454902, 0.345098>] [0.478431 rgb <0.454902, 0.423529, 0.439216>] [0.482353 rgb <0.454902, 0.423529, 0.376471>] [0.486275 rgb <0.454902, 0.423529, 0.313726>] [0.490196 rgb <0.454902, 0.407843, 0.407843>] [0.494118 rgb <0.454902, 0.407843, 0.345098>] [0.498039 rgb <0.454902, 0.392157, 0.454902>] [0.501961 rgb <0.454902, 0.392157, 0.376471>] [0.505882 rgb <0.454902, 0.392157, 0.345098>] [0.509804 rgb <0.454902, 0.392157, 0.298039>] [0.513726 rgb <0.439216, 0.486275, 0.376471>] [0.517647 rgb <0.439216, 0.439216, 0.313726>] [0.521569 rgb <0.439216, 0.423529, 0.486275>] [0.525490 rgb <0.439216, 0.423529, 0.282353>] [0.529412 rgb <0.439216, 0.392157, 0.423529>] [0.533333 rgb <0.439216, 0.392157, 0.266667>] [0.537255 rgb <0.439216, 0.376471, 0.345098>] [0.541176 rgb <0.423529, 0.439216, 0.360784>] [0.545098 rgb <0.423529, 0.423529, 0.392157>] [0.549020 rgb <0.423529, 0.407843, 0.376471>] [0.552941 rgb <0.423529, 0.407843, 0.329412>] [0.556863 rgb <0.423529, 0.376471, 0.423529>] [0.560784 rgb <0.423529, 0.376471, 0.392157>] [0.564706 rgb <0.423529, 0.376471, 0.313726>] [0.568627 rgb <0.423529, 0.360784, 0.266667>] [0.572549 rgb <0.423529, 0.360784, 0.235294>] [0.576471 rgb <0.423529, 0.360784, 0.188235>] [0.580392 rgb <0.407843, 0.439216, 0.313726>] [0.584314 rgb <0.407843, 0.439216, 0.282353>] [0.588235 rgb <0.407843, 0.423529, 0.235294>] [0.592157 rgb <0.407843, 0.407843, 0.298039>] [0.596078 rgb <0.407843, 0.376471, 0.250980>] [0.600000 rgb <0.407843, 0.360784, 0.360784>] [0.603922 rgb <0.407843, 0.345098, 0.439216>] [0.607843 rgb <0.407843, 0.345098, 0.392157>] [0.611765 rgb <0.407843, 0.345098, 0.360784>] [0.615686 rgb <0.407843, 0.345098, 0.298039>] [0.619608 rgb <0.392157, 0.423529, 0.313726>] [0.623529 rgb <0.392157, 0.392157, 0.549020>] [0.627451 rgb <0.392157, 0.392157, 0.360784>] [0.631373 rgb <0.392157, 0.392157, 0.329412>] [0.635294 rgb <0.392157, 0.392157, 0.266667>] [0.639216 rgb <0.392157, 0.376471, 0.392157>] [0.643137 rgb <0.392157, 0.376471, 0.298039>] [0.647059 rgb <0.392157, 0.360784, 0.219608>] [0.650980 rgb <0.392157, 0.345098, 0.266667>] [0.654902 rgb <0.392157, 0.329412, 0.235294>] [0.658824 rgb <0.376471, 0.360784, 0.345098>] [0.662745 rgb <0.376471, 0.360784, 0.235294>] [0.666667 rgb <0.376471, 0.345098, 0.329412>] [0.670588 rgb <0.376471, 0.329412, 0.376471>] [0.674510 rgb <0.376471, 0.329412, 0.172549>] [0.678431 rgb <0.376471, 0.313726, 0.266667>] [0.682353 rgb <0.360784, 0.376471, 0.564706>] [0.686275 rgb <0.360784, 0.376471, 0.454902>] [0.690196 rgb <0.360784, 0.360784, 0.329412>] [0.694118 rgb <0.360784, 0.360784, 0.282353>] [0.698039 rgb <0.360784, 0.329412, 0.298039>] [0.701961 rgb <0.360784, 0.329412, 0.266667>] [0.705882 rgb <0.360784, 0.329412, 0.219608>] [0.709804 rgb <0.360784, 0.313726, 0.345098>] [0.713726 rgb <0.360784, 0.313726, 0.298039>] [0.717647 rgb <0.360784, 0.313726, 0.219608>] [0.721569 rgb <0.345098, 0.376471, 0.549020>] [0.725490 rgb <0.345098, 0.360784, 0.250980>] [0.729412 rgb <0.345098, 0.345098, 0.360784>] [0.733333 rgb <0.345098, 0.345098, 0.235294>] [0.737255 rgb <0.345098, 0.329412, 0.313726>] [0.741176 rgb <0.345098, 0.313726, 0.392157>] [0.745098 rgb <0.345098, 0.313726, 0.345098>] [0.749020 rgb <0.345098, 0.313726, 0.329412>] [0.752941 rgb <0.345098, 0.313726, 0.235294>] [0.756863 rgb <0.345098, 0.313726, 0.188235>] [0.760784 rgb <0.345098, 0.298039, 0.298039>] [0.764706 rgb <0.329412, 0.329412, 0.282353>] [0.768627 rgb <0.329412, 0.329412, 0.203922>] [0.772549 rgb <0.329412, 0.313726, 0.250980>] [0.776471 rgb <0.329412, 0.282353, 0.360784>] [0.780392 rgb <0.329412, 0.282353, 0.329412>] [0.784314 rgb <0.329412, 0.282353, 0.266667>] [0.788235 rgb <0.313726, 0.329412, 0.235294>] [0.792157 rgb <0.313726, 0.298039, 0.298039>] [0.796078 rgb <0.313726, 0.282353, 0.203922>] [0.800000 rgb <0.313726, 0.266667, 0.376471>] [0.803922 rgb <0.313726, 0.266667, 0.235294>] [0.807843 rgb <0.298039, 0.313726, 0.266667>] [0.811765 rgb <0.298039, 0.298039, 0.235294>] [0.815686 rgb <0.298039, 0.298039, 0.203922>] [0.819608 rgb <0.298039, 0.282353, 0.298039>] [0.823529 rgb <0.298039, 0.282353, 0.250980>] [0.827451 rgb <0.298039, 0.282353, 0.203922>] [0.831373 rgb <0.298039, 0.266667, 0.329412>] [0.835294 rgb <0.298039, 0.250980, 0.298039>] [0.839216 rgb <0.282353, 0.298039, 0.141176>] [0.843137 rgb <0.282353, 0.266667, 0.188235>] [0.847059 rgb <0.282353, 0.250980, 0.266667>] [0.850980 rgb <0.282353, 0.250980, 0.219608>] [0.854902 rgb <0.282353, 0.219608, 0.298039>] [0.858824 rgb <0.266667, 0.282353, 0.219608>] [0.862745 rgb <0.266667, 0.266667, 0.250980>] [0.866667 rgb <0.266667, 0.250980, 0.282353>] [0.870588 rgb <0.266667, 0.250980, 0.235294>] [0.874510 rgb <0.250980, 0.266667, 0.188235>] [0.878431 rgb <0.250980, 0.250980, 0.250980>] [0.882353 rgb <0.250980, 0.250980, 0.188235>] [0.886275 rgb <0.250980, 0.235294, 0.172549>] [0.890196 rgb <0.250980, 0.219608, 0.250980>] [0.894118 rgb <0.250980, 0.219608, 0.235294>] [0.898039 rgb <0.250980, 0.219608, 0.203922>] [0.901961 rgb <0.250980, 0.188235, 0.250980>] [0.905882 rgb <0.235294, 0.282353, 0.266667>] [0.909804 rgb <0.235294, 0.266667, 0.141176>] [0.913725 rgb <0.235294, 0.235294, 0.235294>] [0.917647 rgb <0.235294, 0.219608, 0.203922>] [0.921569 rgb <0.219608, 0.250980, 0.125490>] [0.925490 rgb <0.219608, 0.235294, 0.156863>] [0.929412 rgb <0.219608, 0.203922, 0.156863>] [0.933333 rgb <0.219608, 0.188235, 0.219608>] [0.937255 rgb <0.219608, 0.188235, 0.188235>] [0.941176 rgb <0.203922, 0.219608, 0.172549>] [0.945098 rgb <0.203922, 0.219608, 0.125490>] [0.949020 rgb <0.203922, 0.156863, 0.235294>] [0.952941 rgb <0.188235, 0.188235, 0.188235>] [0.956863 rgb <0.188235, 0.188235, 0.156863>] [0.960784 rgb <0.188235, 0.156863, 0.203922>] [0.964706 rgb <0.172549, 0.188235, 0.125490>] [0.968627 rgb <0.156863, 0.156863, 0.172549>] [0.972549 rgb <0.156863, 0.156863, 0.125490>] [0.976471 rgb <0.156863, 0.125490, 0.219608>] [0.980392 rgb <0.141176, 0.125490, 0.125490>] [0.984314 rgb <0.109804, 0.125490, 0.094118>] [0.988235 rgb <0.109804, 0.109804, 0.109804>] [0.992157 rgb <0.109804, 0.094118, 0.141176>] [0.996078 rgb <0.094118, 0.094118, 0.094118>] } #version Benediti_Inc_Temp; #declare Bubinga_Inc_Temp=version; /* Persistence of Vision Raytracer Version 3.1 Bubinga wood color_map */ #declare M_Bubinga = color_map { [0.000000 rgb <0.486275, 0.235294, 0.156863>] [0.003922 rgb <0.486275, 0.203922, 0.125490>] [0.007843 rgb <0.486275, 0.203922, 0.094118>] [0.011765 rgb <0.470588, 0.219608, 0.156863>] [0.015686 rgb <0.470588, 0.203922, 0.109804>] [0.019608 rgb <0.470588, 0.188235, 0.094118>] [0.023529 rgb <0.470588, 0.172549, 0.078431>] [0.027451 rgb <0.454902, 0.235294, 0.188235>] [0.031373 rgb <0.454902, 0.219608, 0.172549>] [0.035294 rgb <0.454902, 0.219608, 0.141176>] [0.039216 rgb <0.454902, 0.203922, 0.156863>] [0.043137 rgb <0.454902, 0.203922, 0.125490>] [0.047059 rgb <0.454902, 0.188235, 0.141176>] [0.050980 rgb <0.454902, 0.188235, 0.109804>] [0.054902 rgb <0.454902, 0.172549, 0.094118>] [0.058824 rgb <0.439216, 0.235294, 0.219608>] [0.062745 rgb <0.439216, 0.219608, 0.188235>] [0.066667 rgb <0.439216, 0.219608, 0.156863>] [0.070588 rgb <0.439216, 0.203922, 0.172549>] [0.074510 rgb <0.439216, 0.203922, 0.141176>] [0.078431 rgb <0.439216, 0.203922, 0.109804>] [0.082353 rgb <0.439216, 0.188235, 0.156863>] [0.086275 rgb <0.439216, 0.188235, 0.125490>] [0.090196 rgb <0.439216, 0.188235, 0.094118>] [0.094118 rgb <0.439216, 0.172549, 0.109804>] [0.098039 rgb <0.439216, 0.172549, 0.078431>] [0.101961 rgb <0.439216, 0.156863, 0.094118>] [0.105882 rgb <0.423529, 0.219608, 0.172549>] [0.109804 rgb <0.423529, 0.219608, 0.141176>] [0.113725 rgb <0.423529, 0.203922, 0.156863>] [0.117647 rgb <0.423529, 0.203922, 0.125490>] [0.121569 rgb <0.423529, 0.188235, 0.172549>] [0.125490 rgb <0.423529, 0.188235, 0.141176>] [0.129412 rgb <0.423529, 0.188235, 0.109804>] [0.133333 rgb <0.423529, 0.172549, 0.156863>] [0.137255 rgb <0.423529, 0.172549, 0.125490>] [0.141176 rgb <0.423529, 0.172549, 0.094118>] [0.145098 rgb <0.423529, 0.156863, 0.109804>] [0.149020 rgb <0.423529, 0.156863, 0.078431>] [0.152941 rgb <0.407843, 0.219608, 0.156863>] [0.156863 rgb <0.407843, 0.203922, 0.172549>] [0.160784 rgb <0.407843, 0.203922, 0.141176>] [0.164706 rgb <0.407843, 0.203922, 0.109804>] [0.168627 rgb <0.407843, 0.188235, 0.188235>] [0.172549 rgb <0.407843, 0.188235, 0.156863>] [0.176471 rgb <0.407843, 0.188235, 0.125490>] [0.180392 rgb <0.407843, 0.172549, 0.141176>] [0.184314 rgb <0.407843, 0.172549, 0.109804>] [0.188235 rgb <0.407843, 0.156863, 0.125490>] [0.192157 rgb <0.407843, 0.156863, 0.094118>] [0.196078 rgb <0.392157, 0.219608, 0.172549>] [0.200000 rgb <0.392157, 0.203922, 0.188235>] [0.203922 rgb <0.392157, 0.203922, 0.156863>] [0.207843 rgb <0.392157, 0.203922, 0.125490>] [0.211765 rgb <0.392157, 0.188235, 0.172549>] [0.215686 rgb <0.392157, 0.188235, 0.141176>] [0.219608 rgb <0.392157, 0.188235, 0.109804>] [0.223529 rgb <0.392157, 0.172549, 0.156863>] [0.227451 rgb <0.392157, 0.172549, 0.125490>] [0.231373 rgb <0.392157, 0.172549, 0.094118>] [0.235294 rgb <0.392157, 0.156863, 0.141176>] [0.239216 rgb <0.392157, 0.156863, 0.109804>] [0.243137 rgb <0.392157, 0.156863, 0.078431>] [0.247059 rgb <0.392157, 0.141176, 0.094118>] [0.250980 rgb <0.392157, 0.141176, 0.062745>] [0.254902 rgb <0.376471, 0.188235, 0.156863>] [0.258824 rgb <0.376471, 0.188235, 0.125490>] [0.262745 rgb <0.376471, 0.188235, 0.094118>] [0.266667 rgb <0.376471, 0.172549, 0.172549>] [0.270588 rgb <0.376471, 0.172549, 0.141176>] [0.274510 rgb <0.376471, 0.172549, 0.109804>] [0.278431 rgb <0.376471, 0.156863, 0.125490>] [0.282353 rgb <0.376471, 0.156863, 0.094118>] [0.286275 rgb <0.376471, 0.141176, 0.109804>] [0.290196 rgb <0.376471, 0.141176, 0.078431>] [0.294118 rgb <0.376471, 0.125490, 0.094118>] [0.298039 rgb <0.376471, 0.125490, 0.062745>] [0.301961 rgb <0.360784, 0.203922, 0.172549>] [0.305882 rgb <0.360784, 0.188235, 0.141176>] [0.309804 rgb <0.360784, 0.172549, 0.156863>] [0.313726 rgb <0.360784, 0.172549, 0.125490>] [0.317647 rgb <0.360784, 0.172549, 0.094118>] [0.321569 rgb <0.360784, 0.156863, 0.141176>] [0.325490 rgb <0.360784, 0.156863, 0.109804>] [0.329412 rgb <0.360784, 0.156863, 0.078431>] [0.333333 rgb <0.360784, 0.141176, 0.125490>] [0.337255 rgb <0.360784, 0.141176, 0.094118>] [0.341176 rgb <0.360784, 0.141176, 0.062745>] [0.345098 rgb <0.360784, 0.125490, 0.109804>] [0.349020 rgb <0.360784, 0.125490, 0.078431>] [0.352941 rgb <0.360784, 0.109804, 0.062745>] [0.356863 rgb <0.345098, 0.203922, 0.109804>] [0.360784 rgb <0.345098, 0.188235, 0.156863>] [0.364706 rgb <0.345098, 0.172549, 0.141176>] [0.368627 rgb <0.345098, 0.172549, 0.109804>] [0.372549 rgb <0.345098, 0.172549, 0.078431>] [0.376471 rgb <0.345098, 0.156863, 0.156863>] [0.380392 rgb <0.345098, 0.156863, 0.125490>] [0.384314 rgb <0.345098, 0.156863, 0.094118>] [0.388235 rgb <0.345098, 0.141176, 0.141176>] [0.392157 rgb <0.345098, 0.141176, 0.109804>] [0.396078 rgb <0.345098, 0.141176, 0.078431>] [0.400000 rgb <0.345098, 0.125490, 0.094118>] [0.403922 rgb <0.345098, 0.125490, 0.062745>] [0.407843 rgb <0.345098, 0.109804, 0.078431>] [0.411765 rgb <0.345098, 0.109804, 0.047059>] [0.415686 rgb <0.329412, 0.172549, 0.156863>] [0.419608 rgb <0.329412, 0.172549, 0.125490>] [0.423529 rgb <0.329412, 0.156863, 0.141176>] [0.427451 rgb <0.329412, 0.156863, 0.109804>] [0.431373 rgb <0.329412, 0.156863, 0.078431>] [0.435294 rgb <0.329412, 0.141176, 0.125490>] [0.439216 rgb <0.329412, 0.141176, 0.094118>] [0.443137 rgb <0.329412, 0.125490, 0.109804>] [0.447059 rgb <0.329412, 0.125490, 0.078431>] [0.450980 rgb <0.329412, 0.109804, 0.094118>] [0.454902 rgb <0.329412, 0.109804, 0.062745>] [0.458824 rgb <0.329412, 0.094118, 0.078431>] [0.462745 rgb <0.329412, 0.094118, 0.047059>] [0.466667 rgb <0.313726, 0.203922, 0.188235>] [0.470588 rgb <0.313726, 0.172549, 0.141176>] [0.474510 rgb <0.313726, 0.156863, 0.125490>] [0.478431 rgb <0.313726, 0.156863, 0.094118>] [0.482353 rgb <0.313726, 0.141176, 0.141176>] [0.486275 rgb <0.313726, 0.141176, 0.109804>] [0.490196 rgb <0.313726, 0.141176, 0.078431>] [0.494118 rgb <0.313726, 0.125490, 0.125490>] [0.498039 rgb <0.313726, 0.125490, 0.094118>] [0.501961 rgb <0.313726, 0.125490, 0.062745>] [0.505882 rgb <0.313726, 0.109804, 0.109804>] [0.509804 rgb <0.313726, 0.109804, 0.078431>] [0.513726 rgb <0.313726, 0.109804, 0.047059>] [0.517647 rgb <0.313726, 0.094118, 0.062745>] [0.521569 rgb <0.298039, 0.156863, 0.141176>] [0.525490 rgb <0.298039, 0.156863, 0.109804>] [0.529412 rgb <0.298039, 0.141176, 0.125490>] [0.533333 rgb <0.298039, 0.141176, 0.094118>] [0.537255 rgb <0.298039, 0.125490, 0.109804>] [0.541176 rgb <0.298039, 0.125490, 0.078431>] [0.545098 rgb <0.298039, 0.109804, 0.094118>] [0.549020 rgb <0.298039, 0.109804, 0.062745>] [0.552941 rgb <0.298039, 0.094118, 0.078431>] [0.556863 rgb <0.298039, 0.094118, 0.047059>] [0.560784 rgb <0.282353, 0.156863, 0.094118>] [0.564706 rgb <0.282353, 0.141176, 0.141176>] [0.568627 rgb <0.282353, 0.141176, 0.109804>] [0.572549 rgb <0.282353, 0.125490, 0.125490>] [0.576471 rgb <0.282353, 0.125490, 0.094118>] [0.580392 rgb <0.282353, 0.125490, 0.062745>] [0.584314 rgb <0.282353, 0.109804, 0.109804>] [0.588235 rgb <0.282353, 0.109804, 0.078431>] [0.592157 rgb <0.282353, 0.109804, 0.047059>] [0.596078 rgb <0.282353, 0.094118, 0.094118>] [0.600000 rgb <0.282353, 0.094118, 0.062745>] [0.603922 rgb <0.282353, 0.078431, 0.047059>] [0.607843 rgb <0.266667, 0.156863, 0.156863>] [0.611765 rgb <0.266667, 0.141176, 0.125490>] [0.615686 rgb <0.266667, 0.125490, 0.109804>] [0.619608 rgb <0.266667, 0.125490, 0.078431>] [0.623529 rgb <0.266667, 0.109804, 0.125490>] [0.627451 rgb <0.266667, 0.109804, 0.094118>] [0.631373 rgb <0.266667, 0.109804, 0.062745>] [0.635294 rgb <0.266667, 0.094118, 0.078431>] [0.639216 rgb <0.266667, 0.094118, 0.047059>] [0.643137 rgb <0.266667, 0.078431, 0.062745>] [0.647059 rgb <0.250980, 0.125490, 0.125490>] [0.650980 rgb <0.250980, 0.125490, 0.094118>] [0.654902 rgb <0.250980, 0.125490, 0.062745>] [0.658824 rgb <0.250980, 0.109804, 0.109804>] [0.662745 rgb <0.250980, 0.109804, 0.078431>] [0.666667 rgb <0.250980, 0.094118, 0.094118>] [0.670588 rgb <0.250980, 0.094118, 0.062745>] [0.674510 rgb <0.250980, 0.078431, 0.078431>] [0.678431 rgb <0.250980, 0.078431, 0.047059>] [0.682353 rgb <0.250980, 0.078431, 0.031373>] [0.686275 rgb <0.250980, 0.062745, 0.047059>] [0.690196 rgb <0.235294, 0.125490, 0.109804>] [0.694118 rgb <0.235294, 0.125490, 0.094118>] [0.698039 rgb <0.235294, 0.109804, 0.109804>] [0.701961 rgb <0.235294, 0.109804, 0.094118>] [0.705882 rgb <0.235294, 0.109804, 0.078431>] [0.709804 rgb <0.235294, 0.109804, 0.062745>] [0.713726 rgb <0.235294, 0.094118, 0.094118>] [0.717647 rgb <0.235294, 0.094118, 0.078431>] [0.721569 rgb <0.235294, 0.094118, 0.062745>] [0.725490 rgb <0.235294, 0.094118, 0.047059>] [0.729412 rgb <0.235294, 0.078431, 0.078431>] [0.733333 rgb <0.235294, 0.078431, 0.062745>] [0.737255 rgb <0.235294, 0.078431, 0.047059>] [0.741176 rgb <0.235294, 0.078431, 0.031373>] [0.745098 rgb <0.235294, 0.062745, 0.047059>] [0.749020 rgb <0.235294, 0.062745, 0.031373>] [0.752941 rgb <0.219608, 0.109804, 0.094118>] [0.756863 rgb <0.219608, 0.109804, 0.078431>] [0.760784 rgb <0.219608, 0.109804, 0.062745>] [0.764706 rgb <0.219608, 0.094118, 0.094118>] [0.768627 rgb <0.219608, 0.094118, 0.078431>] [0.772549 rgb <0.219608, 0.094118, 0.062745>] [0.776471 rgb <0.219608, 0.094118, 0.047059>] [0.780392 rgb <0.219608, 0.078431, 0.078431>] [0.784314 rgb <0.219608, 0.078431, 0.062745>] [0.788235 rgb <0.219608, 0.078431, 0.047059>] [0.792157 rgb <0.219608, 0.062745, 0.078431>] [0.796078 rgb <0.219608, 0.062745, 0.062745>] [0.800000 rgb <0.219608, 0.062745, 0.047059>] [0.803922 rgb <0.219608, 0.062745, 0.031373>] [0.807843 rgb <0.203922, 0.109804, 0.078431>] [0.811765 rgb <0.203922, 0.094118, 0.094118>] [0.815686 rgb <0.203922, 0.094118, 0.078431>] [0.819608 rgb <0.203922, 0.094118, 0.062745>] [0.823529 rgb <0.203922, 0.094118, 0.047059>] [0.827451 rgb <0.203922, 0.078431, 0.094118>] [0.831373 rgb <0.203922, 0.078431, 0.078431>] [0.835294 rgb <0.203922, 0.078431, 0.062745>] [0.839216 rgb <0.203922, 0.078431, 0.047059>] [0.843137 rgb <0.203922, 0.062745, 0.062745>] [0.847059 rgb <0.203922, 0.062745, 0.047059>] [0.850980 rgb <0.203922, 0.062745, 0.031373>] [0.854902 rgb <0.188235, 0.094118, 0.094118>] [0.858824 rgb <0.188235, 0.094118, 0.078431>] [0.862745 rgb <0.188235, 0.094118, 0.062745>] [0.866667 rgb <0.188235, 0.078431, 0.078431>] [0.870588 rgb <0.188235, 0.078431, 0.062745>] [0.874510 rgb <0.188235, 0.078431, 0.047059>] [0.878431 rgb <0.188235, 0.078431, 0.031373>] [0.882353 rgb <0.188235, 0.062745, 0.062745>] [0.886275 rgb <0.188235, 0.062745, 0.047059>] [0.890196 rgb <0.188235, 0.062745, 0.031373>] [0.894118 rgb <0.172549, 0.094118, 0.078431>] [0.898039 rgb <0.172549, 0.094118, 0.062745>] [0.901961 rgb <0.172549, 0.078431, 0.078431>] [0.905882 rgb <0.172549, 0.078431, 0.062745>] [0.909804 rgb <0.172549, 0.078431, 0.047059>] [0.913725 rgb <0.172549, 0.062745, 0.062745>] [0.917647 rgb <0.172549, 0.062745, 0.047059>] [0.921569 rgb <0.172549, 0.062745, 0.031373>] [0.925490 rgb <0.172549, 0.047059, 0.047059>] [0.929412 rgb <0.156863, 0.078431, 0.062745>] [0.933333 rgb <0.156863, 0.078431, 0.047059>] [0.937255 rgb <0.156863, 0.062745, 0.062745>] [0.941176 rgb <0.156863, 0.062745, 0.047059>] [0.945098 rgb <0.156863, 0.062745, 0.031373>] [0.949020 rgb <0.156863, 0.047059, 0.047059>] [0.952941 rgb <0.156863, 0.047059, 0.031373>] [0.956863 rgb <0.141176, 0.078431, 0.062745>] [0.960784 rgb <0.141176, 0.062745, 0.062745>] [0.964706 rgb <0.141176, 0.062745, 0.047059>] [0.968627 rgb <0.141176, 0.062745, 0.031373>] [0.972549 rgb <0.141176, 0.047059, 0.047059>] [0.976471 rgb <0.141176, 0.047059, 0.031373>] [0.980392 rgb <0.125490, 0.062745, 0.047059>] [0.984314 rgb <0.125490, 0.062745, 0.031373>] [0.988235 rgb <0.125490, 0.047059, 0.047059>] [0.992157 rgb <0.125490, 0.047059, 0.031373>] [0.996078 rgb <0.109804, 0.062745, 0.047059>] } #version Bubinga_Inc_Temp; PNG  IHDR@șPLTE  $(,048<AE I M$Q$U(Y(],a,e0i0m4q4u8y<}ڷ?O|q}{ڶ}n֛ok[w+@zmK:t$R۵Cma#|z$x;$;v/|cGIA?C!Cآ _%@Hqvu7x:+FN$`1"D&D`rd*<ҝs.]tw|ڵk.( ⧒e2Zce;F[ݻ{w$ A#ڙ3|)_@^ z̶ ^Ό=zO|}ѳg0E؉/̺b >e !:|ͿeOMd( aK|x=Jl+vջ~{ #BT2, l Lк<5jCm<>쁯d^QP–XK||عBI00PwǾ}ן?}8Dΐd(!dY>~Iѻr ʼn;WrV܀ Ix 4p"D!dNR_ @0Ku#J r ?B|1tȐ?EQBBld2|BJ:ZNz`D˯6l# ۯq( A CCaGIs+O.M,Bk<6|ȑF3f,vhJ2xHd4)(⓼K[$x'L4yiӦ3m)'F8j$2:A#FPaq l-4ǼK_nu{I37iigΚ1 ٳf& G dNNhAr"lb%|,hdޭ)uZ=p.jM1Kcμ .ZϢ ϛ1{iS&OFJ1 B/:E\6n!2|4[C|uXwM8yʴfϙ`ђ4WXr ˖.Y !N4aѣFp`d! ;0L6n-6>޻wپ7BYs+W]AKkֆ֮^ -@ӧ 0?E\4V#[_;G]ablM|$?Xvm:lۺY{ú5V,_ :Q!62F!%!1qӃJ+'D. -ȻP'M&ǧi=Ɔ;um@s5f!q2^f}L"l̃ 06+}*yuW]!8%4Q}[u,Z>h?wn]bTHY8Ǭ$l̂UҼɽU'k-Ts7oߵ 7'MwٺIk!?wLa9DI3!@iUҜe}&{w12c.c$?=CSK;B{9kd-Y8ά sBBLl,!VIS6@E|iޥeG33 |^߶'2$=NOgCfƻvlۤvci"fB11a3l.㓊ޥřC' [# q'ݝ ݪ~JI"E3!٘!UIS 6@y)}Q|C'LJ|OkVs U^ur훟#B P%TM",I}0-X.wШ̧%9iIQ:rz]:[6$WG 6 !~ ׿VѱfZ0[Y;yx J_\Ys9"4|Hic6fϨcX%P04`>O~ꌾF ŋl;(?QAQIEV%i7bbb%8vnݴx8TW:'9X'÷mߍ::{ 8QQZVNII{9P1uӦn1#U (4Iv&W'.7X~fn|^\|wiꐭcdVTfg=~J8{~"FB1q ȭi򫉯3 G xTZ ; L'~nacS<.WW=),jU;1&@p@#٘ muW>_c!/ç!ᣛ~ֶ\=OKJM+PWeQ!^6VHp-dcKƲ*bOsj֒$ʶ%:-ok^] =f,X98?w\ҳT"Cx{8ڇu %hc Zq'[F!?ѽ"WWs>·[%5_C3r[K:dcAגSd+խeE01RHQC@Ј $Bq/aA(yv4 P1:+Zj4/`j~>H?ֶG:pֽE iNע.;}NV`C2F=9AͰ*np 6 W~̽ɥ>ũ5-gsq?r!j̬|Q+n]8҃gX!vD B$8i_25G򓹗U_W3W'm |m\=EVVխaanvƽA~^N@܌n۷lBjKT-; o\ 6`k=$Iձs Ԭ1Wķl:"~1IwUKK+T먫ʟ>+I{ Z[kbd"~008Qˊb`˗'Clޚf}|no]m"#G\=O@E%/-+@UYqqy:?%cPz;7R/ ">Nb6O7 ۗW^ ?jF/,(mZ\܎8wSL=5@V3SQ*ɹ%,||n\3MF[3R 407 ?\~܋!çtYoml4öIoA8L),.Gf1,Lꄻ#-&cqIq {P4@7 $?[ǧ8思m:ܷy񘳫qp&|ȸĔ{YyqeyͫW{#5"*`[4_"8xPfHb !ɏuo^ђw胕wRo">@_s!#c%zTTR+ V(MO}NzZ,ܥU{@p?v_< Ơdbl XIҏɏ! hl!Bs,_bhś! pkzB.\~7ng) %*+xt5bعӾ8=bgCЙpÚKP^$|#$خat`/+_^vq->.D~l!xgυ_t%:\XUXqFB\ԥ𐳁:e٬5] ?Cc%ݬ|>4Ȩhxbb'&H}7G5JQvIqї~>>ާNky?Ν5L<M Uo  +ʏ݋Ks^xb'o ⧍|lwtv yzRbBbbKzk)&YХD^zlpPPPЈ3']3 nXd Ġ8N$ئ@Gۗ/Op/>!;.ɇjo&|~t8u8|!.)%fYwo޺q?aNʚTWU=ɾq҅ WC}5۾ie12G"zdex}eGcsjq0bq6ҋ#|/("*G 3-,(,.xRPJAh'yC'\KPbge{֍k)ļa!{֯3~>0}kɏQc -5Wr`p7+/3!W\ r{e%ժJaQUVUVRQ}7zbB|||B[J9QA^N6& &X?'zc'ؗ~$L~^|82CFozw>l쉟OوRqљy`2XU+0n)/jqVԔ4݌⪧=A n^r51,$|dR-+'ٗf?u/jf36։#zz8>{H7{9O+R.)*,*۟#`1`Fmeggddf)P*μjgijc49G P9 Of_!<{;«iDz{"='~qBZuVX%EsP`YA^Bua'Oԕg{ Q`֑͏O/~Ba{oiҺr5n7S3gC/FǧWW@n(JUWK <)())TWWy;S !AH6'/B~̽of 0홁,,>vrG~C"&dW1V YCSJr|]V+y+o <ʼB \~&N* f3zV1| ?p}-95A~QPT~W0-YTd\ uw8dn,b#Qa}A}@}iuW) 3|ZHOGw'+IYzm >'~Qq xs>ၾQ?VWJB<[cuD܈6< $~~> $Aӏ G|[i0qEdg;8u| ?o߀!"c㯧|_OˋF;N/audk ۈ{~]9ԧFu]> Bn[Z]9:b';9 >S>~_ed>/{gU7>_Y5j)gJ5.qF3*\PpAܐMDE@ B$=d#{:tI:['9ݷ;H&5{,x:dbASj/=g;%>֪C&TύŇoh@'CcJV85:Ǝ0tNI-(il@<7YlQ6W\z)q};{2v~|PS,=O4?|(ɓ~paϞzY UU|Vc+u֗_K <}ol2k3ƪ[><:@`쿐2~(K%K71(a׾GApDt!!/2*Rl624k:A0 ay.l7ԣU_K:{R/ӟzrjD[H/ }zHou%ܳIs@ ]]d~ [V36W,fDÜ4R[Vr0TkFãdx{'bj63?ϥ bc._/=rTԵ, ˓` Ay::pٲ|x4I`3it_Jsg1yYǟ#~Kr%'_%&&%%gdf6QL 8i)c7Qb};R~N ˝WsE^kj,-NOIJdYZ:|igd\bC!aYՍ5W=Y.r|82J.}kox ~侯ƕt[Ko=Y MyblrssrrԨEӭH~hVkllȼpҋìAҮ[2H|3~걔nE~|Nj6UEbGZ+הƼUyUMCs[WlGv#~iC;[ȦKzxmU b'6tpG-Z[Ԛޡ~AWxSix ɁA@ Ǽw7?lQ[aEc!IӭA0zzVMu =9-8-6 Y]7Lp]ՑCyҏgK'm;ȟ~;* t91=N=h4-R٠ ܰ Xvuh5^:""7ٱ'Ȗ<ޜ#  ;0 #*/LF}^E%d4kRF#(Y*aà̫ψdXH B~'Rv .âb*QMQ0[hxKˤR$E@w4Wd$D_%.j9x-n M%~/29d~ԷZ!^4.x[%g@Y>a(t: d80ij2#OP;ay kkQcf7-þ p\nrܪ+,mlh jѠ\N@A/v%"43UK4d$V`2!y'f̏=C2qԾĎSŭpudAh2['> hK/8d-Ft z0h ཬiOh9b(\ZN^A _7@+}7oԘ3@֖{JR&m_2"˥1ox8$ ͝s/1]pO{W>Z-n RЪ5ZFz\߰X,'~<8d cc? % _~-oUCB =QVpXDt\|rFnqEeUUum}#Nȹ&5pVUuCp ̓-\ ҫ,w5{f=g;ȯQ7c})<*A&YSCG +E^e- 5=X4{qϾ\[qY[z/Ĕ~Aץh:=8!iMBKRa/>wKsf9mK}I ୷<0/Ϝ=e֬GE6-gGFxOK[U:- Ĺ' VG?uȁ=;J3iG<r~t*o}| o/o\\.Ǔ,ܮ J߱ÓgVCG]I6,}d[]KZN)މу6w{ ?]t^zCYHX7&%t7+ru&Yd'3cÃ?7\3 @7KGw,CX|OSς,Yj-ٲF&\MS e -~ Zղ&-CKgNؽ}U^I,ov1eȽу_9-zպ<* PZ* }Yy[CSrW~@6@0dT~E.@'T~J.@gT~O.@!T~T.@qT~Y.@'T~^.@zc LmFH9! 1B;BHj(&K#Blض\Ovh# ";m݆Og4U s& @1/vmq_8]Nm 2"mHs#9fb~ PDr| 'S0$[;E19Ǐyʪ]:!æΦ뙩WbCΟ:|p];~,J," @Jn̴D4BǠDŽEB |=!!o?0p;Ҫg4Օi/2b`>v k[O[0d 3.L135!&(&LQMp6" ] d;S3W6v`PBt-eyגD;s :o/;~~z7_};?Y*` $7#!& mё1/!䅒 Uk ^(MeT0>BdŽ_mqvjBLdȅs~>ǽk[|KH@ƻL=@$HXc(Lc(D5"dzBDIO7D(^IJ-mdk'@!l4Zĸ }Oeo͛֯[e_٢Af` ,ǁB0#„1BT!U'`8 VHVt[;uVA?cƁnVQ|%:4>oT; `~_||6~L@$ LQKcJcC8!|!d!( !HWa[X[P[v=-'I^2?pߏƏxH-@KsB,>r=Q::2t²u[G7-87*=sC{~۴aݚ+}?ys1q~S?15[8>,#!&Si9]`8&xKIPHD nEըh-P{AC}ޜk1yL{),wKXT<k'vkFG_j@성 N4/3JTH_o7~}ߙ!aoT^=V - sc%-&v5!Od\I!,dOԧ|HUU$X87-!&Y?ok$_.Y }!͙5?T %~L d G']wS`0L+.i2b_gKMI s A;P=}!͚K/`̏gn@yPIنujD=$pkNix:rWӯMz;kB}VE| k}ՃU v~:O @DxBǬF'$1pr z\UN2XQ\R%[6]=;"?CO@;BmI 3t{VC"l_˩efAB˓8عZȦ|P784H2%׀/ȀQܲFUnZ嘨=E!q_&?sob7Ch lGNc!)yjc_*'JtX0س7ek=̏/?&DD!g,%GK--Nl}:(&_on.H :n}I=$ɋh~侢BK3׏0#tF(I GCdBf|Ϲ桦:mFLk6\>T7,3$~O7m}3S"/F~X7C$'K!ﲝ#_3[S<7LL0# ԣ7 >Pi<xT$JCģ @[k8{퉪/߷>§/^?G{'?|m{h}e+>\_΀( ^ZMa=|ç_'>ym?^\M(~ؾR_8u !\IVS;1Yظ'vo"KKo^| MA>^Fӯul_Z[YJ|C 3;ن!"γ'fY|{'O'W++0%udnd!Å>ܝ۷W2|/ \0'.a*dvvnnn =]NS>?\;OPG aM e 1t}N&ύ׀7U'>>ǧOۛOk~cBZPJ Wkݮcr\F&'FX^h}Q_рFBQٚE*."{AT> >:?JMcr͋0oG􌎌йcyc>^W_nm`Zav&o^W}FA8T T*AfNvcχŏ7640Zʙ*Ʀ`8?ЮDo1|7c%|^~ů1FhMNb(K9T!B'L=\]sÏ95 6 ä81 P;==3NIwez>?^y9~,aa\ ݆U.ROux^fO6W8ty|Ю׮ʉ) k3;Q= tsxmNo\\VP@mrCW匡!JE8Rho?Tomߦ|[/6br-CwT$#i6eZoj8TC7y(uP#HI6}bX[ ًW _#C)1R#|E<^+<| np;^p;K= _|_ f MIENDB`#declare Cedar_Inc_Temp=version; /* Persistence of Vision Raytracer Version 3.1 Cedar wood color_map */ #declare M_Cedar = color_map { [0.0000 rgb <0.0941, 0.0627, 0.1569> ] [0.0039 rgb <0.1255, 0.0000, 0.0627> ] [0.0078 rgb <0.1569, 0.0627, 0.0941> ] [0.0118 rgb <0.1569, 0.0941, 0.1255> ] [0.0157 rgb <0.1569, 0.1569, 0.1882> ] [0.0196 rgb <0.2196, 0.0941, 0.0314> ] [0.0235 rgb <0.2196, 0.0941, 0.1569> ] [0.0275 rgb <0.2196, 0.1569, 0.1569> ] [0.0314 rgb <0.2196, 0.2510, 0.2196> ] [0.0353 rgb <0.2510, 0.0314, 0.0627> ] [0.0392 rgb <0.2510, 0.2196, 0.1569> ] [0.0431 rgb <0.2824, 0.0941, 0.0941> ] [0.0471 rgb <0.2824, 0.1569, 0.0314> ] [0.0510 rgb <0.2824, 0.1569, 0.1882> ] [0.0549 rgb <0.2824, 0.2510, 0.1882> ] [0.0588 rgb <0.3137, 0.0941, 0.0627> ] [0.0627 rgb <0.3137, 0.1569, 0.0314> ] [0.0667 rgb <0.3451, 0.1569, 0.1569> ] [0.0706 rgb <0.3451, 0.2196, 0.1569> ] [0.0745 rgb <0.3451, 0.2510, 0.1255> ] [0.0784 rgb <0.3451, 0.2824, 0.1569> ] [0.0824 rgb <0.3451, 0.3765, 0.2824> ] [0.0863 rgb <0.4078, 0.1255, 0.0941> ] [0.0902 rgb <0.4078, 0.2196, 0.1255> ] [0.0941 rgb <0.4078, 0.2510, 0.1255> ] [0.0980 rgb <0.4078, 0.2510, 0.1882> ] [0.1020 rgb <0.4078, 0.2510, 0.2196> ] [0.1059 rgb <0.4078, 0.2824, 0.1255> ] [0.1098 rgb <0.4078, 0.3137, 0.1569> ] [0.1137 rgb <0.4078, 0.3137, 0.2196> ] [0.1176 rgb <0.4078, 0.3137, 0.2824> ] [0.1216 rgb <0.4078, 0.4078, 0.2824> ] [0.1255 rgb <0.4392, 0.1882, 0.1255> ] [0.1294 rgb <0.4392, 0.2196, 0.1569> ] [0.1333 rgb <0.4392, 0.3765, 0.2510> ] [0.1373 rgb <0.4392, 0.4392, 0.3451> ] [0.1412 rgb <0.4706, 0.2196, 0.1569> ] [0.1451 rgb <0.4706, 0.2510, 0.1255> ] [0.1490 rgb <0.4706, 0.2510, 0.2196> ] [0.1529 rgb <0.4706, 0.3137, 0.1569> ] [0.1569 rgb <0.4706, 0.3137, 0.2196> ] [0.1608 rgb <0.4706, 0.3137, 0.2510> ] [0.1647 rgb <0.4706, 0.3137, 0.2824> ] [0.1686 rgb <0.5020, 0.2510, 0.1569> ] [0.1725 rgb <0.5020, 0.2510, 0.2196> ] [0.1765 rgb <0.5020, 0.3765, 0.2196> ] [0.1804 rgb <0.5020, 0.3765, 0.2824> ] [0.1843 rgb <0.5020, 0.4078, 0.2196> ] [0.1882 rgb <0.5020, 0.4078, 0.3137> ] [0.1922 rgb <0.5020, 0.4392, 0.2824> ] [0.1961 rgb <0.5020, 0.4706, 0.3451> ] [0.2000 rgb <0.5333, 0.2510, 0.1882> ] [0.2039 rgb <0.5333, 0.3137, 0.1882> ] [0.2078 rgb <0.5333, 0.3137, 0.2510> ] [0.2118 rgb <0.5333, 0.3137, 0.2824> ] [0.2157 rgb <0.5804, 0.2510, 0.2196> ] [0.2196 rgb <0.5804, 0.3137, 0.1882> ] [0.2235 rgb <0.5804, 0.3137, 0.2510> ] [0.2275 rgb <0.5804, 0.3451, 0.2824> ] [0.2314 rgb <0.5804, 0.3765, 0.1882> ] [0.2353 rgb <0.5804, 0.3765, 0.2510> ] [0.2392 rgb <0.5804, 0.3765, 0.3137> ] [0.2431 rgb <0.5804, 0.3765, 0.3451> ] [0.2471 rgb <0.5804, 0.4078, 0.2510> ] [0.2510 rgb <0.5804, 0.4078, 0.3137> ] [0.2549 rgb <0.5804, 0.4078, 0.3451> ] [0.2588 rgb <0.5804, 0.4392, 0.2196> ] [0.2627 rgb <0.5804, 0.4392, 0.2824> ] [0.2667 rgb <0.5804, 0.4392, 0.3451> ] [0.2706 rgb <0.5804, 0.4392, 0.3765> ] [0.2745 rgb <0.5804, 0.4706, 0.2824> ] [0.2784 rgb <0.5804, 0.4706, 0.3765> ] [0.2824 rgb <0.5804, 0.5020, 0.3451> ] [0.2863 rgb <0.5804, 0.5020, 0.4078> ] [0.2902 rgb <0.5804, 0.5804, 0.4078> ] [0.2941 rgb <0.6118, 0.3137, 0.2196> ] [0.2980 rgb <0.6118, 0.3137, 0.2824> ] [0.3020 rgb <0.6118, 0.3765, 0.2510> ] [0.3059 rgb <0.6118, 0.6118, 0.4706> ] [0.3098 rgb <0.6431, 0.3137, 0.2510> ] [0.3137 rgb <0.6431, 0.3765, 0.2510> ] [0.3176 rgb <0.6431, 0.3765, 0.3137> ] [0.3216 rgb <0.6431, 0.4078, 0.3451> ] [0.3255 rgb <0.6431, 0.4392, 0.2824> ] [0.3294 rgb <0.6431, 0.4392, 0.3451> ] [0.3333 rgb <0.6431, 0.4392, 0.3765> ] [0.3373 rgb <0.6431, 0.4706, 0.3765> ] [0.3412 rgb <0.6431, 0.5020, 0.3137> ] [0.3451 rgb <0.6431, 0.5020, 0.3765> ] [0.3490 rgb <0.6431, 0.5020, 0.4078> ] [0.3529 rgb <0.6431, 0.5020, 0.4392> ] [0.3569 rgb <0.6431, 0.5333, 0.3137> ] [0.3608 rgb <0.6431, 0.5333, 0.3765> ] [0.3647 rgb <0.6431, 0.5333, 0.4078> ] [0.3686 rgb <0.6431, 0.5333, 0.4392> ] [0.3725 rgb <0.6745, 0.3765, 0.2510> ] [0.3765 rgb <0.6745, 0.3765, 0.3451> ] [0.3804 rgb <0.6745, 0.4392, 0.2824> ] [0.3843 rgb <0.6745, 0.4392, 0.3451> ] [0.3882 rgb <0.6745, 0.4392, 0.3765> ] [0.3922 rgb <0.6745, 0.4706, 0.3765> ] [0.3961 rgb <0.6745, 0.4706, 0.4078> ] [0.4000 rgb <0.6745, 0.5804, 0.4078> ] [0.4039 rgb <0.6745, 0.6118, 0.4392> ] [0.4078 rgb <0.7059, 0.3765, 0.3137> ] [0.4118 rgb <0.7059, 0.4392, 0.3451> ] [0.4157 rgb <0.7059, 0.4706, 0.3137> ] [0.4196 rgb <0.7059, 0.4706, 0.3765> ] [0.4235 rgb <0.7059, 0.5020, 0.3451> ] [0.4275 rgb <0.7059, 0.5020, 0.4078> ] [0.4314 rgb <0.7059, 0.5020, 0.4392> ] [0.4353 rgb <0.7059, 0.5333, 0.3451> ] [0.4392 rgb <0.7059, 0.5333, 0.4392> ] [0.4431 rgb <0.7059, 0.5804, 0.3765> ] [0.4471 rgb <0.7059, 0.5804, 0.4392> ] [0.4510 rgb <0.7059, 0.6118, 0.4392> ] [0.4549 rgb <0.7059, 0.6431, 0.4706> ] [0.4588 rgb <0.7373, 0.4078, 0.3451> ] [0.4627 rgb <0.7373, 0.4706, 0.3765> ] [0.4667 rgb <0.7373, 0.5020, 0.3451> ] [0.4706 rgb <0.7373, 0.5020, 0.4078> ] [0.4745 rgb <0.7373, 0.5020, 0.4392> ] [0.4784 rgb <0.7373, 0.5020, 0.4706> ] [0.4824 rgb <0.7373, 0.5804, 0.3451> ] [0.4863 rgb <0.7373, 0.5804, 0.4078> ] [0.4902 rgb <0.7373, 0.5804, 0.4392> ] [0.4941 rgb <0.7373, 0.5804, 0.4706> ] [0.4980 rgb <0.7373, 0.5804, 0.5020> ] [0.5020 rgb <0.7373, 0.6118, 0.3765> ] [0.5059 rgb <0.7373, 0.6118, 0.4392> ] [0.5098 rgb <0.7373, 0.6118, 0.4706> ] [0.5137 rgb <0.7373, 0.6118, 0.5020> ] [0.5176 rgb <0.7373, 0.6118, 0.5333> ] [0.5216 rgb <0.7373, 0.6431, 0.4078> ] [0.5255 rgb <0.7373, 0.6431, 0.4706> ] [0.5294 rgb <0.7373, 0.6431, 0.5020> ] [0.5333 rgb <0.7373, 0.6431, 0.5333> ] [0.5373 rgb <0.7373, 0.6745, 0.4392> ] [0.5412 rgb <0.7373, 0.6745, 0.5020> ] [0.5451 rgb <0.7373, 0.6745, 0.5333> ] [0.5490 rgb <0.7373, 0.6745, 0.5804> ] [0.5529 rgb <0.7373, 0.7373, 0.5804> ] [0.5569 rgb <0.7686, 0.4706, 0.3765> ] [0.5608 rgb <0.7686, 0.5020, 0.3765> ] [0.5647 rgb <0.7686, 0.5020, 0.4392> ] [0.5686 rgb <0.7686, 0.5333, 0.4706> ] [0.5725 rgb <0.7686, 0.5804, 0.4392> ] [0.5765 rgb <0.8000, 0.5020, 0.3765> ] [0.5804 rgb <0.8000, 0.5020, 0.4392> ] [0.5843 rgb <0.8000, 0.5804, 0.4392> ] [0.5882 rgb <0.8000, 0.5804, 0.5020> ] [0.5922 rgb <0.8000, 0.6118, 0.4078> ] [0.5961 rgb <0.8000, 0.6118, 0.4706> ] [0.6000 rgb <0.8000, 0.6118, 0.5020> ] [0.6039 rgb <0.8000, 0.6431, 0.5020> ] [0.6078 rgb <0.8000, 0.6431, 0.5333> ] [0.6118 rgb <0.8000, 0.6745, 0.4392> ] [0.6157 rgb <0.8000, 0.6745, 0.5020> ] [0.6196 rgb <0.8000, 0.6745, 0.5333> ] [0.6235 rgb <0.8000, 0.6745, 0.5804> ] [0.6275 rgb <0.8000, 0.6745, 0.6118> ] [0.6314 rgb <0.8000, 0.7059, 0.4392> ] [0.6353 rgb <0.8000, 0.7059, 0.5020> ] [0.6392 rgb <0.8000, 0.7059, 0.5333> ] [0.6431 rgb <0.8000, 0.7059, 0.5804> ] [0.6471 rgb <0.8000, 0.7059, 0.6118> ] [0.6510 rgb <0.8000, 0.7373, 0.5020> ] [0.6549 rgb <0.8000, 0.7373, 0.6118> ] [0.6588 rgb <0.8314, 0.5020, 0.4392> ] [0.6627 rgb <0.8314, 0.5804, 0.4392> ] [0.6667 rgb <0.8314, 0.5804, 0.5020> ] [0.6706 rgb <0.8314, 0.6118, 0.4392> ] [0.6745 rgb <0.8314, 0.6431, 0.5020> ] [0.6784 rgb <0.8314, 0.6431, 0.5333> ] [0.6824 rgb <0.8314, 0.6745, 0.5333> ] [0.6863 rgb <0.8314, 0.7373, 0.4706> ] [0.6902 rgb <0.8314, 0.7373, 0.5333> ] [0.6941 rgb <0.8314, 0.7373, 0.6118> ] [0.6980 rgb <0.8314, 0.7373, 0.6431> ] [0.7020 rgb <0.8314, 0.7686, 0.5333> ] [0.7059 rgb <0.8314, 0.7686, 0.6118> ] [0.7098 rgb <0.8314, 0.7686, 0.6431> ] [0.7137 rgb <0.8314, 0.8000, 0.5333> ] [0.7176 rgb <0.8314, 0.8000, 0.6431> ] [0.7216 rgb <0.8314, 0.8314, 0.6431> ] [0.7255 rgb <0.8627, 0.5804, 0.4392> ] [0.7294 rgb <0.8627, 0.6118, 0.4706> ] [0.7333 rgb <0.8627, 0.6118, 0.5333> ] [0.7373 rgb <0.8627, 0.6745, 0.5020> ] [0.7412 rgb <0.8627, 0.6745, 0.5804> ] [0.7451 rgb <0.8627, 0.7059, 0.5020> ] [0.7490 rgb <0.8627, 0.7059, 0.5804> ] [0.7529 rgb <0.8627, 0.7059, 0.6118> ] [0.7569 rgb <0.8627, 0.7373, 0.5333> ] [0.7608 rgb <0.8627, 0.8627, 0.6745> ] [0.7647 rgb <0.8627, 0.9255, 0.7686> ] [0.7686 rgb <0.8941, 0.6118, 0.4706> ] [0.7725 rgb <0.8941, 0.6118, 0.5333> ] [0.7765 rgb <0.8941, 0.6745, 0.5020> ] [0.7804 rgb <0.8941, 0.6745, 0.5804> ] [0.7843 rgb <0.8941, 0.7059, 0.6118> ] [0.7882 rgb <0.8941, 0.7373, 0.5020> ] [0.7922 rgb <0.8941, 0.7373, 0.5804> ] [0.7961 rgb <0.8941, 0.7373, 0.6431> ] [0.8000 rgb <0.8941, 0.7686, 0.5333> ] [0.8039 rgb <0.8941, 0.7686, 0.6118> ] [0.8078 rgb <0.8941, 0.7686, 0.6431> ] [0.8118 rgb <0.8941, 0.8000, 0.6431> ] [0.8157 rgb <0.8941, 0.8314, 0.6118> ] [0.8196 rgb <0.8941, 0.8314, 0.6745> ] [0.8235 rgb <0.9255, 0.6745, 0.5020> ] [0.8275 rgb <0.9255, 0.6745, 0.5804> ] [0.8314 rgb <0.9255, 0.6745, 0.6118> ] [0.8353 rgb <0.9255, 0.7373, 0.5804> ] [0.8392 rgb <0.9255, 0.7373, 0.6431> ] [0.8431 rgb <0.9255, 0.7686, 0.5804> ] [0.8471 rgb <0.9255, 0.7686, 0.6431> ] [0.8510 rgb <0.9255, 0.8000, 0.6431> ] [0.8549 rgb <0.9255, 0.8000, 0.6745> ] [0.8588 rgb <0.9255, 0.8314, 0.6118> ] [0.8627 rgb <0.9255, 0.8314, 0.6745> ] [0.8667 rgb <0.9255, 0.8314, 0.7059> ] [0.8706 rgb <0.9255, 0.8314, 0.7373> ] [0.8745 rgb <0.9255, 0.8627, 0.6431> ] [0.8784 rgb <0.9255, 0.8627, 0.7059> ] [0.8824 rgb <0.9255, 0.8627, 0.7373> ] [0.8863 rgb <0.9255, 0.9255, 0.7686> ] [0.8902 rgb <0.9569, 0.7373, 0.6431> ] [0.8941 rgb <0.9569, 0.7686, 0.5804> ] [0.8980 rgb <0.9569, 0.7686, 0.6745> ] [0.9020 rgb <0.9569, 0.8000, 0.6745> ] [0.9059 rgb <0.9569, 0.8000, 0.7059> ] [0.9098 rgb <0.9569, 0.8941, 0.7059> ] [0.9137 rgb <0.9569, 0.9255, 0.8000> ] [0.9176 rgb <0.9882, 0.8314, 0.6745> ] [0.9216 rgb <0.9882, 0.8314, 0.7373> ] [0.9255 rgb <0.9882, 0.8627, 0.6745> ] [0.9294 rgb <0.9882, 0.8627, 0.7373> ] [0.9333 rgb <0.9882, 0.8941, 0.6745> ] [0.9373 rgb <0.9882, 0.8941, 0.7373> ] [0.9412 rgb <0.9882, 0.8941, 0.7686> ] [0.9451 rgb <0.9882, 0.8941, 0.8000> ] [0.9490 rgb <0.9882, 0.9255, 0.6745> ] [0.9529 rgb <0.9882, 0.9255, 0.7373> ] [0.9569 rgb <0.9882, 0.9255, 0.7686> ] [0.9608 rgb <0.9882, 0.9255, 0.8000> ] [0.9647 rgb <0.9882, 0.9255, 0.8314> ] [0.9686 rgb <0.9882, 0.9569, 0.7373> ] [0.9725 rgb <0.9882, 0.9569, 0.8000> ] [0.9765 rgb <0.9882, 0.9569, 0.8314> ] [0.9804 rgb <0.9882, 0.9569, 0.8627> ] [0.9843 rgb <0.9882, 0.9882, 0.7373> ] [0.9882 rgb <0.9882, 0.9882, 0.8000> ] [0.9922 rgb <0.9882, 0.9882, 0.8314> ] [0.9961 rgb <0.9882, 0.9882, 0.8627> ] } #version Cedar_Inc_Temp; // Persistence of Vision Ray Tracer version 3.5 Include File // File: chars.inc // Last updated: 2001.7.21 // Description: This file contains letters as objects. #ifndef(Chars_Inc_Temp) #declare Chars_Inc_Temp=version; #version 3.5; #ifdef(View_POV_Include_Stack) # debug "including chars.inc\n" #end /* Characters for POV-Ray Version 3.1 Original by Ken Maeno 1992-93 Revised and extended by Chris Young Revised for internal web removal by John Andersen This file includes 26 upper-case letter and other characters defined as objects. The size of all characters is 4 * 5 * 1. The center of the bottom side of a character face is set to the origin, so please translate a character appropriately before rotating it about the x or z axes. Usage: object{ char_A pigment{ color Red } } */ #declare char_A = intersection { box{<-2,0,-0.1>,<2,5,1.1>} union { box{<-0.5,-6,0>,<0.5,0,1> rotate z*16.699 } box{<-0.5,-6,0>,<0.5,0,1> rotate -z*16.699 } box{<-1, -4,0>,<1, -3,1> } translate y*5 } bounded_by{ box { <-2,0,0>,<2,5,1> } } } #declare char_P = union { difference{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5} plane{x,0} bounded_by{ box { <0,-1.5,0>, <1.5, 1.5, 1> } } translate<0.5, 3.5, 0> } box{ <-1.001, 4, 0>, <0.501, 5, 1> } box{ <-1.001, 2, 0>, <0.501, 3, 1> } box{ <-2, 0, 0>, <-1, 5, 1 > } } #declare char_B = union { object{char_P} difference{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5} plane{x,0} bounded_by{ box { <0,-1.5,0>, <1.5, 1.5, 1> } } translate<0.5, 1.5, 0> } box{ <-1.001, 0, 0>, <0.501, 1, 1> } } #declare char_C = union { difference{ cylinder{0*z,z,2} cylinder{-z,2*z,1} plane{y,0} bounded_by{ box { <-2,0,0>, <2,2,1> } } translate 3*y } difference{ cylinder{0*z,z,2} cylinder{-z,2*z,1} plane{-y,0} bounded_by{ box { <-2,-2,0>, <2,0,1> } } translate 2*y } box{ <-2,1.999,0>,<-1,3.001,1> } } #declare char_D = union { difference{ cylinder{0*z,z,2.5} cylinder{-z,2*z,1.5} plane{x,0} bounded_by{ box { <0,-2.5,0>, <2.5,2.5,1> } } translate <-0.5,2.5,0> } box{ <-1.001,4,0>,<-0.499,5,1> } box{ <-1.001,0,0>,<-0.499,1,1> } box{ <-2,0,0>,<-1,5,1> } } #declare char_F = union { box{ <-2,0,0>,<-1,5,1> } box{ <-1.001,2,0>,<1.5,3,1> } box{ <-1.001,4,0>,<2,5,1> } } #declare char_E = union { object{char_F} box{ <-1.001,0,0>,<2,1,1> } } #declare char_G = union { object{char_C} box{ < 0,1.5,0>,<2,2.3,1> } } #declare char_H = union { box{ <-2,0,0>,<-1,5,1> } box{ < 1,0,0>,< 2,5,1> } box{ <-1.001,2,0>,< 1.001,3,1> } } #declare char_I = box{ <-0.5,0,0>,<0.5,5,1> } #declare char_J = union { difference{ cylinder{0*z,z,2} cylinder{-z,2*z,1} plane{-y,0} bounded_by{ box { <-2,-2,0>, <2,0,1> } } translate 2*y } box{ <1,1.999,0>,<2,5,1> } } #declare char_K = union { intersection { union { box{ <0,-2,0>,<0.9,5,1> rotate z*45 translate x*0.7272 } box{ <0,-5,0>,<0.9,2,1> rotate -z*45 translate <0.7272,5,0> } } box { <-1,0,-0.1>,<2,5,1.1> } bounded_by{ box { <-2,0,0>,<2,5,1> } } } box { <-2,0,0>,<-1,5,1> } } #declare char_L = union { box{ <-2,1,0>,<-1,5,1> } box{ <-2.001,0,0>,<2,1,1> } } #declare char_M = union { intersection{ union { box{<-0.5,-1,0>,<0.5,5,1> rotate z*26.5651} box{<-0.5,-1,0>,<0.5,5,1> rotate -z*26.5651} } box{<-1,0,-0.1>,<1,3,1.1>} bounded_by{box{<-2,0,0>,<2,4,1>}} translate y*2 } box{ <-2,0,0>,<-1,5,1> } box{ < 1,0,0>,< 2,5,1> } } #declare char_N = union { intersection{ box{ <0,0,0>,<1,6,1> rotate z*32.5031 translate x} box{ <-1,0,-0.1>,<1,5,1.1> } bounded_by{box{ <-1,0,0>,<1,5,1> } } } box{ <-2,0,0>,<-1,5,1> } box{ <1,0,0>,<2,5,1> } } #declare char_O = union { object {char_C} box{ <1,1.999,0>,<2,3.001,1> } } #declare char_Q = union { object {char_O} box{ <0,0,0>,<1,2.2,1> rotate z*45 translate x*1.29289} } #declare char_R = union { object {char_P} intersection { box{ <0,-2,0>,<1,5,1> rotate z*36.8699 translate x} box{ <-1,0,-0.1>,<2,2,1.1> } bounded_by{box{ <-1,0,0>,<2,2,1> }} } } #declare char_S = union { intersection{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5 inverse} box{<0,0,-0.1>,<1.5,1.5,1.1>} bounded_by{ box { <0,0,0>, <1.5, 1.5, 1> } } translate <0.5,3.5,0> } difference{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5} plane{x,0} bounded_by{ box { <0,-1.5,0>, <1.5, 1.5, 1> } } translate<0.5, 1.5, 0> } intersection{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5 inverse} box{<-1.5,-1.5,-0.1>,<0,0,1.1>} bounded_by{ box { <-1.5,-1.5,0>, <0, 0, 1> } } translate <-0.5,1.5,0> } difference{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5} plane{-x,0} bounded_by{ box { <-1.5,-1.5,0>, <0, 1.5, 1> } } translate<-0.5, 3.5, 0> } box{ <-0.502,4,0>,<0.502,5,1> } box{ <-0.502,2,0>,<0.502,3,1> } box{ <-0.502,0,0>,<0.502,1,1> } } #declare char_T = union{ box{ <-0.5,0,0>,<0.5,4,1> } box{ <-2, 4,0>,< 2,5,1> } } #declare char_U = union { object{char_J} box{ <-2,1.998,0>,<-1,5,1> } } #declare char_V = intersection { box{<-2,0,-0.1>,<2,5,1.1>} union { box{<-0.5,-1,0>,<0.5,6,1> rotate z*16.699 } box{<-0.5,-1,0>,<0.5,6,1> rotate -z*16.699 } } bounded_by{ box { <-2,0,0>,<2,5,1> } } } #declare char_W = union { intersection{ union { box{<-0.5,-5,0>,<0.5,0,1> rotate z*26.5651} box{<-0.5,-5,0>,<0.5,0,1> rotate -z*26.5651} translate 3*y } box{<-1,0,-0.1>,<1,3,1.1>} bounded_by{box{<-1,0,0>,<2,3,1>}} } box{ <-2,0,0>,<-1,5,1> } box{ < 1,0,0>,< 2,5,1> } } #declare char_X = intersection { box{<-2,0,-0.1>,<2,5,1.1>} union { box{<-0.5,-3.5,0>,<0.5,3.5,1> rotate z*30.9} box{<-0.5,-3.5,0>,<0.5,3.5,1> rotate -z*30.9} translate 2.5*y } bounded_by{ box { <-2,0,0>,<2,5,1> } } } #declare char_Y = union { intersection { box{<-2,2,-0.1>,<2,5,1.1>} union { box{<-0.5,0,0>,<0.5,3.5,1> rotate z*30.9} box{<-0.5,0,0>,<0.5,3.5,1> rotate -z*30.9} translate 2.5*y } bounded_by{ box { <-2,2,0>,<2,5,1> } } } box {<-0.5,0,0>,<0.5,3,1>} } #declare char_Z = union { intersection{ box{ <0,0,0>,<1,7,1> rotate z*-29.6749 translate -2*x} box{<-2,0,-0.1>,<2,5,1.1>} bounded_by{ box { <-2,0,0>,<2,5,1> } } } box{ <-2,4,0>,<1.2,5,1> } box{ <-1.2,0,0>,<2,1,1> } } #declare char_Dash = box{ <-2,2,0>,<2,3,1> } #declare char_Plus = union{ box{ <-2,2,0>,<2,3,1> } box{ <-0.5,0.5,0>,<0.5,4.5,1> } } #declare char_0 = object{char_O} #declare char_1 = union{ object{char_I} box{ <0,-1.25,0>,<1,0,1> rotate -z*45 translate <-0.5,5,0>} box{ <-1,0,0>,<1,1,1> } } #declare char_2 = union{ intersection{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5 inverse} box{<-1.5,0,-0.1>,<0,1.5,1.1>} bounded_by{ box { <-1.5,0,0>, <0, 1.5, 1> } } translate<-0.5, 3.5, 0> } intersection{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5 inverse} plane{-x,0 } plane{-y,0 rotate -z*54 } bounded_by{ box { <0,-1.5,0>, <1.5, 1.5, 1> } } translate <0.5,3.5,0> } box{<-0.501,4,0>,<0.501,5,1>} box{<-2,0,0>,<2,1,1>} box{<-0.999,0.5,0>,<3.5,1.5,1> rotate -z*(90+54) translate <0.5,3.5,0>} } #declare char_3 = union { intersection{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5 inverse} box{<-1.5,0,-0.1>,<0,1.5,1.1>} bounded_by{ box { <-1.5,0,0>, <0, 1.5, 1> } } translate<-0.5, 3.5, 0> } difference{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5} plane{x,0} bounded_by{ box { <0,-1.5,0>, <1.5, 1.5, 1> } } translate<0.5, 3.5, 0> } difference{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5} plane{x,0} bounded_by{ box { <0,-1.5,0>, <1.5, 1.5, 1> } } translate<0.5, 1.5, 0> } intersection{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5 inverse} box{<-1.5,-1.5,-0.1>,<0,0,1.1>} bounded_by{ box { <-1.5,-1.5,0>, <0, 0, 1> } } translate <-0.5,1.5,0> } box{ <-0.501,4,0>,<0.501,5,1> } box{ <-0.5,2,0>,<0.501,3,1> } box{ <-0.501,0,0>,<0.501,1,1> } } #declare char_4 = union { box {<0,0,0>,<1,5,1>} box {<-2,1,0>,<2,2,1>} box {<0,-1,0>,<3.6,0,1> rotate z*56.31 translate <-2,2,0>} } #declare char_5 = union { difference{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5} plane{x,0} bounded_by{ box { <0,-1.5,0>, <1.5, 1.5, 1> } } translate<0.5, 1.5, 0> } intersection{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5 inverse} box{<-1.5,-1.5,-0.1>,<0,0,1.1>} bounded_by{ box { <-1.5,-1.5,0>, <0, 0, 1> } } translate <-0.5,1.5,0> } box{ <-1.001,4,0>,<2,5,1> } box{ <-2,2,0>,<-1,5,1> } box{ <-1.001,2,0>,<0.501,3,1> } box{ <-0.501,0,0>,<0.501,1,1> } } #declare char_6 = union { intersection{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5 inverse} box{<0,0,-0.1>,<1.5,1.5,1.1>} bounded_by{ box { <0,0,0>, <1.5, 1.5, 1> } } translate <0.5,3.5,0> } intersection{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5 inverse} box{<-1.5,0,-0.1>,<0,1.5,1.1>} bounded_by{ box { <-1.5,0,0>, <0,1.5,1> } } translate<-0.5, 3.5, 0> } difference{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5} plane{x,0} bounded_by{ box { <0,-1.5,0>, <1.5, 1.5, 1> } } translate<0.5, 1.5, 0> } difference{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5} plane{-x,0} bounded_by{ box { <-1.5,-1.5,0>, <0, 1.5, 1> } } translate <-0.5,1.5,0> } box{ <-0.501,4,0>,<0.501,5,1> } box{ <-2,1.5,0>,<-1,3.501,1> } box{ <-0.501,2,0>,<0.501,3,1> } box{ <-0.501,0,0>,<0.501,1,1> } } #declare char_7 = union{ box{ <-2, 4,0>,< 2,5,1> } intersection { box{ <-1,-1,0>,<0,4.272,1> rotate -z*20.556 translate x/2} box{<-0.5,0,-0.1>,<2,4.5,1.1>} bounded_by{box{<-0.5,0,-0>,<2,4.5,1>}} } } #declare char_8 = union { difference{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5} plane{-x,0} bounded_by{ box { <-1.5,-1.5,0>, <0, 1.5, 1> } } translate<-0.5, 3.5, 0> } difference{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5} plane{x,0} bounded_by{ box { <0,-1.5,0>, <1.5, 1.5, 1> } } translate<0.5, 3.5, 0> } difference{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5} plane{x,0} bounded_by{ box { <0,-1.5,0>, <1.5, 1.5, 1> } } translate<0.5, 1.5, 0> } difference{ cylinder{0*z,z,1.5} cylinder{-z,2*z,0.5} plane{-x,0} bounded_by{ box { <-1.5,-1.5,0>, <0, 1.5, 1> } } translate <-0.5,1.5,0> } box{ <-0.501,4,0>,<0.501,5,1> } box{ <-0.501,2,0>,<0.501,3,1> } box{ <-0.501,0,0>,<0.501,1,1> } } #declare char_9 = object{char_6 translate -2.5*y rotate z*180 translate 2.5*y} #declare char_ExclPt= union { cylinder {<0,4.5,0>,<0,4.5,1>,0.5} cylinder {<0,0.5,0>,<0,0.5,1>,0.5} intersection { box{<-0.5,-3,0>,<0.5,0,1> rotate z*9.5} box{<-0.5,-3,-0.1>,<0.5,0,1.1> rotate -z*9.5 } bounded_by{box{<-0.5,-3,0>,<0.5,0,1> }} translate y*4.5 } } #declare char_AtSign = union { difference{ cylinder{0*z,z,2} cylinder{-z,2*z,1.5} box { <0,-1.25,-0.1>, <2.5,0,1.1> } bounded_by{ box { <-2,-2,0>, <2,2,1> } } translate 2.5*y } difference{ cylinder{0*z,z,0.75} cylinder{-z,2*z,0.25} plane{-y,0} bounded_by{ box { <-2,-2,0>, <2,0,1> } } translate <1.25,2.5,0> } difference{ cylinder{0*z,z,1} cylinder{-z,2*z,0.5} bounded_by{ box { <-1,-1,0>, <1,1,1> } } translate 2.5*y } } #declare char_Num = union { box{ <-0.5,-2,0>,<0.5,2,1> rotate -10*z translate <-1,2.5,0>} box{ <-0.5,-2,0>,<0.5,2,1> rotate -10*z translate < 1,2.5,0>} box{ <-1.5,3,0>,< 2,4,1> } box{ <-2,1,0>,< 1.5,2,1> } } #declare char_Dol = union { difference{ cylinder{0*z,z,1.25} cylinder{-z,2*z,0.25} plane{x,0} bounded_by{ box { <0,-1.25,0>, <1.25, 1.25, 1> } } translate<0.75, 1.75, 0> } difference{ cylinder{0*z,z,1.25} cylinder{-z,2*z,0.25} plane{-x,0} bounded_by{ box { <-1.25,-1.25,0>, <0, 1.25, 1> } } translate<-0.75, 3.25, 0> } box{ <-0.751,3.5,0>,<2,4.5,1> } box{ <-0.751,2,0>,<0.751,3,1> } box{ <-2,0.5,0>,<0.751,1.5,1> } box{ <-0.5,0,0>,<0.5,5,1> } } #declare char_Perc = union { difference{ cylinder{0*z,z,1} cylinder{-z,2*z,0.25} bounded_by{ box { <-1,-1,0>, <1, 1, 1> } } translate<1, 1, 0> } difference{ cylinder{0*z,z,1} cylinder{-z,2*z,0.25} bounded_by{ box { <-1,-1,0>, <1, 1, 1> } } translate<-1, 4, 0> } box{ <-0.25,-2.8,0>,<0.25,2.8,1> rotate -33*z translate 2.5*y} } #declare char_Hat = intersection { union { box{ <0,0,0>,<1,3,1> rotate -33*z translate <-2,1.5,0>} box{ <-1,0,0>,<0,3,1> rotate 33*z translate < 2,1.5,0>} } box {<-2.1,1.5,-0.1>,<2.1,3.75,1.1>} bounded_by{box {<-2.1,1.5,0>,<2.1,3.75,1>}} } #declare char_Amps = union { difference{ cylinder{0*z,z,1.25} cylinder{-z,2*z,0.5} bounded_by{ box { <-1.25,-1.25,0>, <1.25, 1.25, 1> } } translate <-0.25,3.75,0> } difference{ cylinder{0*z,z,1.75} cylinder{-z,2*z,0.75} bounded_by{ box { <-1.75,-1.75,0>, <1.75, 1.75, 1> } } translate <-0.25,1.75,0> } difference{ cylinder{0*z,z,1.25} cylinder{-z,2*z,0.5} plane{-x,0} bounded_by{ box { <-1.25,-1.25,0>, <0, 1.25, 1> } } translate <2,1.75,0> } } #declare char_Astr = union { box{ <-0.5,-2,0>,<0.5,2,1> } box{ <-0.5,-2,0>,<0.5,2,1> rotate 60*z} box{ <-0.5,-2,0>,<0.5,2,1> rotate -60*z} translate 2.5*y } #declare char_LPar = intersection{ cylinder{<7,2.5,0>,<7,2.5,1>, 7.5} cylinder{<7,2.5,-0.1>,<7,2.5,1.1>, 6.5 inverse} box{<-2,0,-0.1>,<2,5,1.1>} bounded_by{box{<-1,0,0>,<1,5,1>}} } #declare char_RPar = intersection{ cylinder{<-7,2.5,0>,<-7,2.5,1>, 7.5} cylinder{<-7,2.5,-0.1>,<-7,2.5,1.1>, 6.5 inverse} box{<-2,0,-0.1>,<2,5,1.1>} bounded_by{box{<-1,0,0>,<1,5,1>}} } #declare char_LSqu = union { box{<-1,0,0>,<0,5,1>} box{<-0.001,0,0>,<1,1,1>} box{<-0.001,4,0>,<1,5,1>} } #declare char_RSqu = union { box{<0,0,0>,<1,5,1>} box{<-1,0,0>,<0.001,1,1>} box{<-1,4,0>,<0.001,5,1>} } // End of CHARS.INC #version Chars_Inc_Temp; #end // Persistence of Vision Ray Tracer version 3.5 Include File // File: colors.inc // Last updated: 2001.7.21 // Description: This file contains pre-defined colors and color-manipulation macros. #ifndef(Colors_Inc_Temp) #declare Colors_Inc_Temp = version; #version 3.5; #ifdef(View_POV_Include_Stack) #debug "including colors.inc\n" #end /* Persistence of Vision Raytracer Version 3.5 Many pre-defined colors for use in scene files. */ // COLORS: #declare Red = rgb <1, 0, 0>; #declare Green = rgb <0, 1, 0>; #declare Blue = rgb <0, 0, 1>; #declare Yellow = rgb <1,1,0>; #declare Cyan = rgb <0, 1, 1>; #declare Magenta = rgb <1, 0, 1>; #declare Clear = rgbf 1; #declare White = rgb 1; #declare Black = rgb 0; // These grays are useful for fine-tuning lighting color values // and for other areas where subtle variations of grays are needed. // PERCENTAGE GRAYS: #declare Gray05 = White*0.05; #declare Gray10 = White*0.10; #declare Gray15 = White*0.15; #declare Gray20 = White*0.20; #declare Gray25 = White*0.25; #declare Gray30 = White*0.30; #declare Gray35 = White*0.35; #declare Gray40 = White*0.40; #declare Gray45 = White*0.45; #declare Gray50 = White*0.50; #declare Gray55 = White*0.55; #declare Gray60 = White*0.60; #declare Gray65 = White*0.65; #declare Gray70 = White*0.70; #declare Gray75 = White*0.75; #declare Gray80 = White*0.80; #declare Gray85 = White*0.85; #declare Gray90 = White*0.90; #declare Gray95 = White*0.95; // OTHER GRAYS #declare DimGray = color red 0.329412 green 0.329412 blue 0.329412; #declare DimGrey = color red 0.329412 green 0.329412 blue 0.329412; #declare Gray = color red 0.752941 green 0.752941 blue 0.752941; #declare Grey = color red 0.752941 green 0.752941 blue 0.752941; #declare LightGray = color red 0.658824 green 0.658824 blue 0.658824; #declare LightGrey = color red 0.658824 green 0.658824 blue 0.658824; #declare VLightGray = color red 0.80 green 0.80 blue 0.80; #declare VLightGrey = color red 0.80 green 0.80 blue 0.80; #declare Aquamarine = color red 0.439216 green 0.858824 blue 0.576471; #declare BlueViolet = color red 0.62352 green 0.372549 blue 0.623529; #declare Brown = color red 0.647059 green 0.164706 blue 0.164706; #declare CadetBlue = color red 0.372549 green 0.623529 blue 0.623529; #declare Coral = color red 1.0 green 0.498039 blue 0.0; #declare CornflowerBlue = color red 0.258824 green 0.258824 blue 0.435294; #declare DarkGreen = color red 0.184314 green 0.309804 blue 0.184314; #declare DarkOliveGreen = color red 0.309804 green 0.309804 blue 0.184314; #declare DarkOrchid = color red 0.6 green 0.196078 blue 0.8; #declare DarkSlateBlue = color red 0.119608 green 0.137255 blue 0.556863; #declare DarkSlateGray = color red 0.184314 green 0.309804 blue 0.309804; #declare DarkSlateGrey = color red 0.184314 green 0.309804 blue 0.309804; #declare DarkTurquoise = color red 0.439216 green 0.576471 blue 0.858824; #declare Firebrick = color red 0.556863 green 0.137255 blue 0.137255; #declare ForestGreen = color red 0.137255 green 0.556863 blue 0.137255; #declare Gold = color red 0.8 green 0.498039 blue 0.196078; #declare Goldenrod = color red 0.858824 green 0.858824 blue 0.439216; #declare GreenYellow = color red 0.576471 green 0.858824 blue 0.439216; #declare IndianRed = color red 0.309804 green 0.184314 blue 0.184314; #declare Khaki = color red 0.623529 green 0.623529 blue 0.372549; #declare LightBlue = color red 0.74902 green 0.847059 blue 0.847059; #declare LightSteelBlue = color red 0.560784 green 0.560784 blue 0.737255; #declare LimeGreen = color red 0.196078 green 0.8 blue 0.196078; #declare Maroon = color red 0.556863 green 0.137255 blue 0.419608; #declare MediumAquamarine = color red 0.196078 green 0.8 blue 0.6; #declare MediumBlue = color red 0.196078 green 0.196078 blue 0.8; #declare MediumForestGreen = color red 0.419608 green 0.556863 blue 0.137255; #declare MediumGoldenrod = color red 0.917647 green 0.917647 blue 0.678431; #declare MediumOrchid = color red 0.576471 green 0.439216 blue 0.858824; #declare MediumSeaGreen = color red 0.258824 green 0.435294 blue 0.258824; #declare MediumSlateBlue = color red 0.498039 blue 1.0; #declare MediumSpringGreen = color red 0.498039 green 1.0; #declare MediumTurquoise = color red 0.439216 green 0.858824 blue 0.858824; #declare MediumVioletRed = color red 0.858824 green 0.439216 blue 0.576471; #declare MidnightBlue = color red 0.184314 green 0.184314 blue 0.309804; #declare Navy = color red 0.137255 green 0.137255 blue 0.556863; #declare NavyBlue = color red 0.137255 green 0.137255 blue 0.556863; #declare Orange = color red 1 green 0.5 blue 0.0; #declare OrangeRed = color red 1.0 green 0.25; #declare Orchid = color red 0.858824 green 0.439216 blue 0.858824; #declare PaleGreen = color red 0.560784 green 0.737255 blue 0.560784; #declare Pink = color red 0.737255 green 0.560784 blue 0.560784; #declare Plum = color red 0.917647 green 0.678431 blue 0.917647; #declare Salmon = color red 0.435294 green 0.258824 blue 0.258824; #declare SeaGreen = color red 0.137255 green 0.556863 blue 0.419608; #declare Sienna = color red 0.556863 green 0.419608 blue 0.137255; #declare SkyBlue = color red 0.196078 green 0.6 blue 0.8; #declare SlateBlue = color green 0.498039 blue 1.0; #declare SpringGreen = color green 1.0 blue 0.498039; #declare SteelBlue = color red 0.137255 green 0.419608 blue 0.556863; #declare Tan = color red 0.858824 green 0.576471 blue 0.439216; #declare Thistle = color red 0.847059 green 0.74902 blue 0.847059; #declare Turquoise = color red 0.678431 green 0.917647 blue 0.917647; #declare Violet = color red 0.309804 green 0.184314 blue 0.309804; #declare VioletRed = color red 0.8 green 0.196078 blue 0.6; #declare Wheat = color red 0.847059 green 0.847059 blue 0.74902; #declare YellowGreen = color red 0.6 green 0.8 blue 0.196078; #declare SummerSky = color red 0.22 green 0.69 blue 0.87; #declare RichBlue = color red 0.35 green 0.35 blue 0.67; #declare Brass = color red 0.71 green 0.65 blue 0.26; #declare Copper = color red 0.72 green 0.45 blue 0.20; #declare Bronze = color red 0.55 green 0.47 blue 0.14; #declare Bronze2 = color red 0.65 green 0.49 blue 0.24; #declare Silver = color red 0.90 green 0.91 blue 0.98; #declare BrightGold = color red 0.85 green 0.85 blue 0.10; #declare OldGold = color red 0.81 green 0.71 blue 0.23; #declare Feldspar = color red 0.82 green 0.57 blue 0.46; #declare Quartz = color red 0.85 green 0.85 blue 0.95; #declare Mica = color Black; // needed in textures.inc #declare NeonPink = color red 1.00 green 0.43 blue 0.78; #declare DarkPurple = color red 0.53 green 0.12 blue 0.47; #declare NeonBlue = color red 0.30 green 0.30 blue 1.00; #declare CoolCopper = color red 0.85 green 0.53 blue 0.10; #declare MandarinOrange = color red 0.89 green 0.47 blue 0.20; #declare LightWood = color red 0.91 green 0.76 blue 0.65; #declare MediumWood = color red 0.65 green 0.50 blue 0.39; #declare DarkWood = color red 0.52 green 0.37 blue 0.26; #declare SpicyPink = color red 1.00 green 0.11 blue 0.68; #declare SemiSweetChoc = color red 0.42 green 0.26 blue 0.15; #declare BakersChoc = color red 0.36 green 0.20 blue 0.09; #declare Flesh = color red 0.96 green 0.80 blue 0.69; #declare NewTan = color red 0.92 green 0.78 blue 0.62; #declare NewMidnightBlue = color red 0.00 green 0.00 blue 0.61; #declare VeryDarkBrown = color red 0.35 green 0.16 blue 0.14; #declare DarkBrown = color red 0.36 green 0.25 blue 0.20; #declare DarkTan = color red 0.59 green 0.41 blue 0.31; #declare GreenCopper = color red 0.32 green 0.49 blue 0.46; #declare DkGreenCopper = color red 0.29 green 0.46 blue 0.43; #declare DustyRose = color red 0.52 green 0.39 blue 0.39; #declare HuntersGreen = color red 0.13 green 0.37 blue 0.31; #declare Scarlet = color red 0.55 green 0.09 blue 0.09; #declare Med_Purple = color red 0.73 green 0.16 blue 0.96; #declare Light_Purple = color red 0.87 green 0.58 blue 0.98; #declare Very_Light_Purple = color red 0.94 green 0.81 blue 0.99; // Color manipulation macros // Takes Hue value as input, returns RGB vector. #macro CH2RGB (H) #local H = mod(H, 360); #local H = (H < 0 ? H+360 : H); #switch (H) #range (0, 120) #local R = (120- H) / 60; #local G = ( H- 0) / 60; #local B = 0; #break #range (120, 240) #local R = 0; #local G = (240- H) / 60; #local B = ( H-120) / 60; #break #range (240, 360) #local R = ( H-240) / 60; #local G = 0; #local B = (360- H) / 60; #break #end #end // Takes RGB vector, Max component, and Span as input, // returns Hue value. #macro CRGB2H (RGB, Max, Span) #local H = 0; #local R = RGB.red; #local G = RGB.green; #local B = RGB.blue; #if (Span>0) #local H = ( + (R = Max & G != Max ? 0 + (G - B)/Span : 0) + (G = Max & B != Max ? 2 + (B - R)/Span : 0) + (B = Max & R != Max ? 4 + (R - G)/Span : 0) )*60; #end H #end // Converts a color in HSL color space to a color in RGB color space. // Input: < Hue, Saturation, Lightness, Filter, Transmit > // Output: < Red, Green, Blue, Filter, Transmit > #macro CHSL2RGB(Color) #local HSLFT = color Color; #local H = (HSLFT.red); #local S = (HSLFT.green); #local L = (HSLFT.blue); #local SatRGB = CH2RGB(H); #local Col = 2*S*SatRGB + (1-S)*<1,1,1>; #if (L<0.5) #local RGB = L*Col; #else #local RGB = (1-L)*Col + (2*L-1)*<1,1,1>; #end #end // Converts a color in RGB color space to a color in HSL color space. // Input: < Red, Green, Blue, Filter, Transmit > // Output: < Hue, Saturation, Lightness, Filter, Transmit > #macro CRGB2HSL(Color) #local RGBFT = color Color; #local R = (RGBFT.red); #local G = (RGBFT.green); #local B = (RGBFT.blue); #local Min = min(R,min(G,B)); #local Max = max(R,max(G,B)); #local Span = Max-Min; #local L = (Min+Max)/2; #local S = 0; #if( L!=0 & L!=1 ) #local S = Span / ( L<0.5 ? (L*2) : (2-L*2) ); #end #local H = CRGB2H (, Max, Span); #end // Converts a color in HSV color space to a color in RGB color space. // Input: < Hue, Saturation, Value, Filter, Transmit > // Output: < Red, Green, Blue, Filter, Transmit > #macro CHSV2RGB(Color) #local HSVFT = color Color; #local H = (HSVFT.red); #local S = (HSVFT.green); #local V = (HSVFT.blue); #local SatRGB = CH2RGB(H); #local RGB = ( ((1-S)*<1,1,1> + S*SatRGB) * V ); #end // Converts a color in RGB color space to a color in HSV color space. // Input: < Red, Green, Blue, Filter, Transmit > // Output: < Hue, Saturation, Value, Filter, Transmit > #macro CRGB2HSV(Color) #local RGBFT = color Color; #local R = (RGBFT.red); #local G = (RGBFT.green); #local B = (RGBFT.blue); #local Min = min(R,min(G,B)); #local Max = max(R,max(G,B)); #local Span = Max-Min; #local H = CRGB2H (, Max, Span); #local S = 0; #if (Max!=0) #local S = Span/Max; #end #end #version Colors_Inc_Temp; #end // Persistence of Vision Ray Tracer version 3.5 Include File // File: consts.inc // Last updated: 2001.8.12 // Description: Various constants and alias definitions. #ifndef(Consts_Inc_Temp) #declare Consts_Inc_Temp = version; #version 3.5; #ifdef(View_POV_Include_Stack) #debug "including consts.inc\n" #end #declare e = exp(1);//2.71828182845904523536028747135266249775724709369996; #declare o = < 0, 0, 0>; #declare xy = < 1, 1, 0>; #declare yz = < 0, 1, 1>; #declare xz = < 1, 0, 1>; // MAP_TYPE CONSTANTS #declare Plane_Map = 0; #declare Sphere_Map = 1; #declare Cylinder_Map = 2; #declare Torus_Map = 5; // INTERPOLATION TYPE CONSTANTS #declare Bi = 2; #declare Norm = 4; // FOG TYPE CONSTANTS #declare Uniform_Fog = 1; #declare Ground_Fog = 2; // FOCAL BLUR HEXGRID CONSTANTS #declare Hex_Blur1 = 7; #declare Hex_Blur2 = 19; #declare Hex_Blur3 = 37; // Dispersion amount constants //Glass: 1.01 - 1.05 #declare Quartz_Glass_Dispersion = 1.012; #declare Water_Dispersion = 1.007; #declare Diamond_Dispersion = 1.035; #declare Sapphire_Dispersion = 1.015; // INDEX OF REFRACTION CONSTANTS // Defines a few Index of Refractions for various materials for sodium light. // Source: College Physics by Arthur L. Kimball, PhD. 4th Edition (1923) // --------------------------- #declare Flint_Glass_Ior = 1.71; #declare Crown_Glass_Ior = 1.51; #declare Diamond_Ior = 2.47; #declare Water_Ior = 1.33; #declare Air_Ior = 1.000292; #declare Ice_Ior = 1.31; #declare Fluorite_Ior = 1.434; #declare Plexiglas_Ior = 1.5; #declare Gypsum_Ior =1.525; #declare Salt_Ior = 1.544; #declare Quartz_Ior = 1.550; #declare Citrine_Ior = 1.550; #declare Amethyst_Ior = 1.550; #declare Beryl_Ior = 1.575; #declare Aquamarine_Ior = 1.575; #declare Emerald_Ior = 1.575; #declare Topaz_Ior = 1.620; #declare Apatite_Ior = 1.635; #declare Tourmaline_Ior = 1.650; #declare Corundum_Ior = 1.765; #declare Ruby_Ior = 1.765; #declare Sapphire_Ior = 1.765; #declare Quartz_Glass_Ior = 1.458; #declare Flint_Glass_Heavy_Ior = 1.8; #declare Flint_Glass_Medium_Ior = 1.63; #declare Flint_Glass_Light_Ior = 1.6; // POV-Ray 3.1 NOTE: These are included for backwards compatibility only. // Use the camera "angle" parameter for version 3.0 and above. // // Direction Vectors for various Field of View angles. // The formula used to calculate these is: FoV = 0.5 / tan(angle/2) // Based on the height, (the UP vector), not width or diagonal. // Useage: direction <0, 0, FoV_45> // (You will also need to adjust the location vector if you change FoV and // want to keep the same visual distance from your scene.) #declare FoV_15 = 7.595981; #declare FoV_30 = 3.732166; #declare FoV_45 = 2.414293; #declare FoV_60 = 1.732113; #declare FoV_75 = 1.303277; #declare FoV_90 = 1.000046; #declare FoV_105 = 0.767370; #declare FoV_120 = 0.577391; #declare FoV_135 = 0.414254; #declare FoV_150 = 0.267991; #declare FoV_165 = 0.131696; // ATMOSPHERE TYPES #declare ISOTROPIC_SCATTERING = 1; #declare MIE_HAZY_SCATTERING = 2; #declare MIE_MURKY_SCATTERING = 3; #declare RAYLEIGH_SCATTERING = 4; #declare HENYEY_GREENSTEIN_SCATTERING = 5; #version Consts_Inc_Temp; #end `OS/2s7? NPCLT 6cmapתwcvt $hmtx`?=@locamaxp8> name0ded3post / I|prepjDe8X"  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a~   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a#18fH\f;% {ywusomf!omjZNLJHD=75'?%}ywujhd!@ ,C b#BfV-,*CTx+X9Y+X?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a     $  8' _ mCopyright 1995 by Red Mountain Corporation. Design by Jerry Fitzpatrick. CrystalRegularFontMonger:CrystalCrystal1.0 Tue Oct 03 18:31:16 1995CrystalCopyright 1995 by Red Mountain Corporation. Design by Jerry Fitzpatrick. CrystalRegularFontMonger:CrystalCrystal1.0 Tue Oct 03 18:31:16 1995Crystal)\Crystal7@"@00 hh +1+0!!'!!B!B9{$@  K +1?+0##3Ѽ{   @ NN  +1*0#53#53/R2+P8%+qO@D) )     7!+1??..+0#3#####737#73333#3"`qZZm`$Zm[^kV)}ss su qq(195@+65)! * $    26%.*W;++????*0##5&'&'7&'&5476753.'%4&'676qVXuXEH3h#-+5rFRTNhNG>;`9R#LVM1#++^V=;-+\^65ZX;'' ^#CPmhVN5-PXA6HR '36 y;V)'b#2B8@/?7/(    ;3 ^3,^$ D+++??*0#"'&547632%##"'&5476324'&#"32764'&#"32769+3fg57;:^^33'a+4ff67;:^^34/0 #-/ a // -/ wCPLKsmPMKNTNwDOKLslPNLNBF1'(@7R-E1')?8)).oV)9DU@L;:65)% -C -  C ;*1 )%: [* Z1U? F++1++0%'#"'&54767'&'&547632676734&#"767632}cA>=DsrE3iN 'TR}^_e-`   -bP=/2:));F# R%/DCZg;K}< pqk^DL-rLQ^\fg{n1P@%#7iVX53Nf9;F7J33+/0(_--8LZ9;d@ K+1..0#53d+f+w@ X ++?.0&'&54767wiNPJRiFD%R݈JX@  X++..0'654'&'7XJRiBHiRL݊RuÇJ6@.     ? +1*+0''7%5%'77oh shi}RC= ==}R '@ +   d  ++?.+0!#!5!3!u`u^^u @ I  +1..0%'676551 \u@  R++???.0#'DoV-@&    S ++++0%!567654'&#"'47632!==N35XcADfoebL+^9PmFT;9MNwwdgXK$H5@. " "   S ++?+0#52767>54&#5!5!2TEuL\^ǠTT?WbjxurhV@+  #dy|yy{f{ -@$      U++??.+0##!33!{ {os )u}!?@6  !    WO #++1++0!32#52767654'&#"#!usMNnLVVT'5'jJ^`TpfgL-@/3F`w/? /C@:  %- ! X!)X1++1++0#"'&7632&'&#"676324'&#"326Zb`y}fPVTBc355C@:53-+ #; # ; 53' S/S U'S7@++1++0#"'&54767&'&546324'&#"6764'&'3276{{y{P@1)ՌpoF1j}=R?@KP>=`56CFA+x@=RRRJGe\NKhmlhiaKDZRFRloiV=HDGa6R?@@?X]G'%33@="4A@8  ) 1    - %R S-6++1++0#"'&'732765#"'&547632654'&#"3276!LbJXGL^363=7#8/1Jed^gV7:;Vm99;9aEDAϬh3)Ig1k5}IVTZ]rHJDC @F  +1+0!!!! @   H+1..+0#3'655N3sXhZT7JTHm@  3+1??0 RhDT{u @%%=  +1+0!5!!5!77LT@  4+1??0 ' 7^Rh-^sMq"&8@0&   &$ # S K#%(+++++0#5476767654'&#"'67632#3")>!PXN65ZjD;\db`滻VFRf3BNddi1/JPR`XB?TJy0`kml\TqAOP@GKFDB4 '/ )>'3 /)6 IFDB3  #+ 4a#`+:Q++1++0#"'&'#"&54676763327654'&#"32767#"'&57632327677D{-#'!+DR-)'JH& @!PRelRPZXFb+Ѫsyw)!)'n '!VGD65cIVc``c%Dwrm#r0-2?` $@  : +1?*+0!#!#3ǜ^^N1dZNh*:@3 %' T U& X ,+1+0#!53#5!24'&+324'&+3276f^TqquV^N^-+A:bZ6F>`o5@sjL\df:M#:C!,@%  ! R#++++0%#"'&7632&'&#"32767CR\mexvejYK>)'3D5)@D9+/r@Gu}F;uAK#-w͇5'Th*@#   U U +1+0#!53#5!2'&+3276Teooq^oZ=snf5Pl[lLdTZNs}h )@#    T +++0!!!!!!}HX!jFmm $@ S ++.+0!!!#!mgFok{'9@1 $   XS )+1++0&'&#"3276545#5!#"'&732{-'5D>)P@p259vQH+ejPGeh\L?O%1ʼnm'H` J=yh ,@!     SS +1????+0#!#3!3y}ojI'm (@!   Q  +1+0%!53#5!#3'?Zm"@   X[ +1?.+0#"'&=732653ZbXXf)3`Vcl`Zh\+\DTqm %@     X++???*0%##33}?5lu)D}kTMjm@  S++?+0%!3!jPk$f @  @+1??*0%## ##33BTd{q *@    XX ++1???*0%##33{{HkJb#@  UQ!+1+0#"&547324'&#"3276TyoJRsyT?PH5FCRC ޛۤšhh )@!  U S+1?+0+#!24+276hGN%ɇZ''`ij̵B?j-F@=)('#  * # *)(  'SU/++1++0'#"'&76324'&#"32767'7>5#%=n1J5)js9NH3HTp+pk+yr]5fVDz妲^{>ih;@1      U S++1??+0%##!24&+33276كbm\h35sFg`_1sjds`c+}{97w.9@0 $ $    ( SS(0++1++0#"&5732654'&'&'&547632'&'&#"wV\!-mRf')/HXXTH $+LR))F9N{kr+3Fwo^=+1???.0 #39os?w $@     <+1?????*0# #33XZDGB}Lyo '@    ; +1????..0% ' 7كTА5q34 4}@  Q ++??..0 #7q!N`h%@  @ +1+0!5!!#3'P\J !@  U +++0!!!!Jeq@ C+1..0#3}{T-V!@  U +++0!5!!5!dw{@ 9+1?*0# #3}ۃf}{s@/ :+1+0!5!GwgF?A@8;4 - 0-,4%- ?08 /fg8)eA++1++0#"'&76324'&#"3276'##"'&54632#&'&#"32765uz}}zyyhXadghiw9}p9-F}R7IE@:)9%; E' !0  2)#8A 4 W8*ZAK++1??.+0#45475&5#"'&54767>7674'&'.#"'67676!2'#"32676VTVeTVs'55a` g7A65`sJG-#$XY9+3%JN34R P!"ONV!B? ')=-/##%8377\^ J%1d0$MDBoy*:@-% '     Y#Z,++1???..+0#"'&'&'#3676324'&#"32760;)):5787)/+Dl}{\JBH>=D5qN Y eP[bVXhbR'/@( ' $ + Y)++++0%#"'&57632&'&#"32767sfknR!VT7c[OMX[GF` rCcT% $;;{q%#^ /7@*!# )  + % _W%1++1???..+0#5#&#&'&576323'&#"3276765}))FE8 TFy%J#5};2L>@N -#o   lXHtF7}P)9>@6  1' ('*  * 9/-*  >(;+1++0!32767# '&57632'4&'&'&#"V-78he/=5b-N}kAuhuV?1/y#/9\k7!) w//9V'F7#9ρ1}3%@A8=u3%8!/T!+-1o+@$     W ++?+0!"!!##534763!P))b&J9;KNk`sfZ#6M@C  #!,# 3"  ' 0 !(] \08++1?++0%#"'&'732657#"'&576325347654'&#"3276yZjDFp/RNMN765shRybc?\/@zJV}7ZoR:x+R/;o;h63>R_nωH2@'      ZY++1??.+0!#454745&5&#"#323632gqnm  OZVRTN -@'(  '  [ +++0#53!5!#5!3{i 'P{5{2@+ ( $  \++++0#53#67672767#5!ݬ +c  h!9 //lD^#%"s%M{!@  Z++?*0!#376767Ů)mpL!ZHb) noI\Jq %@  V +++0)5!#5!!#5@qP*<@."&       `"c ^,++1??????*0#4'&#"#4'&#"#36763267632R)%+w3%%1s%%33%%1%/AP<9+1RP+)%1LNZ1><TVV+@ !   b ^ +1??..+0%#4&#"#7>32yrFnct}KL}ZZ38^1:ZLk2?RT^sL#@ % [X!+1+0#"'&5476324'&#"3276PpgCRjpTJO}KDFCLEՍّ՞ŻsztkjynqT&=@4   #    [ V (++1?+0#"'&'#36324'&#"3276\LPP9)'%+;/NA:/%5ÃJG!Tuh^1`RdRDbbcXX$8@/ !!  SW &++1?+0##"'&4767632'3'&#"3276ӘV76767675)#;+F!?/>R G6cb)(1<9;TB=!C//uDF|L%@?-)'!j͗P= ;E^qH)@! . , A +1++0!%5!! <m)HL@1@*0/ =@ " 0! P*B++++0#";#"'&'&'&'&'.#52676767476767633LBX 3<$# Z67&'&'&545474'&'&+5323RR35 35B+V;5Z- N7^#  XAAi-+''/-\X!#/14E36 !F{{3%>-'!1I)++-[;; 0/Ief^!Bj@  1 +1?*0#"$#"'6763232767/?LL11@;%QEH;>K'>1) =jDR\%H#C86-O)))9))q))b)o)))))})))))))))f))))))))m){)T))T)))))))))))))))b))j))))))w)o)}))P)))w)s)F)})o)b))})o)s))))))))s)q)X))w){))P)`)f)m)))))BbP URB3b)qfqf @ &kf0OS/2&{Ncmap5(:cvt '@fpgm0Aglyf_h*heade@o6hheao$hmtxK'okern)r{Floca7wNmaxpJy nameCWy/jpost]&zprepr8Z|@ ",  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ~  "  " FHJ d !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_efghijklmnopqrstuvwxyz{|}~bc`a  ! FFFFFFccccccccccccccccccccccccccccc} 8CJKLM1:;@CZZZZZZZZZZZZZZZZZZZZZZr "$?AJLO,++ZXC fa#BCCfa#BC QXC PX+C_SX+YYC`PX+C_SX+YYY+ +CCUXCVXYCC`bh Cb `C#DaC#DYY-,ECCaad Q-,E`Q-,CCab RX! Y #BCC`bh C`C#D CaC#D-, C`#ED ` C`#ED C` #B`#B E#B`E#B- ,#p-,#BCX+CCEDCCEC@caD+Y-,#B-,+XEhCCafY @PX!@Y@b#B- ,C fa QXYC fa SXYCCfa@ba``#B-, EhD ` EFvhE`D-, `EE`h %`EFvha%#D#`#D- ,bCECEacCE`#D>- ,bC`ECEacCE`#D>- , `//-(@/<'</<'< ?<d<?<d<103!%!!(<@(p>c 6/<<<@<< < ? <~< ?<103#'3#>c:ccn</<-</<-<?<<<<<<103#3#FFFF^ ?<<< < <<<</< <<<<l<<<<</ < <<<<1033733#3##7##7#737#7337ON??N?&?O@?N?&;&&GFFGG -4;5/<< < <<<6<*<<"<#<-<.21T>$+DR&2(J:&Z C/.J46I)2;8g6L=<0G/+C#2E06L/YY#@X6MS"0C0%A08))@{=.+> )!3?/<<.<<&/'<(<<.=<></< </ < <6/7<8<.//<0<) ?*<+<9k-<:<;-_J#?/F9./44/,;0?#J_->%#?0F:./44/-; n)5D@/A < < ?<<5r*<+< ?<<=m>#_P 4(U u&M!/&QR"&":"5D&2$9H$$B9079"#=-aF--/=P -9B!='%$).=D-% #/-%4#b </<< ?<<<* < < ?< |< <10356655##b8*0c@G12%" ( / < <<<<?< ?<103#&&546;@@@@;PRQr}}qf " (/<< = < <?< ?<103#6654 FH1#O/ < <<<B<< ?<y<?<< q!<"<<10#6632!!5466676654&#"f m6T:I20g/t&;Xh."*G6DNe|$;M)GV#"A(#ZC*PLF!9+?FM2"/#<$<@<<&</ < <*C+<" ]</ ?0<1<r? W55O#%/$A]9.P;#(5!P?!1!C' *CS* "=T3/U@&#"&|[lb-!6D*4BZ,:>=?<@#5#GFEH$4!5E$1+!YH)J9""9J)G\!,1$E6 PF)*DD*)F'00MP10%#7o/<<(D)<*</<<2H3<4< ?< <r<<?<<7q$<%< / < <-{<.%"R'*VE,=Z;{'\A*O?)3$$3%6$"795+FY.. !/<<<@<<< ?<~<?<~<103#3#3cccc nn3jc U/<< < <<@<<<< + << ?<~<?<~<103#356655#3ccc5.0 nт4D 1 ( b<4/<5<10%54ON:ZH /<j</<j<10!!!!ZHHE|En=4/<5<105%5%n=4:N!n/<<6<< /<9=.:`}CWrC@kH`@KfU~LM`RxH-Kb5"T/CO9U7 /!&8$ &2R!.:gPKhB?nSO[14((1>L) 0/< x < ?< w< ?<<<103#'!#3 u mKEmBqr(SL&/<@<<</<<C<< / <<"F#<$< ?<<y<< ?<<y<<%/<&<v<<103!2#32654&#3266654&#L,'G6 .2EA"9L*/B6=2&GA/@$:VcB(K:#~B-%< -5O%|'D/<<F < < ?<< y<<" ?#<$<y<<10#&&#"3266673#"&&&5466632cmS2R9%>O*.J6!c0NlDKyT.,TyMCmP0NM.Ng9NtK% 6E& /<@<<</<y< ?<y< ? <10!!!!#LNcZZ%*/<<(;<<)< /!<"< F<<*_< <<<$< ? < <#y$<%< ?<<y<</<)x*< ?<10!#'#"&&&5466632#&&#"326665#q8A +;E%M{V.6[xCEiM1 \g_;U8|f)O>&wa+!9fRca0'DX2FU/Qm?'BU-L1 V /< @<< </<@<<</ <y< ?< < < ?<<<103!3#!#Lckccc&(XOc"/<@< ?< ?<103#Occ(J / < <@<</<<@<< ?<<y<< ?<103#"&&&5533266650\H,*Jd:6cL.S[ .#'3  "5K3.G1+CR($8% *%/ "6M57P3&Eb3F/<@<b<b< ?<y<<< ?<10!###3cZ~@'P/<<@<</<< @ < < ?<<y<< ?<<<1033266653#"&&&5@c1= A4 c2Pd20aM1 (<'(<'AcB""BcAb" ?<< ?<<<10333#mnn[(s + ?< < < ?<<<<< ?10333##memjjMM(UQ  ?<< < ?<<<1033##noxy%so (/ <@< ?< ?<<<10333#yxcbL$%) I/<M</<<< J < ?<y<< ?< y <10!!!55!C TieZZ#N,C/<U<<<9<?<l< ?<k<103#3#NeeFG.  ?<103#<;&,C/<U<<<9<?<l< ?<k<103#53#&eeTGO  ?<103#'#lZY S/<k<10!! F$c :/<< @<<<* < </< |< <10#54673c8+1c@F11$+7 / < < <<3<+/<9< %9&<'<,<-</< <1;2<3</< ?<<<<<4p<<<5<6<?<<(q)<*<10#4666323267#"&5#"&546666654&#"5326Z$;I$'J:$  $/&_!!>Y75W=!!HF?T"@1g+C.-Me84`I,'E^7#AMN [/<<<<T<8<<<< ?<< p < < ?<?<<<10354632&&#"3###ZG. !ZZYZ -$JZE:%"(</< <-;.Z>/<<<9<<< ?<}< ?<?<103#3#>ZZZZeh"]/<<<< R <9<<<<? < <r<< ?<}<?<103#3#"&'53265?ZZZH5  ehCBM): 6 /<8< < < ?< < <?< ?<103373##:Ymq\YH V>Z"/<9< ?< ?<103#>ZZ(:+/<)8<<*<+</ !!>Z9;Z? ?Z;IOOIJL'7,Kc88cI**Ic88cK,PkWXggX*G4:,(q/<#8<<<<$<%< / < <8<< ?<<(n<<?<<q< <?<?<10336632#"&'#266654&&&#":YS61M3rl7<(4 3(&7$ !8I,((Hb:~/ "8H%$D4 !5D"'G8!%,(q / < <#9$<%</<9<<<<<< ?<<(n<< ? <<q< <?<?<10##"&&&54632353266654&&&#"D79Z>!r5GZ,;#&9'*:$%9 /*Ie<|4'P!!8G'"D5! 4D$%H8":O/<\ <8<<<<?<< y < < ?<?<<10336632&&#"#:Y4/ :AY E&* VC4#3/<38</<<8 -.3&0 ?1#:N*)J7!51$- $2#(6!KM-! !1%-?(-Cx/<<<<6<<<<Q< T<< < ?<<n < </<<<<?<<<1033#3267#"&5#53SW\\# (+BQQE"H /:gE- R/;<< / < 9 <<< ?<<n<< ?< ?<< <1033266673#5##"&7.Z;&.+# ZZ Z5I` 93$gF((JI  ?<?<<<1033#deZ c + ?< < <?<<<<<?10333##[kk`kk[YqqY wwP  ?<< <?<<<10373#'# lx}mnn   ! (? < <q<<?<<<10333#"&'53266677 ccC!   c?4K E  F/<K</< L < ?<o<<?< o< <10!!!55!5F_L$/# )$ F,A-<<(/)<*B+</< <3B4<5<# ?$<%<.z/<0< ?<<z<</<<8y9<:<1032654&#"#666632#"&&&533266654&&&##t@6OL>J f-EW.0[F+&$1 +Lg&4F)B3K11K4.*$ *4;8R5'BW1'8$#21)L1 L /<@</<@< ?<< << ?<<< <10333###LcVvcxK(BL1/<<<=</ <<<=</</< ?<<<< / <<r<</<<<< ?<<<10332653#"&&&333###^5#8^ 4@!!A4 ccVvcx$$$7&&7K(BLF 4 /<@< < < ?< < < ?<<<10333##LcU-|qc[JprxW/<<@<</<?< ? <<x<< ?<y< ?<<10!#!#"&'53266&5b *D3  /-(~'^a[F+UGcl$LG/< @</<@< ?<< < << ? ?<<<10333#####LŋcUck(VVL1 V /< @<< </<@<<</ <y< ?< < < ?<<<103!3#!#Lckccc&(X%X/<<F<</<<F<< ? < <y<< ?<<y<<102#"&&&54666"32654&vN}X00X}NN|X//X|Nnyynn{{;hTRf99fRTh;ZL1>/<@</<@< ?<y< ?<<<10!#!#L1cc(~L^/< @ <<</<<F<< / < <x<< ?<<y<< ?<10!2###3266654&#L)1O88O1cc+"G1%O*.J6!c0NlDKyT.,TyMCmP0NM.Ng9NtK% 6E&$!;O/.O;"B#=TQ  ?<< < ?<<<1033##noxy%sLE| V/< ( </</< /<@</<<< < ? < ?<<<103!33#5!LcnbIS~#V/<<?<</ <@< < < / < <y<< ? < ?<<<103333##"&&&5#bH:cc+M:"DQ[(#4I,LL ]/<?< /<@< / <@< ? <y<<< ?<<<< < ?103!3!3!Lcbc~~(LEu / < (< / </<?</<@</</<<< < < < ?< ?<<<< < ?103!3!33#5!LcbcIS~~ jq/<@<<</<<F< <W< ? <<x<< ?<t</<<y<<10332#!#32654&# Ӳ%?hH]e6t|PF DgGLR&/<@<<<#/$<%< F <</<<F ?<< y!<"< ?< <&y<</<y< ?< ?<1033666632#"&&&'##"32654&LcP 7UrEN}X//X|NL{W1Lck}znnyyHtS,;hTRf97aO)!.d/<<'E(<)</<@<"<.<,/-<.<y<< ?!!>Y75W=!!HF?T"@1g+C.-Me84`I,'E^7#AMN  P/<<<8<<< ? <<<<< ??<<<< <?103353373##5'# eYee7Y6e ==B .O ?<<&n'<(< ?<<q<<,/-<.<j<<  <1032654&#"#6632#"&&&'332654&##V!2B*-8Z nJ#G9$!()+#:L)!B7) Z 447?//T.)%* %*UJ$6"(F E'(;&)F4*=,*#-: L /<8</<9< ?<< <h<? <<<<10333###:YtZƍ 5g:q/<8</<9< ?<<<h</<< l <<?<<<<<<<10332673#"&&&333###eF 76 F .87. 0YtZō(( 4%%45g: 4 /<8< < < ?< < <?<<<103373##:YmqaY ` W/<<7<</<9< ? < <o<<?<o< ?<<10!###"&'5326665v|Z "!!>Z9;Z? ?Z;IOOIJL'7,Kc88cI**Ic88cK,PkWXggX*G4: >/<8</<9<?<o< ?<<<10!###:ZY C:,(q/<#8<<<<$<%< / < <8<< ?<<(n<<?<<q< <?<?<10336632#"&'#266654&&&#":YS61M3rl7<(4 3(&7$ !8I,((Hb:~/ "8H%$D4 !5D"'G8!##O/<<8 < < ?<<<?< <q<< n<<10#&&#"32673#"&&&5466632Z @9$4 !4$;@Zsb:T8 ;S31M7"c7,3C%&I9"D8]l2Od27aH)1A F/<8<[<[<?<o<<< ?<10!###Y NC ! (? < <q<<?<<<10333#"&'53266677 ccC!   c?4K E , (;N/<<<<<=<>!8X#N;U':'A/,Kc83dO1]\82:&/<8<<</<<8<#/$<%< ; << ?<< r!<"<?< <&s<</<o< ?<?<1033666632#"&&&5##"32654&:YJ$=V59Z?!!?Z99Z=!HYLLLLLKP .O9 +Jc88cK+(E\4fXXhhXTj   i/<<9<</<9<< < ?<< << <?<<o<<o<<103#5#"#7667&&&&54666#"33ZS0=jO'- )8(3" &%")%/6*N+!%*_< ,,d(>&4 _  #)%)  c3J/3?+!++1++!++%+-++33bZn".L%L}LEL%LOL&L1GG%rL%L'?@d|[lv%SN?S&Y$ $: %'(%:>:>D::1#/:K%C:#&-  #h<$#c./J/mLLL}LtLLL?LL%LkL%?^ R[L#LL .LeL#L $%)::4 (#  (:(::8:(:1#":/: # J 6: ?:V: ::#: Bkzw;:9875""""Z"X"W"V"R"P"F":"8"7"6"5"2"0"("$$"%:%7%"'''' ''Z'S'P'F'"+",F---Z-:-8-7-5-00 0090:0807050"11 11P1F1"3:355555 55Z5X5V5T5S5P5F5$5+505"6"7777 77Z7S7P7F7"888 88V8S8P8F8"99$90:::: j:j:V:P:J:F:$:":0;AeAAA+A"GKG GS SW WX XX"Z Zeeeeewe|eyexee+esevehhhhh hhhhhhihehphyhixiwiiipiihiokklkslkosovphseskso.vewww wwwwwywpwewix xxxxxxyxixeyxyeyhz|h|i!kwpi  44d\7e4PmnA8j  0 S p [  B v > \ J@,Bf+]prB8 A_6 SPyjaDC 1 !!u!""B""##n#$$:$%%P%%&7&''_'(<()R)*S*}*+J+,,@,,-.-n-..B.//L/0V0011W12 2v23/34^(((    %/ 7 A T  g t   CyrveticaCyrveticaNormalCyrveticaCyrvetica001.003CyrveticaCyrveticaCyrveticaNormalCyrveticaCyrvetica001.003Cyrvetica:  !"#$%&'()*+,-./0123456789:;<=>?@BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~ asciicircumendashemdashzK ` ` ` `S#BJv ? `? >9FD>9FD>9FD>9FD>9FD ++++++ +++++ +// Persistence of Vision Ray Tracer version 3.5 Include File // File: debug.inc // Last updated: 2002.5.31 // Description: This file contains various macros for debugging scene files. #ifndef(DEBUG_MCR) #declare DEBUG_MCR = true; #declare DEBUG = yes; #macro Debug_Inc_Stack() #declare View_POV_Include_Stack = 1; #end #macro Set_Debug(Bool) #declare DEBUG = Bool; #end //Just a simple debug message macro, only sends message if currently debugging. #macro Debug_Message(Str) #if(DEBUG = yes) #debug Str #end #end #macro Debug(Condition, Message) #if(Condition) #debug Message #end #end #macro Warning(Condition, Message) #if(Condition) #warning Message #end #end #macro Error(Condition, Message) #if(Condition) #error Message #end #end #end #ifndef(Finish_Inc_Temp) #declare Finish_Inc_Temp = version; #version 3.5; #ifdef(View_POV_Include_Stack) # debug "including finish.inc\n" #end /* Persistence of Vision Raytracer Version 3.1 Some basic finishes. Others may be defined in specific .inc files (see metals.inc). */ // Dull creates a large, soft highlight on the object's surface #declare Dull = finish {specular 0.5 roughness 0.15} // Shiny creates a small, tight highlight on the object's surface #declare Shiny = finish {specular 1 roughness 0.001} // Phong highlights are less "realistic" than specular, but useful // for different effects. // Dull creates a large, soft highlight on the object's surface #declare Phong_Dull = finish {phong 0.5 phong_size 1} // Shiny creates a small, tight highlight on the object's surface #declare Phong_Shiny = finish {phong 1 phong_size 200} // Very shiny with very tight highlights and a fair amount of reflection #declare Glossy = finish {specular 1 roughness 0.0001 reflection 0.13} #declare Phong_Glossy = finish {phong 1 phong_size 300 reflection 0.13} // Luminous for shadowless skies and light_sources. #declare Luminous = finish {ambient 1 diffuse 0} // a perfectly mirrored finish with no highlights #declare Mirror = finish {ambient 0 diffuse 0 reflection 1} #version Finish_Inc_Temp; #end PNG  IHDR@șPLTE]A]A]A]A]A]A]A]A]A]A]AaAaAaAaAaAaAaAaAaEaEaEeEeEeEeEeEeEeEeEeE eE eE iE iE iE iE iE iI iI iI iI iI mI mI mImImImImImImImImIqIqIqIqMqMqMqMqMqMqMqMuMuMuMuMuMuMuMuMuMuMyQyQyQyQyQ}U}U}U}U}UYYYYY]]]]]aaaaeeeeeiiiiimmmmmqqqqquuuuyպtRNS@f#iIDATx]85p*.;%cIw9W̛7,+O?z]/7xkkۺm}|5M۶GT]?T5ōW__Ǐ_ݑ\!* !yGq+ 5W9]Uр#BR" K(8{w ~p} ?Ü0캎1 |ghcGe]&3 eskn$# d,х{#HU;9%!=ܱz4=pjwL9Or/)UͱWF%M1~.a A`y$D+7\SUߋE-*"䠉R1_F  1{}% wGk< 5ѯPˎ4 4e^&;:Cx H]MFL4GWLSd=?:zp ՠ䫈 YhjX^Rj{Ή7`41<,<21Wj{:9K,+qՆJRF",0NB /R X]'m5G̶5)A302羁%LG LW[r;1ҥ @b"B- b5D/70j--~<z Bw ȰZȎSǓS9I0?NGOfCZ"pCor;Mq F({8"y8KƩtfE ѕ? tdc\cN -:a&:&8j=>1%ETT=V٢=@ubZWCg@$׈Lmk$x"NoC՚DkKP2摯e# `BdF!ް(m&cWO_ Z5":ϳ?x(4AUGgJU, Hl p*fh|("RiC,|Vq2Ŝ%~!b{g X=uTmd-f!Hz3y14jɓd8(4ӫ lGGM+KXInb Kd:=R t$$3;Y 9RjC>B}7#kɈ&Ct=jXTV FՊ.Ԗe@|$Ab/<,i,lk /$:}x VM!a 0CeB8V#@,Ms070w;bLkiw+rjDjJYͥ5H$H\{}3:: Mrmf@{p^z53c"Fl=$vF)cHC$QSuQC'-6Er!KBkmДq9>HwԦ$tPAng% 6G0E&t~rQ` Yf{Ҫq^W#ԣLa`*wB3Y?L$2%{zv`E+k@nsnH |/q>C !WuP `P $SY+Xô)|<@S"854>ߝ G]ِ7hH4A[l䠏^<ϿohZ s:8(yLn.4EmT9mGTpLZֲښ<ڇD¿`z>m#NZěg~ AKmWm0J3xFzh&IU6tIŒX%jsh6e ANI}s.%!Qo1x8S[h3Bi`YLcdBOUA@"ԳY8aTW9gBoS`P.4`6,L G6# ih% Ԩ A}; NTrU;RnCoGһA O@@~EmҢ*w6Qm="~&VCy=9^G~\sVA^ 9)PrFNq@-?a61>T)_ri9ڏH5颮u#u @Q5Xf!D\Kڗoߟ98TCcs ՋSj't_h-GcDXNi#T{0>HE8'&bCdgXL gQ IYhb IBBh588CZ!`u]%t,@,#R%?"y;^L sw6dv91-\E@[ߑ_&(Xc,+>Tͥ 8BȸPH0|0N--ܲwg.ը`i& kRhosQ)Rǘ.!#idc@4p绵1l\yXl55|؅f,F~@ʚc=|)": C<=zAci3I؉ K<[~T o.I8Zr>gX:IoBnJh)1iXiVl*/ yf#Rqnh-ɧ2;Njű͠#OԂU"Κ*> `|g&A"bD.TM2:^%ʓ8 `SiEE`v? HH,G?!&u8|Q{" >c_R&5Ԥ~>2(%eD`-NMzܲml"e'fS0ooIAK/>gsjA,Uv77N{O G ؿhhfLC#<;NnPW-ݽMdGEu 7i, Ka@m{RkAos魲v1=Px¿f 2[AȖ4߶MgeuMgG(:[VxrQke>מπb?dz /E@-ԷPrӛ cpz{`}- )4w+b!3?a|M`e2#%w& +{/k7y".\q3D&Ss~^l/g}dHR+ܱ-qI"D 5Ql r aFAjƐ@9_rOfU8OzlO:G3ȹx@>i7!d Ӝ(^GGdJ p2 ֔T)wV.i{6E)Ѭ`L6r ?`EY`~[븰`XjjwPC"~Ђ)X=qR \k\:V =7RIeh83 ;*֮v;fT)uk΁Ӊ}Vu{U\2A{x6O!;I ?KZ޼g6=d+eҌ a?T.6h0)`c;aY-apC P= KČ$50{*oFu`!`4aJ6Dh_Oyu|ݡ9vm`XI:'Ѿ8G9,yN *^2 ²dH'm ^I ~`!XM|~<@@@]Q}+Πx|Lp6K{)A'ڛnmH )4]ڂ%+M~bl\~Rm #!=?ױDz4] ôz8&X $R1E4O!n~\ŷT3i WhkfP@۶nNbn ųbqjIKD!b1ۨLH-%ش /F_Si< HG>f}deu]㌾&1uǡ=G/7T"`<FM8L, J6USTy}<%v BpS;P"ݷP'8P`W.q:Qf7Ӛ1CYjZ< Y60O:8S7]M5$E)XQ0HJkB6KV E nw݌y Үu d11yM<I׾,Hϖ.$:Pn!DyeՈsspc9Xf4-' cV0Mb$? `4єH"^՞7vaxb;ySˣ\B֬P%$~jY\ƏDXxR+CvJ!,wg\!ymC lIRPqS&dyCL0.SN1F[n>4/'7(wWR,~apO(P91@p; -;p82^t+>)|@x]&p`0;<p_ƣvHZ$P!%;6J%HQKʰp\TtK&`#$D~ƮSV'[~oƜr2~O:Ox`R2^|i;͠,0UeJz4K֚&esG1#{*!\3,r3E*JQvZh&H|/Q#d\i tRN3$ք,c #5%=-!M z":iiP*-Ϟbc1Lh Vѕ-C SMhis.S|&Ĝ'QՈ/0M( 8DQhH-ɗ5FM;L۴o|"@.Ȝ2o׶Ō%Vj5+@<(ow9{hb"?15z`4EM .MUv]* :[G9Y r2y!?F1XǦq=ULrҒeŸԤaHJi VR%aUO?ҹ;2VLIu5P3yhVͶpyL\~ "rj!FXj \qyMf,,.yp`E |FFVQa"8y$[TC,&vZi꿎,,kֱ02- t+6 ,zF1 {(%OL2:D(ʴtJ;8`cA(к"JLDT, Rn3{+h!n[[+MK~iG5'FXD@yG_+PkMuB5_ 5Ȗ iRh TtيG#@5"3b_PlLK4r( UӕR1nC[MGg>`.&d )}A QAjK5֙6Q6_REɶAogѬYs̴,y ϕSrֻ1*mn߂v%jQ(~D< %+>p>$1& 2gp&5(~jC59w& Cf~ #T`qůӯ3ꇼ52>Ikt#>0cKO`Y;B2 AqLwI+_}I6| 81qB?u)ChHaK PoB0- L41,J3yg'0: \ak5;.qqI>7@[Y=z ŏ~ F?|A4*M(A)h]v ё6hU*UB%!AйtEׄNG{h_GC$)Z*kdZ[k= wnBsqϑևRNPԅ9FCT*2ҺHտ_*/J JOOfٔ&tJ@oV1JPZL eqyHM֨ysxcd׈]_#HE޲H2 ):߃s&4wkm|yǢ Y'E0OGJIFJrXEnah-wkIs&TSvM`y ;i숳B +tv_L֟V"@@.V|z"r]e_[]qXcXV'_Г40D*U9DLL]Wic#yer]dVg:%|PH۾ Ԇes]N_19+!B>x-=˭X2-&Xu\Z^ JNB/❥*<$_b| Auĝg?7>"_&0?BMxICJ m{DƵ\Zx Ń#qZ'̾p{="|Leeem7NYb՗ya_0͔yzo0IK62)^j>`nP_k+r=T&! v]eEvCvId R1331ΐ=+bIE;znsogO &lug#+`U)"+?b/Iz{q_3pu%_,z"j/"$5|L7T'IENDB`// Persistence of Vision Ray Tracer version 3.5 Include File #ifndef(Functions_Inc_Temp) #declare Functions_Inc_Temp = version; #version 3.5; #ifdef(View_POV_Include_Stack) # debug "including function.inc\n" #end /* Persistence of Vision Raytracer Version 3.5 Many pre-defined functions for use in scene files. */ #declare f_algbr_cyl1 = function { internal(0) } // Parameters: x, y, z // Five extra parameters required: // 1. Field Strength // 2. Field Limit // 3. SOR Switch // 4. SOR Offset // 5. SOR Angle #declare f_algbr_cyl2 = function { internal(1) } // Parameters: x, y, z // Five extra parameters required: // 1. Field Strength // 2. Field Limit // 3. SOR Switch // 4. SOR Offset // 5. SOR Angle #declare f_algbr_cyl3 = function { internal(2) } // Parameters: x, y, z // Five extra parameters required: // 1. Field Strength // 2. Field Limit // 3. SOR Switch // 4. SOR Offset // 5. SOR Angle #declare f_algbr_cyl4 = function { internal(3) } // Parameters: x, y, z // Five extra parameters required: // 1. Field Strength // 2. Field Limit // 3. SOR Switch // 4. SOR Offset // 5. SOR Angle #declare f_bicorn = function { internal(4) } // Parameters: x, y, z // Two extra parameters required: // 1. Field Strength // 2. Scale. The surface is always the same shape. // Changing this parameter has the same effect as adding a scale modifier. // Setting the scale to 1 gives a surface with a radius of about 1 unit. #declare f_bifolia = function { internal(5) } // Parameters: x, y, z // Two extra parameters required: // 1. Field Strength // 2. Scale. The mathematics of this surface suggest that the shape // should be different for different values of this parameter. // In practice the difference in shape is hard to spot. // Setting the scale to 3 gives a surface with a radius of about 1 unit. #declare f_blob = function { internal(6) } // Parameters: x, y, z // Five extra parameters required: // 1. x distance between the two components // 2. blob strength of component 1 // 3. inverse blob radius of component 1 // 4. blob strength of component 2 // 5.inverse blob radius of component 2 #declare f_blob2 = function { internal(7) } // Parameters: x, y, z //Four extra parameters required: // 1. Separation. One blob component is at the origin // and the other is this distance away on the x axis // 2. inverse size. Increase this to decrease the size of the surface // 3. blob strength // 4. threshold. Setting this parameter to 1 // and the threshold to zero has exactly the same effect // as setting this parameter to zero and the threshold to -1 #declare f_boy_surface = function { internal(8) } // Parameters: x, y, z // Two extra parameters required: // 1. Field Strength // 2. Scale. The surface is always the same shape. // Changing this parameter has the same effect as adding a scale modifier #declare f_comma = function { internal(9) } // Parameters: x, y, z // One extra parameter required: // 1. scale #declare f_cross_ellipsoids = function { internal(10) } // Parameters: x, y, z // Four extra paraameters required // 1. eccentricity. When less than 1, // the ellipsoids are oblate, // when greater than 1 the ellipsoids are prolate, // when zero the ellipsoids are spherical // (and hence the whole surface is a sphere) // 2. inverse size. Increase this to decrease the size of the surface // 3. Diameter. Increase this to increase the size of the ellipsoids // 4. threshold. Setting this parameter to 1 and the threshold to zero // has exactly the same effect as setting this parameter to zero // and the threshold to -1 #declare f_crossed_trough = function { internal(11) } // Parameters: x, y, z // One extra parameter required: // 1. Field Strength #declare f_cubic_saddle = function { internal(12) } // Parameters: x, y, z // One extra parameter required: // 1. Field Strength #declare f_cushion = function { internal(13) } // Parameters: x, y, z // One extra parameter required: // 1. Field Strength #declare f_devils_curve = function { internal(14) } // Parameters: x, y, z // One extra parameter required: // 1. Field Strength #declare f_devils_curve_2d = function { internal(15) } // Parameters: x, y, z // Six extra parameters required: // 1. Field Strength // 2. X factor // 3. Y factor // 4. SOR Switch // 5. SOR Offset // 6. SOR Angle #declare f_dupin_cyclid = function { internal(16) } // Parameters: x, y, z // Six extra parameters required: // 1. Field Strength // 2. Major radius of torus // 3. Minor radius of torus // 4. X displacement of torus // 5. Y displacement of torus // 6. Radius of inversion #declare f_ellipsoid = function { internal(17) } // Parameters: x, y, z // Three extra parameters required: // 1. x scale (inverse) // 2. y scale (inverse) // 3. z scale (inverse) #declare f_enneper = function { internal(18) } // Parameters: x, y, z // One extra parameter required: // 1. Field strength #declare f_flange_cover = function { internal(19) } // Parameters: x, y, z // Four extra parameters required: // 1. Spikiness. Set this to very low values to increase the spikes. // Set it to 1 and you get a sphere // 2. inverse size. Increase this to decrease the size of the surface. // (The other parameters also drastically affect the size, // but this parameter has no other effects) // 3. Flange. Increase this to increase the flanges that appear between the spikes. Set it to 1 for no flanges // 4. threshold. Setting this parameter to 1 and the threshold to zero // has exactly the same effect as setting this parameter to zero // and the threshold to -1 #declare f_folium_surface = function { internal(20) } // Parameters: x, y, z // Three extra parameters required: // 1. Field Strength // 2. Neck width factor - // the larger you set this, // the narrower the neck where the paraboloid meets the plane // 3. Divergence - // the higher you set this value, the wider the paraboloid gets #declare f_folium_surface_2d = function { internal(21) } // Parameters: x, y, z // Six extra parameters required: // 1. Field Strength // 2. Neck width factor - same as the 3d surface if you're revolving it around the Y axis // 3. Divergence - // same as the 3d surface if you're revolving it around the Y axis // 4. SOR Switch // 5. SOR Offset // 6. SOR Angle #declare f_glob = function { internal(22) } // Parameters: x, y, z // One extra parameter required: // 1. Field Strength #declare f_heart = function { internal(23) } // Parameters: x, y, z // One extra parameter required: // 1. Field Strength #declare f_helical_torus = function { internal(24) } // Parameters: x, y, z // Ten extra parameters required: // 1.Major radius // 2. Number of winding loops // 3. Twistiness of winding. // When zero, each winding loop is separate. // When set to one, each loop twists into the next one. // When set to two, each loop twists into the one after next // 4. Fatness of winding? // 5. threshold. Setting this parameter to 1 and the threshold to zero // has s similar effect as setting this parameter to zero // and the threshold to 1 // 6. Negative minor radius? Reducing this parameter // increases the minor radius of the central torus. // Increasing it can make the torus disappear // and be replaced by a vertical column. // The value at which the surface switches // from one form to the other depends on several other parameters // 7. Another fatness of winding control? // 8. Groove period. Increase this for more grooves // 9. Groove amplitude. Increase this for deeper grooves // 10. Groove phase. Set this to zero for symmetrical grooves #declare f_helix1 = function { internal(25) } // Parameters: x, y, z // Parameters: x, y, z // Seven extra parameters required: // 1. Number of helixes - e.g. 2 for a double helix // 2. Period - is related to the number of turns per unit length // 3. Minor radius // 4. Major radius // 5. Shape parameter. If this is greater than 1 then the tube becomes fatter in the y direction // 6. Cross section type. // 7. Cross section rotation angle (degrees). E.g. if you choose a square cross section and rotate it by 45 degrees you get a diamond cross section. #declare f_helix2 = function { internal(26) } // Parameters: x, y, z // Seven extra parameters required: // 1. Not used // 2. Period - is related to the number of turns per unit length // 3. Minor radius // 4. Major radius // 5. Not used // 6. Cross section type. // 7. Cross section rotation angle (degrees). E.g. if you choose a square cross section and rotate it by 45 degrees you get a diamond cross section. #declare f_hex_x = function { internal(27) } // Parameters: x, y, z // One extra parameter required: // 1. Has no effect ?????????????????????????????? #declare f_hex_y = function { internal(28) } // Parameters: x, y, z // One extra parameter required: // 1. Has no effect ?????????????????????????????? #declare f_hetero_mf = function { internal(29) } // Parameters: x, y, z // Six extra parameters required: // 1. H // 2. lacunarity // 3. octaves // 4. offset // 5. T // 6. noise #declare f_hunt_surface = function { internal(30) } // Parameters: x, y, z // One extra parameter required: // 1. Field Strength #declare f_hyperbolic_torus = function { internal(31) } // Parameters: x, y, z // Three extra parameters required: // 1. Field strength // 2. Major radius: separation between the centers of the tubes at the closest point // 3. Minor radius: thickness of the tubes at the closest point #declare f_isect_ellipsoids = function { internal(32) } // Parameters: x, y, z // Four extra parameters required: // 1. eccentricity. When less than 1, the ellipsoids are oblate, // when greater than 1 the ellipsoids are prolate, // when zero the ellipsoids are spherical // (and hence the whole surface is a sphere) // 2. inverse size. Increase this to decrease the size of the surface // 3. Diameter. Increase this to increase the size of the ellipsoids // 4. threshold. Setting this parameter to 1 and the threshold to zero // has exactly the same effect as setting this parameter to zero // and the threshold to -1 #declare f_kampyle_of_eudoxus = function { internal(33) } // Parameters: x, y, z // Three extra parameters required: // 1. Field strength // 2. Dimple: When zero, the two dimples punch right through // and meet at the center. Non-zero values give less dimpling // 3. Closeness: Higher values make the two planes become closer #declare f_kampyle_of_eudoxus_2d = function { internal(34) } // Parameters: x, y, z // Six extra parameters required: // 1. Field strength // 2. Dimple: When zero, the two dimples punch right through and meet at the center. Non-zero values give less dimpling // 3. loseness: Higher values make the two planes become closer // 4. sor switch // 5. sor offset // 6. sor angle #declare f_klein_bottle = function { internal(35) } // Parameters: x, y, z // One extra parameter required: // 1. Field Strength #declare f_kummer_surface_v1 = function { internal(36) } // Parameters: x, y, z // One extra parameter required: // 1. Field Strength #declare f_kummer_surface_v2 = function { internal(37) } // Parameters: x, y, z // Four extra parameters required: // 1. Field strength // 2. Rod width (negative): Setting this parameter // to larger negative values increases the diameter of the rods // 3. Divergence (negative): Setting this number to -1 // causes the rods to become approximately cylindrical. // Larger negative values cause the rods to become fatter further from the origin. // Smaller negative numbers cause the rods to become narrower away from the origin, // and have a finite length // 4. Influences the length of half of the rods. // Changing the sign affects the other half of the rods. // 0 has no effect #declare f_lemniscate_of_gerono = function { internal(38) } // Parameters: x, y, z // One extra parameter required: // 1. Field Strength #declare f_lemniscate_of_gerono_2d = function { internal(39) } // Parameters: x, y, z // Six extra parameters required: // 1. Field strength // 2. size: increasing this makes the 2d curve larger and less rounded // 3. width: increasing this makes the 2d curve fatter // 4. sor switch // 5. sor offset // 6. sor angle #declare f_mesh1 = function { internal(40) } // Parameters: x, y, z // Five extra Parameters required: // 1. Distance between neighboring threads in the x direction // 2. Distance between neighboring threads in the z direction // 3. Relative thickness in the x and z directions // 4. Amplitude of the weaving effect. Set to zero for a flat grid // 5. Relative thickness in the y direction #declare f_mitre = function { internal(41) } // Parameters: x, y, z // One extra parameter required: // 1. Field Strength #declare f_nodal_cubic = function { internal(42) } // Parameters: x, y, z // One extra parameter required: // 1. Field Strength #declare f_odd = function { internal(43) } // Parameters: x, y, z // One extra parameter required: // 1. Field Strength #declare f_ovals_of_cassini = function { internal(44) } // Parameters: x, y, z // Four parameters required: // 1. Field Strength // 2. Major radius - like the major radius of a torus // 3. Filling. Set this to zero, and you get a torus. Set this to a higher value and the hole in the middle starts to heal up. Set it even higher and you get an ellipsoid with a dimple // 4. Thickness. The higher you set this value, the plumper is the result. #declare f_paraboloid = function { internal(45) } // Parameters: x, y, z // One extra parameter required: // 1. Field Strength #declare f_parabolic_torus = function { internal(46) } // Parameters: x, y, z // Tree extra parameters required: // 1. Field Strength // 2. Major radius // 3. Minor radius #declare f_ph = function { internal(47) } // Parameters: x, y, z // no extra parameters required #declare f_pillow = function { internal(48) } // Parameters: x, y, z // One extra parameter required: // 1. Field Strength #declare f_piriform = function { internal(49) } // Parameters: x, y, z // One extra parameter required: // 1. Field Strength #declare f_piriform_2d = function { internal(50) } // Parameters: x, y, z // Seven extra parameters required: // 1. Field strength // 2. size factor 1: increasing this makes the curve larger // 3. size factor 2: making this less negative makes the curve larger but also thinner // 4. Fatness: increasing this makes the curve fatter // 5. sor switch // 6. sor offset // 7. sor angle #declare f_poly4 = function { internal(51) } // Parameters: x, y, z // Five extra parameters required: // 1. Constant // 2. y coefficient // 3. Y2 coefficient // 4. Y3 coefficient // 5. Y4 coefficient #declare f_polytubes = function { internal(52) } // Parameters: x, y, z // Six extra parameters required: // 1. Number of tubes // 2. Constant // 3. y coefficient // 4. Y2 coefficient // 5. Y3 coefficient // 6. Y4 coefficient #declare f_quantum = function { internal(53) } // Parameters: x, y, z // One extra parameter required: // 1. Has no effect ?????????????????????????????? #declare f_quartic_paraboloid = function { internal(54) } // Parameters: x, y, z // One extra parameter required: // 1. Field Strength #declare f_quartic_saddle = function { internal(55) } // Parameters: x, y, z // One extra parameter required: // 1. Field Strength #declare f_quartic_cylinder = function { internal(56) } // Parameters: x, y, z // Three extra parameters required: // 1. Field strength // 2. Diameter of the "egg" // 3. Controls the width of the tube and the vertical scale of the "egg" #declare f_r = function { internal(57) } // Parameters: x, y, z // no extra parameters required #declare f_ridge = function { internal(58) } // Parameters: x, y, z // Six extra parameters required: // 1.lambda // 2. octaves // 3. omega // 4. offset // 5. Ridge // 6. noise #declare f_ridged_mf = function { internal(59) } // Parameters: x, y, z // Six extra parameters required: // 1. H // 2. Lacunarity // 3. octaves // 4. offset // 5. Gain // 6. noise #declare f_rounded_box = function { internal(60) } // Parameters: x, y, z, P0, P1, P2, P3 // Four extra parameters required: // 1. Radius of curvature. // Zero gives square corners, // 0.1 gives corners that match "sphere {0,0.1}" // 2. scale x // 3. scale y // 4. scale z #declare f_sphere = function { internal(61) } // Parameters: x, y, z //One extra parameter required: // 1. radius of sphere #declare f_spikes = function { internal(62) } // Parameters: x, y, z // Five extra parameters required: // 1. Spikiness. Set this to very low values to increase the spikes. // Set it to 1 and you get a sphere // 2. Hollowness. Increasing this causes the sides to bend in more // 3. size. Increasing this increases the size of the object // 4. Roundness. This parameter has a subtle effect on the roundness of the spikes // 5. Fatness. Increasing this makes the spikes fatter #declare f_spikes_2d = function { internal(63) } // Parameters: x, y, z // Four extra parameters required: // 1. Height of central spike // 2. frequency of spikes in the x direction // 3. frequency of spikes in the z direction // 4. Rate at which the spikes reduce as you move away from the center #declare f_spiral = function { internal(64) } // Parameters: x, y, z // Six extra parameters required: // 1. Distance between windings: setting this to 0.3 means that the spiral is 0.3 pov units further from the origin each time it completes one whole turn // 2. Thickness // 3. Outer diameter of the spiral. The surface behaves as if it is contained_by a sphere of this diameter // 4. Not used // 5. Not used // 6. Cross section type #declare f_steiners_roman = function { internal(65) } // Parameters: x, y, z // One extra parameter required: // 1. Field Strength #declare f_strophoid = function { internal(66) } // Parameters: x, y, z // Four extra parameters required: // 1. Field strength // 2. size of bulb. Larger values give larger bulbs. // Negative values give a bulb on the other side of the plane // 3. Sharpness. When zero, the bulb is like a sphere that just touches the plane. // When positive, there is a crossover point. // When negative the bulb simply bulges out of the plane like a pimple // 4. Fatness. Higher values make the top end of the bulb fatter #declare f_strophoid_2d = function { internal(67) } // Parameters: x, y, z // Seven extra parameters required: // 1. Field strength // 2. size of bulb. Larger values give larger bulbs. // Negative values give a bulb on the other side of the plane // 3. Sharpness. When zero, the bulb is like a sphere that just touches the plane. // When positive, there is a crossover point. // When negative the bulb simply bulges out of the plane like a pimple // 4. Fatness. Higher values make the top end of the bulb fatter // 5. sor switch // 6. sor offset // 7. sor angle #declare f_superellipsoid = function { internal(68) } // Parameters: x, y, z // two extra parameters required: // 1. NW // 2. SW #declare f_th = function { internal(69) } // Parameters: x, y, z // no extra parameters required #declare f_torus = function { internal(70) } // Parameters: x, y, z // two extra parameters required: // 1. Major radius // 2. Minor radius #declare f_torus2 = function { internal(71) } // Parameters: x, y, z // Three extra parameters required: // 1. Field strength // 2. Major radius // 3. Minor radius #declare f_torus_gumdrop = function { internal(72) } // Parameters: x, y, z // One extra parameter required: // 1. Field Strength #declare f_umbrella = function { internal(73) } // Parameters: x, y, z // One extra parameter required: // 1. Field Strength #declare f_witch_of_agnesi = function { internal(74) } // Parameters: x, y, z // Two extra parameters required: // 1. Field Strength // 2. Controls the width of the spike. // The height of the spike is always about 1 unit #declare f_witch_of_agnesi_2d = function { internal(75) } // Parameters: x, y, z // Six extra parameters required: // 1. Field strength // 2. Controls the size of the spike // 3. Controls the height of the spike // 4. sor switch // 5. sor offset // 6. sor angle #declare f_noise3d = function { internal(76) } // Parameters: x, y, z //Noise in the range [-1, 1] #declare f_snoise3d = function {2*f_noise3d(x, y, z) - 1} // Parameters: x, y, z #declare f_noise_generator = function { internal(78) } // Parameters: x, y, z // One extra parameter required: // 1. noise_generator number #macro eval_pigment(pigm, vec) #local fn = function { pigment { pigm } } #local result = (fn(vec.x, vec.y, vec.z)); result #end // Isosurface pattern functions // Some of these are not implemented because they require special // parameters that must be specified in the definition. For this // reason, you probably would want to define your own versions of // these functions. #declare f_agate = function {pattern {agate}} // average not implemented #declare f_boxed = function {pattern {boxed}} #declare f_bozo = function {f_noise3d(x, y, z)} #declare f_brick = function {pattern {brick}} #declare f_bumps = function {f_noise3d(x, y, z)} #declare f_checker = function {pattern {checker}} #declare f_crackle = function {pattern {crackle}} #declare f_cylindrical = function {pattern {cylindrical}} // density_file not implemented #declare f_dents = function {pow(f_noise3d(x, y, z), 3)} #declare f_gradientX = function {pattern {gradient x}} #declare f_gradientY = function {pattern {gradient y}} #declare f_gradientZ = function {pattern {gradient z}} #declare f_granite = function {pattern {granite}} // image_pattern not implemented #declare f_hexagon = function {pigment {hexagon color rgb 0, color rgb 0.5, color rgb 1}} #declare f_leopard = function {pattern {leopard}} //only the basic mandel pattern is implemented, its variants and //the other fractal patterns are not implemented. #declare f_mandel = function {pattern {mandel 25}} #declare f_marble = function {pattern {marble}} // object not implemented #declare f_onion = function {pattern {onion}} // pigment_pattern not implemented #declare f_planar = function {pattern {planar}} // quilted not implemented #declare f_radial = function {pattern {radial}} #declare f_ripples = function {pattern {ripples}} #declare f_spherical = function {pattern {spherical}} #declare f_spiral1 = function {pattern {spiral1 2}} #declare f_spiral2 = function {pattern {spiral2 2}} #declare f_spotted = function {f_noise3d(x, y, z)} #declare f_waves = function {pattern {waves}} #declare f_wood = function {pattern {wood}} #declare f_wrinkles = function {pattern {wrinkles}} // Waveform functions #declare f_sine_wave = function {sin(x*z*pi)*y} // f_sine_wave(val, amplitude, frequency) #declare f_scallop_wave = function {abs(sin(x*z*pi)*y)} // f_scallop_wave(val, amplitude, frequency) #version Functions_Inc_Temp; #end//functions.inc // Persistence of Vision Ray Tracer version 3.5 Include File // File: glass.inc // Last updated: 2001.8.19 // Author: Christoph Hormann // Description: Glass materials using new POV 3.5 features. #ifndef(Glass_Inc_Temp) #declare Glass_Inc_Temp=version; #version 3.5; #ifdef(View_POV_Include_Stack) #debug "including glass.inc\n" #end #include "glass_old.inc" #include "consts.inc" // #### colors with transparency for use in pigment #### // ------- colors derived from old glass.inc include file #declare Col_Glass_Old=color rgbf <0.8, 0.9, 0.85, 0.85>; #declare Col_Glass_Winebottle=color rgbf <0.4, 0.72, 0.4, 0.6>; #declare Col_Glass_Beerbottle=color rgbf <0.7, 0.5, 0.1, 0.6>; #declare Col_Glass_Ruby=color rgbf <0.9, 0.1, 0.2, 0.8>; #declare Col_Glass_Green=color rgbf <0.8, 1, 0.95, 0.9>; #declare Col_Glass_Dark_Green=color rgbf <0.1, 0.7, 0.8, 0.8>; #declare Col_Glass_Yellow=color rgbf <0.8, 0.8, 0.2, 0.8>; #declare Col_Glass_Orange=color rgbf <1.0, 0.5, 0.0, 0.8>; #declare Col_Glass_Vicksbottle=color rgbf <0.1, 0.15, 0.5, 0.9>; // ------- additional colors #declare Col_Glass_Clear=color rgbf <1.0, 1.0, 1.0, 1.0>; #declare Col_Glass_General=color rgbf <0.97, 0.99, 0.98, 0.9>; #declare Col_Glass_Bluish=color rgbf <0.90, 0.94, 1.0, 0.8>; // #### colors without transparency (for fade_color) #### // ------- colors derived from old glass.inc include file #declare Col_Winebottle=color rgb <0.4, 0.72, 0.4>; #declare Col_Beerbottle=color rgb <0.7, 0.5, 0.1>; #declare Col_Ruby=color rgb <0.9, 0.1, 0.2>; #declare Col_Green=color rgb <0.8, 1, 0.95>; #declare Col_Dark_Green=color rgb <0.1, 0.7, 0.8>; #declare Col_Yellow=color rgb <0.8, 0.8, 0.2>; #declare Col_Orange=color rgb <1.0, 0.5, 0.0>; #declare Col_Vicksbottle=color rgb <0.1, 0.15, 0.5>; // ------- additional colors #declare Col_Red_01=color rgb <0.85, 0.10, 0.20>; #declare Col_Red_02=color rgb <0.85, 0.35, 0.10>; #declare Col_Red_03=color rgb <0.75, 0.20, 0.25>; #declare Col_Red_04=color rgb <0.50, 0.10, 0.10>; #declare Col_Green_01=color rgb <0.10, 0.85, 0.20>; #declare Col_Green_02=color rgb <0.35, 0.85, 0.10>; #declare Col_Green_03=color rgb <0.20, 0.75, 0.25>; #declare Col_Green_04=color rgb <0.10, 0.50, 0.10>; #declare Col_Blue_01=color rgb <0.35, 0.42, 0.85>; #declare Col_Blue_02=color rgb <0.35, 0.65, 0.85>; #declare Col_Blue_03=color rgb <0.35, 0.40, 0.75>; #declare Col_Blue_04=color rgb <0.10, 0.10, 0.50>; #declare Col_Yellow_01=color rgb <0.85, 0.85, 0.20>; #declare Col_Yellow_02=color rgb <0.75, 0.78, 0.10>; #declare Col_Yellow_03=color rgb <0.78, 0.75, 0.10>; #declare Col_Yellow_04=color rgb <0.50, 0.50, 0.10>; // ------- colors of common minerals #declare Col_Amethyst_01=color rgb<0.4392, 0.1765, 0.3137>; #declare Col_Amethyst_02=color rgb<0.5843, 0.3686, 0.4941>; #declare Col_Amethyst_03=color rgb<0.6980, 0.5059, 0.6157>; #declare Col_Amethyst_04=color rgb<0.9059, 0.7176, 0.8471>; #declare Col_Amethyst_05=color rgb<0.8902, 0.4549, 0.7059>; #declare Col_Amethyst_06=color rgb<0.4980, 0.2902, 0.4235>; #declare Col_Apatite_01=color rgb<0.0549, 0.3451, 0.4314>; #declare Col_Apatite_02=color rgb<0.2941, 0.5765, 0.5647>; #declare Col_Apatite_03=color rgb<0.5176, 0.7333, 0.7020>; #declare Col_Apatite_04=color rgb<0.3412, 0.5961, 0.4118>; #declare Col_Apatite_05=color rgb<0.3647, 0.8196, 0.7451>; #declare Col_Aquamarine_01=color rgb<0.5333, 0.6157, 0.6196>; #declare Col_Aquamarine_02=color rgb<0.6627, 0.7020, 0.7255>; #declare Col_Aquamarine_03=color rgb<0.7412, 0.8235, 0.8431>; #declare Col_Aquamarine_04=color rgb<0.6039, 0.7216, 0.7882>; #declare Col_Aquamarine_05=color rgb<0.5804, 0.7098, 0.7765>; #declare Col_Aquamarine_06=color rgb<0.7255, 0.8510, 0.9176>; #declare Col_Azurite_01=color rgb<0.2863, 0.3569, 0.7216>; #declare Col_Azurite_02=color rgb<0.5333, 0.6549, 0.9059>; #declare Col_Azurite_03=color rgb<0.3020, 0.3529, 0.6314>; #declare Col_Azurite_04=color rgb<0.1137, 0.1569, 0.4471>; #declare Col_Citrine_01=color rgb<0.3020, 0.2314, 0.1529>; #declare Col_Citrine_01=color rgb<0.4667, 0.3804, 0.2980>; #declare Col_Citrine_01=color rgb<0.5020, 0.4118, 0.3529>; #declare Col_Emerald_01=color rgb<0.0471, 0.4000, 0.2549>; #declare Col_Emerald_02=color rgb<0.2157, 0.6353, 0.4902>; #declare Col_Emerald_03=color rgb<0.3216, 0.6627, 0.5961>; #declare Col_Emerald_04=color rgb<0.1843, 0.4549, 0.3843>; #declare Col_Emerald_05=color rgb<0.2863, 0.6431, 0.4431>; #declare Col_Emerald_06=color rgb<0.2353, 0.5922, 0.3804>; #declare Col_Emerald_07=color rgb<0.4392, 0.7725, 0.5804>; #declare Col_Fluorite_01=color rgb<0.5098, 0.3294, 0.4039>; #declare Col_Fluorite_02=color rgb<0.3020, 0.1569, 0.2431>; #declare Col_Fluorite_03=color rgb<0.5098, 0.2902, 0.2745>; #declare Col_Fluorite_04=color rgb<0.5373, 0.3098, 0.0902>; #declare Col_Fluorite_05=color rgb<0.7020, 0.5529, 0.7294>; #declare Col_Fluorite_06=color rgb<0.4745, 0.2627, 0.4824>; #declare Col_Fluorite_07=color rgb<0.2314, 0.0784, 0.2902>; #declare Col_Fluorite_08=color rgb<0.5804, 0.6235, 0.6745>; #declare Col_Fluorite_09=color rgb<0.4392, 0.4745, 0.5333>; #declare Col_Gypsum_01=color rgb<0.9020, 0.8824, 0.7882>; #declare Col_Gypsum_02=color rgb<0.8039, 0.8667, 0.8157>; #declare Col_Gypsum_03=color rgb<0.7098, 0.6863, 0.6000>; #declare Col_Gypsum_04=color rgb<0.8275, 0.8078, 0.5765>; #declare Col_Gypsum_05=color rgb<0.8196, 0.7373, 0.5294>; #declare Col_Gypsum_06=color rgb<0.5961, 0.4941, 0.3020>; #declare Col_Ruby_01=color rgb<0.4980, 0.0824, 0.2275>; #declare Col_Ruby_02=color rgb<0.6235, 0.1490, 0.3137>; #declare Col_Ruby_03=color rgb<0.7412, 0.3294, 0.4745>; #declare Col_Ruby_04=color rgb<0.8039, 0.2039, 0.5569>; #declare Col_Ruby_05=color rgb<0.5882, 0.1255, 0.4784>; #declare Col_Sapphire_01=color rgb<0.2118, 0.3020, 0.4980>; #declare Col_Sapphire_02=color rgb<0.0588, 0.2000, 0.5569>; #declare Col_Sapphire_03=color rgb<0.0392, 0.2353, 0.5686>; #declare Col_Topaz_01=color rgb<0.7333, 0.7451, 0.6980>; #declare Col_Topaz_02=color rgb<0.5922, 0.6196, 0.5922>; #declare Col_Topaz_03=color rgb<0.5922, 0.6157, 0.6510>; #declare Col_Tourmaline_01=color rgb<0.3725, 0.4235, 0.2941>; #declare Col_Tourmaline_02=color rgb<0.2745, 0.3490, 0.2235>; #declare Col_Tourmaline_03=color rgb<0.2627, 0.2549, 0.1451>; #declare Col_Tourmaline_04=color rgb<0.1333, 0.4706, 0.3412>; #declare Col_Tourmaline_05=color rgb<0.0627, 0.2980, 0.2118>; #declare Col_Tourmaline_06=color rgb<0.0196, 0.2706, 0.1961>; #declare Col_Amber_01=color rgb<0.3725, 0.4235, 0.2941>; #declare Col_Amber_02=color rgb<0.8941, 0.6863, 0.2902>; #declare Col_Amber_03=color rgb<0.7412, 0.4235, 0.2588>; #declare Col_Amber_04=color rgb<0.7059, 0.3961, 0.1216>; #declare Col_Amber_05=color rgb<0.5647, 0.2392, 0.0745>; #declare Col_Amber_06=color rgb<0.8157, 0.6549, 0.2392>; #declare Col_Amber_07=color rgb<0.9882, 0.6941, 0.0431>; #declare Col_Amber_08=color rgb<0.8549, 0.4706, 0.1294>; #declare Col_Amber_09=color rgb<0.5294, 0.2431, 0.1529>; // #### additional glass finishes #### #declare F_Glass5 = finish { specular 0.7 roughness 0.001 ambient 0 diffuse 0 reflection { 0.2, 1.0 fresnel on } conserve_energy } #declare F_Glass6 = finish { specular 0.6 roughness 0.002 ambient 0 diffuse 0.1 brilliance 5 reflection { 0.1, 1.0 fresnel on } conserve_energy } #declare F_Glass7 = finish { specular 0.9 roughness 0.001 ambient 0 diffuse 0 reflection { 0.0, 1.0 fresnel on } conserve_energy } #declare F_Glass8 = finish { specular 0.6 roughness 0.005 ambient 0 diffuse 0.15 brilliance 4 reflection { 0.2, 1.0 fresnel on } conserve_energy } #declare F_Glass9 = finish { specular 0.8 roughness 0.001 ambient 0 diffuse 0 reflection { 0.05, 1.0 } conserve_energy } #declare F_Glass10 = finish { specular 0.6 roughness 0.002 ambient 0 diffuse 0.1 reflection { 0.05, 1.0 } conserve_energy } // #### additional glass interiors #### #declare I_Glass1= interior { ior 1.5 fade_distance 1.0 fade_power 2 } #declare I_Glass2= interior { ior 1.5 fade_distance 0.5 fade_power 1001 } #declare I_Glass3= interior { ior 1.5 fade_distance 1.0 fade_power 1001 } #declare I_Glass4= interior { ior 1.5 fade_distance 2.0 fade_power 1001 } #declare I_Glass_Fade_Sqr1=interior { I_Glass1 } #declare I_Glass_Fade_Exp1=interior { I_Glass2 } #declare I_Glass_Fade_Exp2=interior { I_Glass3 } #declare I_Glass_Fade_Exp3=interior { I_Glass4 } #declare I_Glass_Dispersion1= interior { ior 1.5 dispersion 1.02 fade_distance 1 fade_power 1001 } #declare I_Glass_Dispersion2= interior { ior 1.5 dispersion 1.15 fade_distance 1 fade_power 1001 } #declare I_Glass_Caustics1= interior { ior 1.5 caustics 0.5 fade_distance 1 fade_power 1001 } #declare I_Glass_Caustics2= interior { ior 1.5 caustics 1.0 fade_distance 1 fade_power 1001 } #macro I_Glass_Exp(Distance) ior 1.5 fade_distance Distance fade_power 1001 #end #macro I_Glass_Sqr(Distance) ior 1.5 fade_distance Distance fade_power 2 #end #version Glass_Inc_Temp; #end // Persistence of Vision Ray Tracer version 3.5 Include File // File: glass_old.inc // Last updated: 2001.8.9 // Description: Glass finishes and textures (was glass.inc in versions // prior to 3.5). // Changes in version 3.1: moved refraction and ior to the interior statment. // Use I_Glass in conjunction with each of the finish statments below. // Version 3.5: Renamed file as glass_old.inc. #ifndef(Glass_Old_Inc_Temp) #declare Glass_Old_Inc_Temp=version; #version 3.5; #ifdef(View_POV_Include_Stack) #debug "including glass_old.inc\n" #end #warning "\nDue to changes in version 3.1, you must add interior {I_Glass} to all objects calling glass_old.inc textures and finishes...\n" // Glass Interior #declare I_Glass = interior { ior 1.5 } // Glass Finishes #declare F_Glass1 = finish { specular 1 roughness 0.001 ambient 0 diffuse 0 reflection 0.1 } #declare F_Glass2 = finish { ambient 0 diffuse 0 reflection 0.5 phong 0.3 phong_size 60 } #declare F_Glass3 = finish { ambient 0.1 diffuse 0.1 reflection 0.1 specular 0.8 roughness 0.003 phong 1 phong_size 400 } #declare F_Glass4 = finish { ambient 0.1 diffuse 0.1 reflection .25 specular 1 roughness 0.001 } // Glass Textures // Simple clear glass #declare T_Glass1 = texture { pigment { color rgbf<1.0, 1.0, 1.0, 0.7> } finish { F_Glass1 } } // More like an acrylic plastic #declare T_Glass2 = texture { pigment { color rgbf<1.0, 1.0, 1.0, 1.0> } finish { F_Glass2 } } // An excellent lead crystal glass! #declare T_Glass3 = texture { pigment { color rgbf <0.98, 0.98, 0.98, 0.9> } finish { F_Glass3 } } #declare T_Glass4 = texture { pigment { color rgbf <0.98, 1.0, 0.99, 0.75> } finish { F_Glass4 } } #declare T_Old_Glass= texture { finish { F_Glass4 } pigment { color rgbf <0.8, 0.9, 0.85, 0.85> } } #declare T_Winebottle_Glass= texture { finish { F_Glass4 } pigment { color rgbf <0.4, 0.72, 0.4, 0.6> } } #declare T_Beerbottle_Glass= texture { finish { F_Glass4 } pigment { color rgbf <0.7, 0.5, 0.1, 0.6> } } // A few color variations on Norm's glass // Ruby glass #declare T_Ruby_Glass = texture { finish { F_Glass4 } pigment { color rgbf <0.9, 0.1, 0.2, 0.8> } } #declare T_Green_Glass = texture { pigment { color rgbf <0.8, 1, 0.95, 0.9> } finish { F_Glass3 } } #declare T_Dark_Green_Glass= texture { finish { F_Glass4 } pigment { color rgbf <0.1, 0.7, 0.8, 0.8> } } #declare T_Yellow_Glass= texture { finish { F_Glass4 } pigment { color rgbf <0.8, 0.8, 0.2, 0.8> } } // Orange/Amber glass #declare T_Orange_Glass= texture { finish { F_Glass4 } pigment { rgbf <1.0, 0.5, 0.0, 0.8> } } // Vicks bottle, glass #declare T_Vicksbottle_Glass= texture { finish { F_Glass4 } pigment { color rgbf <0.1, 0.15, 0.5, 0.9> } } #version Glass_Old_Inc_Temp; #end #ifndef(Gold_Inc_Temp) #declare Gold_Inc_Temp=version; #version 3.5; #ifdef(View_POV_Include_Stack) # debug "including golds.inc\n" #end /* Persistence of Vision Raytracer Version 3.1 Gold textures */ #declare GoldBase = <1.00, 0.875, 0.575>; // mine again // This set shifts the color toward orange by subtracting // bluegreen from the base color. #declare CVect1 = GoldBase - <0.00, 0.20, 0.40>; #declare CVect2 = GoldBase - <0.00, 0.15, 0.30>; #declare CVect3 = GoldBase - <0.00, 0.10, 0.20>; #declare CVect4 = GoldBase - <0.00, 0.05, 0.1>; #declare CVect5 = GoldBase - <0.00, 0.00, 0.00>; // Cast CVect as an rgb vector #declare P_Gold1 = rgb CVect1; // back row #declare P_Gold2 = rgb CVect2; #declare P_Gold3 = rgb CVect3; #declare P_Gold4 = rgb CVect4; #declare P_Gold5 = rgb CVect5; // front row // Reflection colors, derived from pigment color, "grayed down" a touch. #declare R_GoldA = P_Gold1 * 0.30 + 0.25; // left column (soft) #declare R_GoldB = P_Gold2 * 0.35 + 0.25; #declare R_GoldC = P_Gold3 * 0.40 + 0.25; #declare R_GoldD = P_Gold4 * 0.45 + 0.25; #declare R_GoldE = P_Gold5 * 0.50 + 0.25; // right column (hard) // Ambient colors, derived from base color #declare A_GoldA = P_Gold1 * 0.12 + 0.1; // left column (soft) #declare A_GoldB = P_Gold2 * 0.10 + 0.1; #declare A_GoldC = P_Gold3 * 0.08 + 0.1; #declare A_GoldD = P_Gold4 * 0.05 + 0.1; #declare A_GoldE = P_Gold5 * 0.02 + 0.1; // right column (hard) // Diffuse values // Calculated as 1 - (ambient+reflective+specular values) #declare D_GoldA = 1-(((R_GoldA.red+R_GoldA.green+R_GoldA.blue)/3) + ((A_GoldA.red+A_GoldA.green+A_GoldA.blue)/3)); #declare D_GoldB = 1-(((R_GoldB.red+R_GoldB.green+R_GoldB.blue)/3) + ((A_GoldB.red+A_GoldB.green+A_GoldB.blue)/3)); #declare D_GoldC = 1-(((R_GoldC.red+R_GoldC.green+R_GoldC.blue)/3) + ((A_GoldC.red+A_GoldC.green+A_GoldC.blue)/3)); #declare D_GoldD = 1-(((R_GoldD.red+R_GoldD.green+R_GoldD.blue)/3) + ((A_GoldD.red+A_GoldD.green+A_GoldD.blue)/3)); #declare D_GoldE = 1-(((R_GoldE.red+R_GoldE.green+R_GoldE.blue)/3) + ((A_GoldE.red+A_GoldE.green+A_GoldE.blue)/3)); #declare D_GoldA = max(D_GoldA, 0); #declare D_GoldB = max(D_GoldB, 0); #declare D_GoldC = max(D_GoldC, 0); #declare D_GoldD = max(D_GoldD, 0); #declare D_GoldE = max(D_GoldE, 0); // #debug "\nReflection colors:" // #debug concat("\nR_GoldA=<", str(R_GoldA.red, 5, 5), "," , // str(R_GoldA.green, 5, 5),"," , // str(R_GoldA.blue, 5, 5), ">") // #debug concat("\nR_GoldB=<", str(R_GoldB.red, 5, 5), "," , // str(R_GoldB.green, 5, 5),"," , // str(R_GoldB.blue, 5, 5), ">") // #debug concat("\nR_GoldC=<", str(R_GoldC.red, 5, 5), "," , // str(R_GoldC.green, 5, 5),"," , // str(R_GoldC.blue, 5, 5), ">") // #debug concat("\nR_GoldD=<", str(R_GoldD.red, 5, 5), "," , // str(R_GoldD.green, 5, 5),"," , // str(R_GoldD.blue, 5, 5), ">") // #debug concat("\nR_GoldE=<", str(R_GoldE.red, 5, 5), "," , // str(R_GoldE.green, 5, 5),"," , // str(R_GoldE.blue, 5, 5), ">") // // #debug "\n\nAmbient colors:" // #debug concat("\nA_GoldA=<", str(A_GoldA.red, 5, 5), "," , // str(A_GoldA.green, 5, 5),"," , // str(A_GoldA.blue, 5, 5), ">") // #debug concat("\nA_GoldB=<", str(A_GoldB.red, 5, 5), "," , // str(A_GoldB.green, 5, 5),"," , // str(A_GoldB.blue, 5, 5), ">") // #debug concat("\nA_GoldC=<", str(A_GoldC.red, 5, 5), "," , // str(A_GoldC.green, 5, 5),"," , // str(A_GoldC.blue, 5, 5), ">") // #debug concat("\nA_GoldD=<", str(A_GoldD.red, 5, 5), "," , // str(A_GoldD.green, 5, 5),"," , // str(A_GoldD.blue, 5, 5), ">") // #debug concat("\nA_GoldE=<", str(A_GoldE.red, 5, 5), "," , // str(A_GoldE.green, 5, 5),"," , // str(A_GoldE.blue, 5, 5), ">") // // // #debug "\n\nDiffuse values:" // #debug concat("\nD_GoldA = ",str(D_GoldA, 5, 5)) // #debug concat("\nD_GoldB = ",str(D_GoldB, 5, 5)) // #debug concat("\nD_GoldC = ",str(D_GoldC, 5, 5)) // #debug concat("\nD_GoldD = ",str(D_GoldD, 5, 5)) // #debug concat("\nD_GoldE = ",str(D_GoldE, 5, 5)) // #debug "\n" #declare M = 1; // Metallic amount //*****Finishes**** // Left column, dullest & darkest #declare F_MetalA = finish { brilliance 2 diffuse D_GoldA ambient A_GoldA reflection R_GoldA metallic M specular 0.20 roughness 1/20 } #declare F_MetalB = finish { brilliance 3 diffuse D_GoldB ambient A_GoldB reflection R_GoldB metallic M specular 0.30 roughness 1/60 } #declare F_MetalC = finish { brilliance 4 diffuse D_GoldC ambient A_GoldC reflection R_GoldC metallic M specular 0.60 roughness 1/80 } #declare F_MetalD = finish { brilliance 5 diffuse D_GoldD ambient A_GoldD reflection R_GoldD metallic M specular 0.70 roughness 1/100 } #declare F_MetalE = finish { brilliance 6 diffuse D_GoldE ambient A_GoldE reflection R_GoldE metallic M specular 0.80 roughness 1/120 } // GOLDS #declare T_Gold_1A = texture { pigment { P_Gold1 } finish { F_MetalA } } #declare T_Gold_1B = texture { pigment { P_Gold1 } finish { F_MetalB } } #declare T_Gold_1C = texture { pigment { P_Gold1 } finish { F_MetalC } } #declare T_Gold_1D = texture { pigment { P_Gold1 } finish { F_MetalD } } #declare T_Gold_1E = texture { pigment { P_Gold1 } finish { F_MetalE } } #declare T_Gold_2A = texture { pigment { P_Gold2 } finish { F_MetalA } } #declare T_Gold_2B = texture { pigment { P_Gold2 } finish { F_MetalB } } #declare T_Gold_2C = texture { pigment { P_Gold2 } finish { F_MetalC } } #declare T_Gold_2D = texture { pigment { P_Gold2 } finish { F_MetalD } } #declare T_Gold_2E = texture { pigment { P_Gold2 } finish { F_MetalE } } #declare T_Gold_3A = texture { pigment { P_Gold3 } finish { F_MetalA } } #declare T_Gold_3B = texture { pigment { P_Gold3 } finish { F_MetalB } } #declare T_Gold_3C = texture { pigment { P_Gold3 } finish { F_MetalC } } #declare T_Gold_3D = texture { pigment { P_Gold3 } finish { F_MetalD } } #declare T_Gold_3E = texture { pigment { P_Gold3 } finish { F_MetalE } } #declare T_Gold_4A = texture { pigment { P_Gold4 } finish { F_MetalA } } #declare T_Gold_4B = texture { pigment { P_Gold4 } finish { F_MetalB } } #declare T_Gold_4C = texture { pigment { P_Gold4 } finish { F_MetalC } } #declare T_Gold_4D = texture { pigment { P_Gold4 } finish { F_MetalD } } #declare T_Gold_4E = texture { pigment { P_Gold4 } finish { F_MetalE } } #declare T_Gold_5A = texture { pigment { P_Gold5 } finish { F_MetalA } } #declare T_Gold_5B = texture { pigment { P_Gold5 } finish { F_MetalB } } #declare T_Gold_5C = texture { pigment { P_Gold5 } finish { F_MetalC } } #declare T_Gold_5D = texture { pigment { P_Gold5 } finish { F_MetalD } } #declare T_Gold_5E = texture { pigment { P_Gold5 } finish { F_MetalE } } //The following #declares are needed for stage_xz.pov #declare T01 = texture { T_Gold_1A } #declare T02 = texture { T_Gold_1B } #declare T03 = texture { T_Gold_1C } #declare T04 = texture { T_Gold_1D } #declare T05 = texture { T_Gold_1E } #declare T06 = texture { T_Gold_2A } #declare T07 = texture { T_Gold_2B } #declare T08 = texture { T_Gold_2C } #declare T09 = texture { T_Gold_2D } #declare T10 = texture { T_Gold_2E } #declare T11 = texture { T_Gold_3A } #declare T12 = texture { T_Gold_3B } #declare T13 = texture { T_Gold_3C } #declare T14 = texture { T_Gold_3D } #declare T15 = texture { T_Gold_3E } #declare T16 = texture { T_Gold_4A } #declare T17 = texture { T_Gold_4B } #declare T18 = texture { T_Gold_4C } #declare T19 = texture { T_Gold_4D } #declare T20 = texture { T_Gold_4E } #declare T21 = texture { T_Gold_5A } #declare T22 = texture { T_Gold_5B } #declare T23 = texture { T_Gold_5C } #declare T24 = texture { T_Gold_5D } #declare T25 = texture { T_Gold_5E } #version Gold_Inc_Temp; #end // Persistence of Vision Raytracer Version 3.5 Scene Description File #ifndef(Logo_Inc_Temp) #declare Logo_Inc_Temp=version; #version 3.5; /* The official POV-Ray Logo Designed by Chris Colefax This logo was the one that won the POV-Ray Logo Contest held and organized by Rune S. Johansen in year 2000 and monitored by the POV-Team. Comment from Chris Colefax: "This logo (or symbol, rather) attempts to encapsulate a number of ideas. Firstly, the symbol represents an eye with a ray being traced from it, capturing the fundamentally visual nature of POV-Ray and the rendering process POV-Ray uses. More obviously, it's a P, and both an O and a V can be seen in it as well, making the symbol specific to (and immediately identifiable with) POV-Ray, rather than raytracing in general. The basic symbol itself is a simple CSG construction composed of five POV-Ray primitives. The simplicity of the symbol means that it can be presented recognisably in a range of ways, from a graphical 2D logo to a full blown rendering, or incorporated discreetly into other designs and images." Prism version and bevel version by Rune S. Johansen. */ #include "shapes.inc" // The original version is made of various objects. #declare Povray_Logo = merge { sphere {2*y, 1} difference { cone {2*y, 1, -4*y, 0} sphere {2*y, 1.4 scale <1,1,2>} } difference { sphere {0, 1 scale <2.6, 2.2, 1>} sphere {0, 1 scale <2.3, 1.8, 2> translate <-0.35, 0, 0>} rotate z*30 translate 2*y } rotate <0, 0, -25> translate <-0.5,-0.35,0> scale 1/4 } // The prism version is not really made of a prism object alone, // but it looks that way. #declare Povray_Logo_Prism = merge { cylinder {-z, z, 1 translate 2*y} difference { prism {-0.9999, 0.9999, 4, <-1,2>, <1,2>, <0,-4>, <-1,2> rotate -90*x} cylinder {-z, z, 1.4 scale <1,0.9,1.1> translate 1.9*y} } difference { cylinder {-z, z, 1 scale <2.6, 2.2, 1>} cylinder {-z, z, 1 scale <2.22, 1.72, 1.1> translate <-0.43, 0, 0>} rotate z*30 translate 2*y } rotate <0, 0, -25> translate <-0.5,-0.35,0> scale <1/4,1/4,1/8> } // The bevel version has its base at the xy plane and // is beveled in 45 degrees in the -z direction. // Intersect the object with a plane to get a flat object // with beveled edges. #declare Povray_Logo_Bevel = merge { cone {0, 1, z, 0 translate 2*y} difference { box {<-0.8,-4,0>, <0.8,0.9,0.7>} object{Supercone(-0.0001*z, 1.4,1.26, 1.0001*z, 2.4,2.26) translate 1.9*y} plane {vrotate( x-z, degrees(atan2(1/6,1))*z), 0 translate -4*y} plane {vrotate(-x-z,-degrees(atan2(1/6,1))*z), 0 translate -4*y} } difference { object{Supercone(0, 2.6,2.2, z, 1.6,1.2)} object{Supercone(-0.0001*z, 2.22,1.72, 1.0001*z, 3.22,2.72) translate -0.43*x} clipped_by { difference { cylinder { 0.0*z, 0.5*z, 1 scale <2.60,2.20,1.0>} cylinder {-0.1*z, 0.6*z, 1 scale <2.22,1.72,1.1> translate -0.43*x} } } rotate z*30 translate 2*y } rotate <0, 0, -25> translate <-0.5,-0.35,0> scale <1,1,-1>/4 } #version Logo_Inc_Temp; #end #declare MarbTeal_Inc_Temp=version; /* Persistence of Vision Raytracer Version 3.1 Teal marble color_map */ #declare M_MarbTeal = color_map { [0.000000 rgb <0.000000, 0.203922, 0.141176>] [0.003922 rgb <0.000000, 0.219608, 0.141176>] [0.007843 rgb <0.000000, 0.235294, 0.141176>] [0.011765 rgb <0.000000, 0.250980, 0.156863>] [0.015686 rgb <0.015686, 0.219608, 0.156863>] [0.019608 rgb <0.015686, 0.235294, 0.156863>] [0.023529 rgb <0.015686, 0.250980, 0.156863>] [0.027451 rgb <0.015686, 0.250980, 0.172549>] [0.031373 rgb <0.015686, 0.266667, 0.172549>] [0.035294 rgb <0.015686, 0.266667, 0.188235>] [0.039216 rgb <0.015686, 0.282353, 0.188235>] [0.043137 rgb <0.015686, 0.282353, 0.203922>] [0.047059 rgb <0.015686, 0.298039, 0.203922>] [0.050980 rgb <0.031373, 0.266667, 0.172549>] [0.054902 rgb <0.031373, 0.266667, 0.188235>] [0.058824 rgb <0.031373, 0.282353, 0.188235>] [0.062745 rgb <0.031373, 0.282353, 0.203922>] [0.066667 rgb <0.031373, 0.298039, 0.188235>] [0.070588 rgb <0.031373, 0.298039, 0.203922>] [0.074510 rgb <0.031373, 0.298039, 0.219608>] [0.078431 rgb <0.031373, 0.313726, 0.203922>] [0.082353 rgb <0.031373, 0.313726, 0.219608>] [0.086275 rgb <0.031373, 0.313726, 0.235294>] [0.090196 rgb <0.031373, 0.329412, 0.235294>] [0.094118 rgb <0.047059, 0.298039, 0.219608>] [0.098039 rgb <0.047059, 0.313726, 0.219608>] [0.101961 rgb <0.047059, 0.313726, 0.235294>] [0.105882 rgb <0.047059, 0.329412, 0.235294>] [0.109804 rgb <0.047059, 0.329412, 0.250980>] [0.113725 rgb <0.047059, 0.345098, 0.235294>] [0.117647 rgb <0.047059, 0.345098, 0.250980>] [0.121569 rgb <0.047059, 0.360784, 0.250980>] [0.125490 rgb <0.047059, 0.360784, 0.266667>] [0.129412 rgb <0.062745, 0.345098, 0.250980>] [0.133333 rgb <0.062745, 0.360784, 0.250980>] [0.137255 rgb <0.062745, 0.360784, 0.266667>] [0.141176 rgb <0.062745, 0.360784, 0.282353>] [0.145098 rgb <0.062745, 0.376471, 0.266667>] [0.149020 rgb <0.062745, 0.376471, 0.282353>] [0.152941 rgb <0.062745, 0.392157, 0.266667>] [0.156863 rgb <0.062745, 0.392157, 0.282353>] [0.160784 rgb <0.062745, 0.392157, 0.298039>] [0.164706 rgb <0.078431, 0.376471, 0.266667>] [0.168627 rgb <0.078431, 0.376471, 0.282353>] [0.172549 rgb <0.078431, 0.376471, 0.298039>] [0.176471 rgb <0.078431, 0.392157, 0.282353>] [0.180392 rgb <0.078431, 0.392157, 0.298039>] [0.184314 rgb <0.078431, 0.392157, 0.313726>] [0.188235 rgb <0.078431, 0.407843, 0.298039>] [0.192157 rgb <0.078431, 0.407843, 0.313726>] [0.196078 rgb <0.078431, 0.423529, 0.313726>] [0.200000 rgb <0.078431, 0.423529, 0.329412>] [0.203922 rgb <0.094118, 0.392157, 0.298039>] [0.207843 rgb <0.094118, 0.392157, 0.313726>] [0.211765 rgb <0.094118, 0.407843, 0.298039>] [0.215686 rgb <0.094118, 0.407843, 0.313726>] [0.219608 rgb <0.094118, 0.407843, 0.329412>] [0.223529 rgb <0.094118, 0.423529, 0.313726>] [0.227451 rgb <0.094118, 0.423529, 0.329412>] [0.231373 rgb <0.094118, 0.423529, 0.345098>] [0.235294 rgb <0.094118, 0.439216, 0.329412>] [0.239216 rgb <0.094118, 0.439216, 0.345098>] [0.243137 rgb <0.094118, 0.439216, 0.360784>] [0.247059 rgb <0.094118, 0.454902, 0.360784>] [0.250980 rgb <0.109804, 0.423529, 0.313726>] [0.254902 rgb <0.109804, 0.423529, 0.329412>] [0.258824 rgb <0.109804, 0.423529, 0.345098>] [0.262745 rgb <0.109804, 0.439216, 0.329412>] [0.266667 rgb <0.109804, 0.439216, 0.345098>] [0.270588 rgb <0.109804, 0.439216, 0.360784>] [0.274510 rgb <0.109804, 0.454902, 0.345098>] [0.278431 rgb <0.109804, 0.454902, 0.360784>] [0.282353 rgb <0.109804, 0.454902, 0.376471>] [0.286275 rgb <0.109804, 0.470588, 0.376471>] [0.290196 rgb <0.125490, 0.439216, 0.345098>] [0.294118 rgb <0.125490, 0.439216, 0.360784>] [0.298039 rgb <0.125490, 0.454902, 0.345098>] [0.301961 rgb <0.125490, 0.454902, 0.360784>] [0.305882 rgb <0.125490, 0.454902, 0.376471>] [0.309804 rgb <0.125490, 0.454902, 0.392157>] [0.313726 rgb <0.125490, 0.470588, 0.360784>] [0.317647 rgb <0.125490, 0.470588, 0.376471>] [0.321569 rgb <0.125490, 0.470588, 0.392157>] [0.325490 rgb <0.125490, 0.486275, 0.392157>] [0.329412 rgb <0.141176, 0.454902, 0.360784>] [0.333333 rgb <0.141176, 0.454902, 0.376471>] [0.337255 rgb <0.141176, 0.470588, 0.376471>] [0.341176 rgb <0.141176, 0.470588, 0.392157>] [0.345098 rgb <0.141176, 0.486275, 0.376471>] [0.349020 rgb <0.141176, 0.486275, 0.392157>] [0.352941 rgb <0.141176, 0.486275, 0.407843>] [0.356863 rgb <0.141176, 0.501961, 0.407843>] [0.360784 rgb <0.141176, 0.501961, 0.423529>] [0.364706 rgb <0.156863, 0.470588, 0.392157>] [0.368627 rgb <0.156863, 0.486275, 0.392157>] [0.372549 rgb <0.156863, 0.486275, 0.407843>] [0.376471 rgb <0.156863, 0.501961, 0.392157>] [0.380392 rgb <0.156863, 0.501961, 0.407843>] [0.384314 rgb <0.156863, 0.501961, 0.423529>] [0.388235 rgb <0.156863, 0.517647, 0.423529>] [0.392157 rgb <0.156863, 0.517647, 0.439216>] [0.396078 rgb <0.172549, 0.486275, 0.407843>] [0.400000 rgb <0.172549, 0.501961, 0.407843>] [0.403922 rgb <0.172549, 0.501961, 0.423529>] [0.407843 rgb <0.172549, 0.501961, 0.439216>] [0.411765 rgb <0.172549, 0.517647, 0.423529>] [0.415686 rgb <0.172549, 0.517647, 0.439216>] [0.419608 rgb <0.172549, 0.517647, 0.454902>] [0.423529 rgb <0.172549, 0.533333, 0.439216>] [0.427451 rgb <0.172549, 0.533333, 0.454902>] [0.431373 rgb <0.188235, 0.501961, 0.423529>] [0.435294 rgb <0.188235, 0.501961, 0.439216>] [0.439216 rgb <0.188235, 0.517647, 0.423529>] [0.443137 rgb <0.188235, 0.517647, 0.439216>] [0.447059 rgb <0.188235, 0.517647, 0.454902>] [0.450980 rgb <0.188235, 0.533333, 0.439216>] [0.454902 rgb <0.188235, 0.533333, 0.454902>] [0.458824 rgb <0.188235, 0.533333, 0.470588>] [0.462745 rgb <0.188235, 0.549020, 0.454902>] [0.466667 rgb <0.188235, 0.549020, 0.470588>] [0.470588 rgb <0.203922, 0.517647, 0.439216>] [0.474510 rgb <0.203922, 0.533333, 0.439216>] [0.478431 rgb <0.203922, 0.533333, 0.454902>] [0.482353 rgb <0.203922, 0.533333, 0.470588>] [0.486275 rgb <0.203922, 0.549020, 0.454902>] [0.490196 rgb <0.203922, 0.549020, 0.470588>] [0.494118 rgb <0.203922, 0.549020, 0.486275>] [0.498039 rgb <0.203922, 0.564706, 0.470588>] [0.501961 rgb <0.203922, 0.564706, 0.486275>] [0.505882 rgb <0.219608, 0.533333, 0.454902>] [0.509804 rgb <0.219608, 0.549020, 0.454902>] [0.513726 rgb <0.219608, 0.549020, 0.470588>] [0.517647 rgb <0.219608, 0.549020, 0.486275>] [0.521569 rgb <0.219608, 0.564706, 0.470588>] [0.525490 rgb <0.219608, 0.564706, 0.486275>] [0.529412 rgb <0.219608, 0.564706, 0.501961>] [0.533333 rgb <0.219608, 0.580392, 0.486275>] [0.537255 rgb <0.219608, 0.580392, 0.501961>] [0.541176 rgb <0.235294, 0.549020, 0.470588>] [0.545098 rgb <0.235294, 0.549020, 0.486275>] [0.549020 rgb <0.235294, 0.564706, 0.470588>] [0.552941 rgb <0.235294, 0.564706, 0.486275>] [0.556863 rgb <0.235294, 0.564706, 0.501961>] [0.560784 rgb <0.235294, 0.580392, 0.486275>] [0.564706 rgb <0.235294, 0.580392, 0.501961>] [0.568627 rgb <0.235294, 0.580392, 0.517647>] [0.572549 rgb <0.235294, 0.596078, 0.501961>] [0.576471 rgb <0.250980, 0.564706, 0.486275>] [0.580392 rgb <0.250980, 0.564706, 0.501961>] [0.584314 rgb <0.250980, 0.580392, 0.486275>] [0.588235 rgb <0.250980, 0.580392, 0.501961>] [0.592157 rgb <0.250980, 0.580392, 0.517647>] [0.596078 rgb <0.250980, 0.596078, 0.501961>] [0.600000 rgb <0.250980, 0.596078, 0.533333>] [0.603922 rgb <0.266667, 0.580392, 0.501961>] [0.607843 rgb <0.266667, 0.596078, 0.517647>] [0.611765 rgb <0.266667, 0.611765, 0.533333>] [0.615686 rgb <0.282353, 0.596078, 0.533333>] [0.619608 rgb <0.282353, 0.611765, 0.517647>] [0.623529 rgb <0.282353, 0.611765, 0.549020>] [0.627451 rgb <0.282353, 0.627451, 0.533333>] [0.631373 rgb <0.298039, 0.611765, 0.533333>] [0.635294 rgb <0.298039, 0.627451, 0.549020>] [0.639216 rgb <0.298039, 0.643137, 0.564706>] [0.643137 rgb <0.313726, 0.611765, 0.549020>] [0.647059 rgb <0.313726, 0.627451, 0.564706>] [0.650980 rgb <0.313726, 0.643137, 0.549020>] [0.654902 rgb <0.313726, 0.643137, 0.580392>] [0.658824 rgb <0.313726, 0.658824, 0.564706>] [0.662745 rgb <0.329412, 0.627451, 0.580392>] [0.666667 rgb <0.329412, 0.643137, 0.564706>] [0.670588 rgb <0.329412, 0.643137, 0.596078>] [0.674510 rgb <0.329412, 0.658824, 0.580392>] [0.678431 rgb <0.345098, 0.643137, 0.580392>] [0.682353 rgb <0.345098, 0.658824, 0.596078>] [0.686275 rgb <0.345098, 0.674510, 0.580392>] [0.690196 rgb <0.345098, 0.674510, 0.611765>] [0.694118 rgb <0.360784, 0.658824, 0.580392>] [0.698039 rgb <0.360784, 0.658824, 0.611765>] [0.701961 rgb <0.360784, 0.674510, 0.596078>] [0.705882 rgb <0.360784, 0.674510, 0.627451>] [0.709804 rgb <0.360784, 0.690196, 0.611765>] [0.713726 rgb <0.376471, 0.658824, 0.596078>] [0.717647 rgb <0.376471, 0.674510, 0.611765>] [0.721569 rgb <0.376471, 0.690196, 0.596078>] [0.725490 rgb <0.376471, 0.690196, 0.627451>] [0.729412 rgb <0.392157, 0.674510, 0.627451>] [0.733333 rgb <0.392157, 0.690196, 0.611765>] [0.737255 rgb <0.392157, 0.690196, 0.643137>] [0.741176 rgb <0.392157, 0.705882, 0.627451>] [0.745098 rgb <0.407843, 0.690196, 0.627451>] [0.749020 rgb <0.407843, 0.705882, 0.643137>] [0.752941 rgb <0.407843, 0.721569, 0.658824>] [0.756863 rgb <0.423529, 0.690196, 0.643137>] [0.760784 rgb <0.423529, 0.705882, 0.627451>] [0.764706 rgb <0.423529, 0.705882, 0.658824>] [0.768627 rgb <0.423529, 0.721569, 0.643137>] [0.772549 rgb <0.423529, 0.721569, 0.674510>] [0.776471 rgb <0.439216, 0.705882, 0.643137>] [0.780392 rgb <0.439216, 0.705882, 0.674510>] [0.784314 rgb <0.439216, 0.721569, 0.658824>] [0.788235 rgb <0.439216, 0.737255, 0.674510>] [0.792157 rgb <0.454902, 0.721569, 0.674510>] [0.796078 rgb <0.454902, 0.737255, 0.658824>] [0.800000 rgb <0.454902, 0.737255, 0.690196>] [0.803922 rgb <0.470588, 0.721569, 0.658824>] [0.807843 rgb <0.470588, 0.721569, 0.690196>] [0.811765 rgb <0.470588, 0.737255, 0.674510>] [0.815686 rgb <0.470588, 0.737255, 0.705882>] [0.819608 rgb <0.470588, 0.752941, 0.690196>] [0.823529 rgb <0.486275, 0.737255, 0.690196>] [0.827451 rgb <0.486275, 0.752941, 0.674510>] [0.831373 rgb <0.486275, 0.752941, 0.705882>] [0.835294 rgb <0.501961, 0.737255, 0.705882>] [0.839216 rgb <0.501961, 0.752941, 0.690196>] [0.843137 rgb <0.501961, 0.752941, 0.721569>] [0.847059 rgb <0.501961, 0.768627, 0.705882>] [0.850980 rgb <0.517647, 0.737255, 0.690196>] [0.854902 rgb <0.517647, 0.752941, 0.705882>] [0.858824 rgb <0.517647, 0.768627, 0.721569>] [0.862745 rgb <0.517647, 0.784314, 0.737255>] [0.866667 rgb <0.533333, 0.768627, 0.705882>] [0.870588 rgb <0.533333, 0.768627, 0.737255>] [0.874510 rgb <0.533333, 0.784314, 0.721569>] [0.878431 rgb <0.549020, 0.768627, 0.721569>] [0.882353 rgb <0.549020, 0.784314, 0.737255>] [0.886275 rgb <0.564706, 0.768627, 0.737255>] [0.890196 rgb <0.564706, 0.784314, 0.752941>] [0.894118 rgb <0.564706, 0.800000, 0.737255>] [0.898039 rgb <0.564706, 0.800000, 0.768627>] [0.901961 rgb <0.580392, 0.800000, 0.752941>] [0.905882 rgb <0.580392, 0.815686, 0.768627>] [0.909804 rgb <0.596078, 0.800000, 0.768627>] [0.913725 rgb <0.596078, 0.815686, 0.752941>] [0.917647 rgb <0.596078, 0.815686, 0.784314>] [0.921569 rgb <0.611765, 0.800000, 0.752941>] [0.925490 rgb <0.611765, 0.815686, 0.768627>] [0.929412 rgb <0.611765, 0.831373, 0.784314>] [0.933333 rgb <0.627451, 0.815686, 0.784314>] [0.937255 rgb <0.627451, 0.831373, 0.800000>] [0.941176 rgb <0.643137, 0.831373, 0.784314>] [0.945098 rgb <0.643137, 0.847059, 0.800000>] [0.949020 rgb <0.658824, 0.815686, 0.784314>] [0.952941 rgb <0.658824, 0.831373, 0.800000>] [0.956863 rgb <0.658824, 0.847059, 0.815686>] [0.960784 rgb <0.674510, 0.847059, 0.800000>] [0.964706 rgb <0.690196, 0.847059, 0.815686>] [0.968627 rgb <0.690196, 0.862745, 0.831373>] [0.972549 rgb <0.705882, 0.847059, 0.831373>] [0.976471 rgb <0.721569, 0.862745, 0.831373>] [0.980392 rgb <0.721569, 0.878431, 0.847059>] [0.984314 rgb <0.737255, 0.862745, 0.847059>] [0.988235 rgb <0.737255, 0.878431, 0.862745>] [0.992157 rgb <0.752941, 0.878431, 0.847059>] [0.996078 rgb <0.768627, 0.878431, 0.862745>] } #version MarbTeal_Inc_Temp; // Persistence of Vision Ray Tracer version 3.5 Include File // File: math.inc // Last updated: 2004.07.23 // Description: This file contains various math macros and functions #ifndef(MATH_INC_TEMP) #declare MATH_INC_TEMP = version; #version 3.5; #ifdef(View_POV_Include_Stack) #debug "including math.inc\n" #end #include "functions.inc" // -------------------------------------------------------- // Statistics macros: (some from variate.inc) // -------------------------------------------------------- // Mean(rewritten, original from basemcr.inc by Margus Ramst) #macro Mean(A) #local N = dimension_size(A,1); #local C = 0; // ( // #while(CMax) #local Max=Val; #end #if (Val=Intervals) #local Index=Index-1; #end #local HistArr[Index][1]=HistArr[Index][1]+1; #local I=I+1; #end #declare HistogramArray=HistArr #end // -------------------------------------------------------- // Trig: // -------------------------------------------------------- #declare sind = function (x) {sin(radians(x))} #declare cosd = function (x) {cos(radians(x))} #declare tand = function (x) {tan(radians(x))} #declare asind = function (x) {degrees(asin(x))} #declare acosd = function (x) {degrees(acos(x))} #declare atan2d = function (x, y) {degrees(atan2(x, y))} // -------------------------------------------------------- // Misc: // -------------------------------------------------------- #declare max3 = function (x, y, z) {max(x,y,z)} #declare min3 = function (x, y, z) {min(x,y,z)} #declare even = function(x) {select(mod(x, 2), 0, 1, 0)} #declare odd = function(x) {select(mod(x, 2), 1, 0, 1)} // Squares the value #declare f_sqr = function (x) {(x*x)} // Returns the sign of a value #declare sgn = function (x) {select(x,-1, 0, 1)} //#declare sgn = function (x) {x/abs(x)} // Range handling // clips a number (x) to the range [Min, Max] ([y, z]). Values above Max return Max, // below Min return Min. #declare clip = function (x, y, z) {min(z, max(x, y))} // Clamps a number (x) to the range [Min, Max] ([y, z]). // Values outside this range wrap around. #declare clamp = function (x, y, z) {mod(x - y, z - y) + select(mod(x - y, z - y), z, y)} // Adjusts input values (x) in the range [0, 1] to output values in range [Rmn, Rmx] ([y, z]). #declare adj_range = function (x, y, z) {x*(z - y) + y} // Adjusts values in a specified range [Rmn, Rmx] to the specified range [Min, Max] #declare adj_range2 = function (x, y, z, _Math_INC_OMn, _Math_INC_OMx) { ((x - y)/(z - y))*(_Math_INC_OMx - _Math_INC_OMn) + _Math_INC_OMn } // Interpolate author: Margus Ramst // Interpolation // GC - global current // GS - global start // GE - global end // TS - target start // TE - target end // Method - interpolation method: // Method = 0 - cosine interpolation // Method > 0 - exponential (1 - linear, etc) #macro Interpolate(GC, GS, GE, TS, TE, Method) (#if(Method!=0) (TS+(TE-TS)*pow((GC-GS)/(GE-GS),Method)) #else #local X=(GC-GS)/(GE-GS); #local F=(1-cos(X*pi))*.5; (TS*(1-F)+TE*F) #end) #end // -------------------------------------------------------- // Vector macros: // -------------------------------------------------------- // Squares the components of a vector #macro VSqr(V) (V*V) #end // Raises the components of a vector to a given power #macro VPow(V, P) #end #macro VPow5D(V, P) #end // Returns true if vectors are equal, otherwise false #macro VEq(V1, V2) (V1.x = V2.x & V1.y = V2.y & V1.z = V2.z) #end #macro VEq5D(V1, V2) ( V1.x = V2.x & V1.y = V2.y & V1.z = V2.z & V1.filter = V2.filter & V1.transmit = V2.transmit) #end // Returns true if vector is <0,0,0>, otherwise false #macro VZero(V1) (V1.x = 0 & V1.y = 0 & V1.z = 0) #end // Returns true if vector is <0,0,0,0,0>, otherwise false #macro VZero5D(V1) (V1.x = 0 & V1.y = 0 & V1.z = 0 & V1.filter = 0 & V1.transmit = 0) #end #macro VLength5D(V) sqrt(V.x*V.x + V.y*V.y + V.z*V.z + V.filter*V.filter + V.transmit*V.transmit) #end #macro VNormalize5D(V) (V/sqrt(V.x*V.x + V.y*V.y + V.z*V.z + V.filter*V.filter + V.transmit*V.transmit)) #end #macro VDot5D(V1, V2) (V1.x*V2.x + V1.y*V2.y + V1.z*V2.z + V1.filter*V2.filter + V1.transmit*V2.transmit) #end // Cosine of angle between V1 and V2 #macro VCos_Angle(V1, V2) vdot(vnormalize(V1), vnormalize(V2)) #end // Angle in radians between V1 and V2 #macro VAngle(V1, V2) acos(min(1, vdot(vnormalize(V1), vnormalize(V2)))) #end // Angle in degrees between V1 and V2 #macro VAngleD(V1, V2) degrees(acos(min(1,vdot(vnormalize(V1), vnormalize(V2))))) #end // VRotation() will find the rotation angle from V1 to V2 // around Axis. Axis should be perpendicular to both V1 // and V2. The output will be in the range between -pi and // pi radians or between -180 degrees and 180 degrees if // you are using the degree version. However, if Axis is // set to <0,0,0> the output will always be positive or // zero, the same result you will get with the VAngle() macros. // Author: Rune S. Johansen #macro VRotation(V1, V2, Axis) (acos(min(vdot(vnormalize(V1),vnormalize(V2)),1)) *(vdot(Axis,vcross(V1,V2))<0?-1:1)) #end #macro VRotationD(V1, V2, Axis) (degrees(acos(min(vdot(vnormalize(V1),vnormalize(V2)),1))) *(vdot(Axis,vcross(V1,V2))<0?-1:1)) #end // Distance between V1 and V2 #macro VDist(V1, V2) vlength(V1 - V2) #end // Returns a vector perpendicular to V // Author: Tor Olav Kristensen #macro VPerp_To_Vector(v0) #if (vlength(v0) = 0) #local vN = <0, 0, 0>; #else #local Dm = min(abs(v0.x), abs(v0.y), abs(v0.z)); #if (abs(v0.z) = Dm) #local vN = vnormalize(vcross(v0, z)); #else #if (abs(v0.y) = Dm) #local vN = vnormalize(vcross(v0, y)); #else #local vN = vnormalize(vcross(v0, x)); #end #end #end vN #end // Returns a vector perpendicular to V1 and V2 #macro VPerp_To_Plane(V1, V2) (vnormalize(vcross(V1, V2))) #end // Find a vector perpendicular to Axis and in the plane of // V1 and Axis. In other words, the new vector is a version // of V1 adjusted to be perpendicular to Axis. #macro VPerp_Adjust(V, Axis) vnormalize(vcross(vcross(Axis, V), Axis)) #end // Projects a vector onto the plane defined by Axis. // Based on code by Ron Parker #macro VProject_Plane(V, Axis) #local A = vnormalize(Axis); (V - vdot(V, A)*A) #end // Projects a vector onto the an axis. // Based on code by Ron Parker #macro VProject_Axis(V, Axis) (Axis*vdot(V, Axis)/vdot(Axis, Axis)) #end // Smallest component of V #macro VMin(V) (min3(V.x, V.y, V.z)) #end // Largest component of V #macro VMax(V) (max3(V.x, V.y, V.z)) #end // Creates a vector going in the direction of the // given vector with the specified length #macro VWith_Len(V, Len) (Len*vnormalize(V)) #end // -------------------------------------------------------- // Vector analysis macros // -------------------------------------------------------- // Authors: Christoph Hormann and Tor Olav Kristensen // Various functions of vector analysis in form of macros // that can be used in user defined functions or expressions // // all macros make use of a constant named // '__Gradient_Fn_Accuracy_' for numerical approximation // of the derivatives. // This constant can be changed with the // 'SetGradientAccuracy()' macro, the default value is 0.001. // // Because vector functions can only be created as pigment // or transform/spline functions and can not be passed as // a macro parameter there is no fn_Curl() function and the // divergence and curl macros use 3 float functions for // defining the vector field. #ifndef (__Gradient_Fn_Accuracy_) #declare __Gradient_Fn_Accuracy_=0.001; #end #macro SetGradientAccuracy(Value) #declare __Gradient_Fn_Accuracy_=abs(Value); #end // macro calculating the gradient of a function // as a function // // Parameters: // __Gradient_Fn: function to calculate the gradient from // // Output: the length of the gradient as a function #macro fn_Gradient(__Gradient_Fn) function { f_r( __Gradient_Fn(x + __Gradient_Fn_Accuracy_, y, z) - __Gradient_Fn(x - __Gradient_Fn_Accuracy_, y, z), __Gradient_Fn(x, y + __Gradient_Fn_Accuracy_, z) - __Gradient_Fn(x, y - __Gradient_Fn_Accuracy_, z), __Gradient_Fn(x, y, z + __Gradient_Fn_Accuracy_) - __Gradient_Fn(x, y, z - __Gradient_Fn_Accuracy_) )/(2*__Gradient_Fn_Accuracy_) } #end // macro calculating the gradient of a function // in one direction as a function // // Parameters: // __Gradient_Fn: function to calculate the gradient from // Dir: direction to calculate the gradient // // Output: the gradient in that direction as a function #macro fn_Gradient_Directional(__Gradient_Fn, Dir) #local Dirx = vnormalize(Dir).x; #local Diry = vnormalize(Dir).y; #local Dirz = vnormalize(Dir).z; function { ( (__Gradient_Fn(x + __Gradient_Fn_Accuracy_, y, z) - __Gradient_Fn(x - __Gradient_Fn_Accuracy_, y, z))*Dirx + (__Gradient_Fn(x, y + __Gradient_Fn_Accuracy_, z) - __Gradient_Fn(x, y - __Gradient_Fn_Accuracy_, z))*Diry + (__Gradient_Fn(x, y, z + __Gradient_Fn_Accuracy_) - __Gradient_Fn(x, y, z - __Gradient_Fn_Accuracy_))*Dirz )/(2*__Gradient_Fn_Accuracy_) } #end // macro calculating the divergence of a (vector) function // as a function // // Parameters: // __Gradient_Fnx, // __Gradient_Fny, // __Gradient_Fnz: x, y and z components of a vector function // // Output: the divergence as a function #macro fn_Divergence(__Gradient_Fnx, __Gradient_Fny, __Gradient_Fnz) function { ( __Gradient_Fnx(x + __Gradient_Fn_Accuracy_, y, z) - __Gradient_Fnx(x - __Gradient_Fn_Accuracy_, y, z)+ __Gradient_Fny(x, y + __Gradient_Fn_Accuracy_, z) - __Gradient_Fny(x, y - __Gradient_Fn_Accuracy_, z)+ __Gradient_Fnz(x, y, z + __Gradient_Fn_Accuracy_) - __Gradient_Fnz(x, y, z - __Gradient_Fn_Accuracy_) )/(2*__Gradient_Fn_Accuracy_) } #end // macro calculating the gradient of a function // as a vector expression // // Parameters: // __Gradient_Fn: function to calculate the gradient from // p0: point where to calculate the gradient // // Output: the gradient as a vector expression #macro vGradient(__Gradient_Fn, p0) #local p0x=p0.x; #local p0y=p0.y; #local p0z=p0.z; ( < __Gradient_Fn(p0x + __Gradient_Fn_Accuracy_, p0y, p0z) - __Gradient_Fn(p0x - __Gradient_Fn_Accuracy_, p0y, p0z), __Gradient_Fn(p0x, p0y + __Gradient_Fn_Accuracy_, p0z) - __Gradient_Fn(p0x, p0y - __Gradient_Fn_Accuracy_, p0z), __Gradient_Fn(p0x, p0y, p0z + __Gradient_Fn_Accuracy_) - __Gradient_Fn(p0x, p0y, p0z - __Gradient_Fn_Accuracy_) >/(2*__Gradient_Fn_Accuracy_) ) #end // macro calculating the curl of a (vector) function // as a vector expression // // Parameters: // __Gradient_Fnx, // __Gradient_Fny, // __Gradient_Fnz: x, y and z components of a vector function // p0: point where to calculate the curl // // Output: the curl as a vector expression #macro vCurl(__Gradient_Fnx, __Gradient_Fny, __Gradient_Fnz, p0) #local p0x=p0.x; #local p0y=p0.y; #local p0z=p0.z; ( < __Gradient_Fnz(p0x, p0y + __Gradient_Fn_Accuracy_, p0z) - __Gradient_Fnz(p0x, p0y - __Gradient_Fn_Accuracy_, p0z) - __Gradient_Fny(p0x, p0y, p0z + __Gradient_Fn_Accuracy_) + __Gradient_Fny(p0x, p0y, p0z - __Gradient_Fn_Accuracy_), __Gradient_Fnx(p0x, p0y, p0z + __Gradient_Fn_Accuracy_) - __Gradient_Fnx(p0x, p0y, p0z - __Gradient_Fn_Accuracy_) - __Gradient_Fnz(p0x + __Gradient_Fn_Accuracy_, p0y, p0z) + __Gradient_Fnz(p0x - __Gradient_Fn_Accuracy_, p0y, p0z), __Gradient_Fny(p0x + __Gradient_Fn_Accuracy_, p0y, p0z) - __Gradient_Fny(p0x - __Gradient_Fn_Accuracy_, p0y, p0z) - __Gradient_Fnx(p0x, p0y + __Gradient_Fn_Accuracy_, p0z) + __Gradient_Fnx(p0x, p0y - __Gradient_Fn_Accuracy_, p0z) >/(2*__Gradient_Fn_Accuracy_) ) #end // macro calculating the divergence of a (vector) function // as a float expression // // Parameters: // __Gradient_Fnx, // __Gradient_Fny, // __Gradient_Fnz: x, y and z components of a vector function // p0: point where to calculate the divergence // // Output: the divergence as a float expression #macro Divergence(__Gradient_Fnx, __Gradient_Fny, __Gradient_Fnz, p0) #local p0x=p0.x; #local p0y=p0.y; #local p0z=p0.z; ( ( __Gradient_Fnx(p0x + __Gradient_Fn_Accuracy_, p0y, p0z) - __Gradient_Fnx(p0x - __Gradient_Fn_Accuracy_, p0y, p0z)+ __Gradient_Fny(p0x, p0y + __Gradient_Fn_Accuracy_, p0z) - __Gradient_Fny(p0x, p0y - __Gradient_Fn_Accuracy_, p0z)+ __Gradient_Fnz(p0x, p0y, p0z + __Gradient_Fn_Accuracy_) - __Gradient_Fnz(p0x, p0y, p0z - __Gradient_Fn_Accuracy_) )/(2*__Gradient_Fn_Accuracy_) ) #end // macro calculating the length of the gradient // of a function as a float expression // // Parameters: // __Gradient_Fn: function to calculate the gradient from // p0: point where to calculate the gradient // // Output: the length of the gradient as a float expression #macro Gradient_Length(__Gradient_Fn, p0) vlength(vGradient( function { __Gradient_Fn(x, y, z) } , p0)) #end // macro calculating the gradient of a function // in one direction as a float expression // // Parameters: // __Gradient_Fn: function to calculate the gradient from // p0: point where to calculate the gradient // Dir: direction to calculate the gradient // // Output: the gradient in that direction as a float expression #macro Gradient_Directional(__Gradient_Fn, p0, Dir) vdot( vGradient( function { __Gradient_Fn(x, y, z) }, p0), vnormalize(Dir) ) #end #version MATH_INC_TEMP; #end//math.inc // Persistence Of Vision Ray Tracer Include File // --------------------------------------------- // File: @(#)mechsim.inc // Description: mechanics simulation include file - version 0.4 // Features demonstrated: mechsim // Creation Date: $ August 2002 $ // Last modified: $ 27 May 2005, 16:34:33 $ // Author: Christoph Hormann // // This include file is part of the MechSim patch in MegaPOV // Like the patch it is subject to the conditions in povlegal.doc // that comes with MegaPOV No part of it may be used outside POV-Ray // without permission // #ifdef(MECHSIM_Inc_Temp) // do nothing #else #declare MECHSIM_Inc_Temp = version; #ifdef(View_POV_Include_Stack) # debug "including mechsim.inc\n" #end #version unofficial megapov 1.2; #include "math.inc" #include "transforms.inc" // ####################################################################################### // constants // ####################################################################################### #declare MSIM_INCLUDE_VERSION=0.4; #declare MECHSIM_METHOD_EULER=1; #declare MECHSIM_METHOD_HEUN=2; #declare MECHSIM_METHOD_RUNGE_KUTTA4=3; #declare MECHSIM_METHOD_GRADIENT=4; #declare MECHSIM_COLLISION_NONE=0; #declare MECHSIM_COLLISION_ALL=1; #declare MECHSIM_COLLISION_GROUP=2; #declare MECHSIM_ENV_METHOD_FORCE=1; #declare MECHSIM_ENV_METHOD_IMPACT=2; #declare MECHSIM_COLLISION_BOUNDING_NO=0; #declare MECHSIM_COLLISION_BOUNDING_AUTO=1; #declare MECHSIM_COLLISION_BOUNDING_BOX=2; #declare MECHSIM_COLLISION_BOUNDING_HASH=3; #declare No_Trans=transform{} #declare No_Fixed=function(x, y, z) {-1} #declare No_Attach=function(x, y, z) {-1} #declare No_Force=function(x, y, z) {-1} // ####################################################################################### // global parameters // ####################################################################################### #ifndef (MSim_File_Decimals) #declare MSim_File_Decimals=12; #end #ifndef (MSim_Test_Render) #declare MSim_Test_Render=false; #end #ifndef (MSim_Tex_N) #declare MSim_Tex_N= texture { pigment { color rgb <0.8,0.8,1.0> } finish{ diffuse 0.3 ambient 0.0 specular 0.6 #if (!MSim_Test_Render) reflection { 0.8 metallic } #end conserve_energy } } #end #ifndef (MSim_Tex_C) #declare MSim_Tex_C= texture { pigment { color rgb <1, 0.5, 0.1> } finish{ diffuse 0.3 ambient 0.0 specular 0.6 #if (!MSim_Test_Render) reflection { 0.8 metallic } #end conserve_energy } } #end #ifndef (MSim_Tex_Mesh) #declare MSim_Tex_Mesh= texture { pigment { color rgb <0.4, 0.3, 1> } finish{ diffuse 0.3 ambient 0.0 specular 0.6 #if (!MSim_Test_Render) reflection { 0.8 metallic } #end conserve_energy } } #end #ifndef (fn_Stress_CM) #declare fn_Stress_CM= function { pigment { gradient x color_map { [ 0.00 color rgb<0.450, 0.750, 0.620> ] [ 0.25 color rgb<0.256, 0.430, 1.000> ] [ 0.50 color rgb<0.000, 0.000, 0.441> ] [ 0.75 color rgb<1.000, 0.456, 0.456> ] [ 1.00 color rgb<0.900, 0.800, 0.000> ] } } } #end // ======================================================================================= // Vector_Function() // // generates a pigment function from three float functions // representing the x, y and z directions // // Parameters: // Fn_X, Fn_Y, Fn_Z - three user defined functions // // The way this macro works makes it necessary to have a limited range for the // function values. Vector_Function() is a wrapper macro for // Vector_Function_Range() using a default range of 1e6. If necessary this can be // changed by declaring a different value for MSim_Fn_Range before including // 'mechsim.inc'. // // ======================================================================================= #ifndef (MSim_Fn_Range) #declare MSim_Fn_Range=1e6; #end #macro Vector_Function_Range(Fn_X, Fn_Y, Fn_Z, Range) #local PigX= pigment { function { 0.5+Fn_X(x, y, z)*(0.5/Range) } color_map { [0.0 color rgb -3*Range*x ] [0.5 color rgb 0 ] [1.0 color rgb 3*Range*x ] } } #local PigY= pigment { function { 0.5+Fn_Y(x, y, z)*(0.5/Range) } color_map { [0.0 color rgb -3*Range*y ] [0.5 color rgb 0 ] [1.0 color rgb 3*Range*y ] } } #local PigZ= pigment { function { 0.5+Fn_Z(x, y, z)*(0.5/Range) } color_map { [0.0 color rgb -3*Range*z ] [0.5 color rgb 0 ] [1.0 color rgb 3*Range*z ] } } function { pigment { average pigment_map { [1 PigX] [1 PigY] [1 PigZ] } } } #end #macro Vector_Function(Fn_X, Fn_Y, Fn_Z) Vector_Function_Range( function { Fn_X(x, y, z) }, function { Fn_Y(x, y, z) }, function { Fn_Z(x, y, z) }, MSim_Fn_Range ) #end // ####################################################################################### // Object diplay macros // ####################################################################################### // ======================================================================================= // MechSim_Show_Objects_X() // // generates objects representing parts of the simulation topology // this variant also shows viscoelastic connections // // Parameters: // Start_Mass_Index - index of the first mass that should be displayed. // Should be stored when the topology is generated. // Start_Connection_Index - index of the first connection // Start_VE_Index - index of the first viscoelastic connection // Start_Face_Index - index of the first face // End_Mass_Index - index of the last mass that should be displayed. // if <0 all masses until the last are displayed. // End_Connection_Index - index of the last connection that should be displayed. // if <0 all connections until the last are displayed. // End_VE_Index - index of the last viscoelastic connection that should be displayed. // if <0 all viscoelastic connections until the last are displayed. // End_Face_Index - index of the last face that should be displayed. // if <0 all faces until the last are displayed. // Connect_Rad - Radius to use for the connections, values <0 lead // to using 0.4*mass radius. // Show_Faces - Only generate a mesh from the faces instead of // cylinders and spheres. // Stress_Fact - if >0 the connections are textured to visualize // the stress. Values are scaled with this factor. // File_Name - string, if length is >0 the objects are written to a // file with that name in addition // // ======================================================================================= #macro MechSim_Show_Objects_X(Start_Mass_Index, Start_Connection_Index, Start_VE_Index, Start_Face_Index, End_Mass_Index, End_Connection_Index, End_VE_Index, End_Face_Index, Connect_Rad, Show_Faces, Stress_Fact, File_Name) object { #if (End_Mass_Index<0) #local End_Mass=mechsim:mass_count; #else #local End_Mass=End_Mass_Index; #end #if (End_Connection_Index<0) #local End_Connection=mechsim:connection_count; #else #local End_Connection=End_Connection_Index; #end #if (End_VE_Index<0) #local End_VE=mechsim:viscoelastic_count; #else #local End_VE=End_VE_Index; #end #if (End_Face_Index<0) #local End_Face=mechsim:face_count; #else #local End_Face=End_Face_Index; #end #if (strlen(File_Name)=0) #local Write_File=false; #debug "Generating Objects..." #else #local Write_File=true; #fopen FILE File_Name write #if (Show_Faces) #write (FILE, "// simulation topology objects (",str(End_Face-Start_Face_Index,0,0)," faces)\n") #else #if (Connect_Rad != 0) #write (FILE, "// simulation topology objects (",str(End_Mass-Start_Mass_Index,0,0)," masses, ", str(End_VE-Start_VE_Index,0,0)," viscoelastic connections, ", str(End_Connection-Start_Connection_Index,0,0)," connections)\n") #else #write (FILE, "// simulation topology objects (",str(End_Mass-Start_Mass_Index,0,0)," masses)\n") #end #end #write (FILE, "// written by MechSim include file version ",str(MSIM_INCLUDE_VERSION,1,1),"\n\n") #if (Stress_Fact>0) #write (FILE, "#local Fin_Stress=\n") #write (FILE, " finish {\n") #write (FILE, " specular 0.3\n") #write (FILE, " diffuse 0.7\n") #write (FILE, " }\n\n") #end #debug concat("Generating Objects (writing to file ",File_Name,")...") #end #if (!Show_Faces) #if ((End_Mass>Start_Mass_Index) | (End_Connection>Start_Connection_Index) | (End_VE>Start_VE_Index)) #if ((End_Mass>Start_Mass_Index) & ((End_Connection>Start_Connection_Index) | (End_VE>Start_VE_Index))) union { #if (Write_File) #write (FILE, " union {\n") #end #else object { #if (Write_File) #write (FILE, " object {\n") #end #end #if (End_Mass>Start_Mass_Index) #if (End_Mass>Start_Mass_Index+1) union { #if (Write_File) #write (FILE, " union {\n") #end #else object { #if (Write_File) #write (FILE, " object {\n") #end #end #local Cnt=Start_Mass_Index; #while (Cnt, ", str(mechsim:mass(Cnt):radius,0,MSim_File_Decimals), " }\n") #end #local Cnt=Cnt+1; #end texture { MSim_Tex_N } } #if (Write_File) #write (FILE, " texture { MSim_Tex_N }\n }\n") #end #end #if (End_Connection>Start_Connection_Index) #if (Connect_Rad != 0) #if (End_Connection>Start_Connection_Index+1) union { #if (Write_File) #write (FILE, " union {\n") #end #else object { #if (Write_File) #write (FILE, " object {\n") #end #end #local Cnt=Start_Connection_Index; #while (Cnt0.0001) cylinder { mechsim:mass(mechsim:connection(Cnt):index1):position, mechsim:mass(mechsim:connection(Cnt):index2):position, #if (Write_File) #write (FILE, " cylinder {<",vstr(3,mechsim:mass(mechsim:connection(Cnt):index1):position,",",0,MSim_File_Decimals), ">, <", vstr(3,mechsim:mass(mechsim:connection(Cnt):index2):position,",",0,MSim_File_Decimals), ">, ") #end #if (Connect_Rad<0) #local Radius=mechsim:mass(mechsim:connection(Cnt):index1):radius*0.4; #else #local Radius=Connect_Rad; #end Radius #if (Write_File) #write (FILE, str(Radius,0,MSim_File_Decimals), " ") #end #if (Stress_Fact>0) #local Stress=((Dist-mechsim:connection(Cnt):length)/mechsim:connection(Cnt):length)*Stress_Fact + 0.5; #local Stress=max(0.0, min(1.0, Stress)); texture { pigment { color fn_Stress_CM(Stress, 0, 0) } finish { specular 0.3 diffuse 0.7 } } #if (Write_File) #write (FILE, "texture{pigment{ color rgb <",vstr(3,fn_Stress_CM(Stress,0,0),",",0,4), "> }finish{Fin_Stress}} ") #end #end } #if (Write_File) #write (FILE, "}\n") #end #end #local Cnt=Cnt+1; #end #if (Stress_Fact<=0) texture { MSim_Tex_C } #if (Write_File) #write (FILE, " texture { MSim_Tex_C }\n") #end #end } #if (Write_File) #write (FILE, " }\n") #end #end #end #if (End_VE>Start_VE_Index) #if (Connect_Rad != 0) #if (End_VE>Start_VE_Index+1) union { #if (Write_File) #write (FILE, " union {\n") #end #else object { #if (Write_File) #write (FILE, " object {\n") #end #end #local Cnt=Start_VE_Index; #while (Cnt0.0001) cylinder { mechsim:mass(mechsim:viscoelastic(Cnt):index1):position, mechsim:mass(mechsim:viscoelastic(Cnt):index2):position, #if (Write_File) #write (FILE, " cylinder {<",vstr(3,mechsim:mass(mechsim:viscoelastic(Cnt):index1):position,",",0,MSim_File_Decimals), ">, <", vstr(3,mechsim:mass(mechsim:viscoelastic(Cnt):index2):position,",",0,MSim_File_Decimals), ">, ") #end #if (Connect_Rad<0) #local Radius=mechsim:mass(mechsim:viscoelastic(Cnt):index1):radius*0.4; #else #local Radius=Connect_Rad; #end Radius #if (Write_File) #write (FILE, str(Radius,0,MSim_File_Decimals), " ") #end #if (Stress_Fact>0) #local Stress=((Dist-mechsim:viscoelastic(Cnt):length)/mechsim:viscoelastic(Cnt):length)*Stress_Fact + 0.5; #local Stress=max(0.0, min(1.0, Stress)); texture { pigment { color fn_Stress_CM(Stress, 0, 0) } finish { specular 0.3 diffuse 0.7 } } #if (Write_File) #write (FILE, "texture{pigment{ color rgb <",vstr(3,fn_Stress_CM(Stress,0,0),",",0,4), "> }finish{Fin_Stress}} ") #end #end } #if (Write_File) #write (FILE, "}\n") #end #end #local Cnt=Cnt+1; #end #if (Stress_Fact<=0) texture { MSim_Tex_C } #if (Write_File) #write (FILE, " texture { MSim_Tex_C }\n") #end #end } #if (Write_File) #write (FILE, " }\n") #end #end #end } #if (Write_File) #write (FILE, "}\n") #end #end #else #if (mechsim:face_count) mesh { #if (Write_File) #write (FILE, "mesh {\n") #end #local Cnt=Start_Face_Index; #while (Cnt, <", vstr(3,mechsim:mass(mechsim:face(Cnt):index2):position,",",0,MSim_File_Decimals), ">, <", vstr(3,mechsim:mass(mechsim:face(Cnt):index3):position,",",0,MSim_File_Decimals), "> }\n") #end #local Cnt=Cnt+1; #end texture { MSim_Tex_Mesh } } #if (Write_File) #write (FILE, "}\n") #end #end #end #if (Write_File) #fclose FILE #end #debug "Done\n" } #end // ======================================================================================= // MechSim_Show_Objects() // // generates objects representing parts of the simulation topology // // Parameters: // Start_Mass_Index - index of the first mass that should be displayed. // Should be stored when the topology is generated. // Start_Connection_Index - index of the first connection // Start_Face_Index - index of the first face // End_Mass_Index - index of the last mass that should be displayed. // if <0 all masses until the last are displayed. // End_Connection_Index - index of the last connection that should be displayed. // if <0 all connections until the last are displayed. // End_Face_Index - index of the last face that should be displayed. // if <0 all faces until the last are displayed. // Connect_Rad - Radius to use for the connections, values <0 lead // to using 0.4*mass radius. // Show_Faces - Only generate a mesh from the faces instead of // cylinders and spheres. // Stress_Fact - if >0 the connections are textured to visualize // the stress. Values are scaled with this factor. // File_Name - string, if length is >0 the objects are written to a // file with that name in addition // // ======================================================================================= #macro MechSim_Show_Objects(Start_Mass_Index, Start_Connection_Index, Start_Face_Index, End_Mass_Index, End_Connection_Index, End_Face_Index, Connect_Rad, Show_Faces, Stress_Fact, File_Name) MechSim_Show_Objects_X( Start_Mass_Index, Start_Connection_Index, 0, Start_Face_Index, End_Mass_Index, End_Connection_Index, 0, End_Face_Index, Connect_Rad, Show_Faces, Stress_Fact, File_Name ) #end // ======================================================================================= // MechSim_Show_All_Objects() // // like MechSim_Show_Objects() but showing all elements of the simulation // // Parameters: // Connect_Rad - Radius to use for the connections, values <0 lead to using // 0.4*mass radius // Show_Faces - Only generate a mesh from the faces instead of // cylinders and spheres // Stress_Fact - if >0 the connections are textured to visualize the stress. // values are scaled with this factor // File_Name - string, if length is >0 the objects are written to a // file with that name in addition // // ======================================================================================= #macro MechSim_Show_All_Objects(Connect_Rad, Show_Faces, Stress_Fact, File_Name) MechSim_Show_Objects_X(0,0,0,0, -1, -1, -1, -1, Connect_Rad, Show_Faces, Stress_Fact, File_Name) #end // ======================================================================================= // MechSim_Show_All_Default() // // like MechSim_Show_All_Objects() but using reasonable defaults for parameters // // ======================================================================================= #macro MechSim_Show_All_Default() #if (mechsim:face_count) MechSim_Show_Objects_X(0,0,0,0, -1, -1, -1, -1, -1, true, -1, "") #else MechSim_Show_Objects_X(0,0,0,0, -1, -1, -1, -1, -1, false, -1, "") #end #end // ======================================================================================= // MechSim_Show_Patch() macro // // generating a mesh corresponding to the topology generated by a // MechSim_Generate_Patch() macro // // Parameters: // Start_Face_Index - index of the first face that's part of the patch. Should // be stored when the patch is generated // XSize, YSize - Size of the patch, number of nodes in x- and y-direction // Smooth - boolean value, if true normal vectors are generated // UV - boolean value, if true UV-coordinates are generated // (from 0 to 1 in x-direction) // Stress_Fact - if >0 the mesh is textured to visualize the stress. // values are scaled with this factor // File_Name - string, if length is >0 the mesh is written to a file // with that name in addition // // ======================================================================================= #macro MechSim_Show_Patch(Start_Face_Index, XSize, YSize, Smooth, UV, Stress_Fact, File_Name) #if ((mechsim:face_count-Start_Face_Index)>0) #if (strlen(File_Name)=0) #local Write_File=false; #debug "Generating Patch Triangle Mesh..." #else #local Write_File=true; #fopen FILE File_Name write #write (FILE, "// rectangular patch mesh (",str(XSize,0,0),"x",str(YSize,0,0)," vertices)\n") #write (FILE, "// written by MechSim include file version ",str(MSIM_INCLUDE_VERSION,1,1),"\n\n") #write (FILE, "mesh2 {\n\n") #debug concat("Generating Patch Triangle Mesh (writing to file ",File_Name,")...") #end #local Start_Mass_Index = mechsim:face(Start_Face_Index):index1; #if (abs(Stress_Fact)>0) #local Vertex_Mult=array[XSize*YSize] #local Vertex_Stress=array[XSize*YSize] #local Vertex_Text=array[XSize*YSize] #if (Write_File) #write (FILE, " #local Vertex_Text=array[",str(XSize*YSize,0,0),"]\n") #write (FILE, " #local Fin_Stress=\n") #write (FILE, " finish {\n") #write (FILE, " specular 0.3\n") #write (FILE, " diffuse 0.7\n") #write (FILE, " }\n\n") #end #local Cnt=0; #while (Cnt < XSize*YSize) #local Vertex_Mult[Cnt]=0; #local Vertex_Stress[Cnt]=0; #local Cnt=Cnt+1; #end #local Cnt=0; #while (Cnt < mechsim:connection_count) #if ((mechsim:connection(Cnt):index1 >= Start_Mass_Index) & (mechsim:connection(Cnt):index2 >= Start_Mass_Index) & (mechsim:connection(Cnt):index1 < Start_Mass_Index+(XSize*YSize)) & (mechsim:connection(Cnt):index2 < Start_Mass_Index+(XSize*YSize))) #local Dist = vlength(mechsim:mass(mechsim:connection(Cnt):index1):position- mechsim:mass(mechsim:connection(Cnt):index2):position); #local Stress=((Dist-mechsim:connection(Cnt):length)/mechsim:connection(Cnt):length)*Stress_Fact + 0.5; #local Vertex_Stress[mechsim:connection(Cnt):index1-Start_Mass_Index]= Vertex_Stress[mechsim:connection(Cnt):index1-Start_Mass_Index]+max(0.0, min(1.0, Stress)); #local Vertex_Mult[mechsim:connection(Cnt):index1-Start_Mass_Index]= Vertex_Mult[mechsim:connection(Cnt):index1-Start_Mass_Index]+1; #local Vertex_Stress[mechsim:connection(Cnt):index2-Start_Mass_Index]= Vertex_Stress[mechsim:connection(Cnt):index2-Start_Mass_Index]+max(0.0, min(1.0, Stress)); #local Vertex_Mult[mechsim:connection(Cnt):index2-Start_Mass_Index]= Vertex_Mult[mechsim:connection(Cnt):index2-Start_Mass_Index]+1; #end #local Cnt=Cnt+1; #end #end #if (Write_File) #write (FILE, " vertex_vectors {\n") #write (FILE, " ",str(XSize*YSize,0,0)) #end mesh2 { vertex_vectors { (XSize*YSize) #local Cnt=Start_Mass_Index; #while (Cnt < XSize*YSize + Start_Mass_Index) , mechsim:mass(Cnt):position #if (Write_File) #write (FILE, ",\n <",vstr(3,mechsim:mass(Cnt):position,",",0,MSim_File_Decimals), ">") #end #local Cnt=Cnt+1; #end } #if (Write_File) #write (FILE, "\n }\n") #end #if (Smooth) #if (Write_File) #write (FILE, " normal_vectors {\n") #write (FILE, " ",str(XSize*YSize,0,0)) #end normal_vectors { (XSize*YSize) #local Cnt=Start_Mass_Index; #while (Cnt < XSize*YSize + Start_Mass_Index) , #local Pos=; #if (Pos.x=0) #if (Pos.y=0) #local Norm=vcross(mechsim:mass(Cnt+1):position-mechsim:mass(Cnt):position, mechsim:mass(Cnt+XSize):position-mechsim:mass(Cnt):position); #else #if (Pos.y=YSize-1) #local Norm=vcross(mechsim:mass(Cnt+1):position-mechsim:mass(Cnt):position, mechsim:mass(Cnt):position-mechsim:mass(Cnt-XSize):position); #else /* Pos.y middle */ #local Norm=vcross(mechsim:mass(Cnt+1):position-mechsim:mass(Cnt):position, mechsim:mass(Cnt+XSize):position-mechsim:mass(Cnt-XSize):position); #end #end #else #if (Pos.x=XSize-1) #if (Pos.y=0) #local Norm=vcross(mechsim:mass(Cnt):position-mechsim:mass(Cnt-1):position, mechsim:mass(Cnt+XSize):position-mechsim:mass(Cnt):position); #else #if (Pos.y=YSize-1) #local Norm=vcross(mechsim:mass(Cnt):position-mechsim:mass(Cnt-1):position, mechsim:mass(Cnt):position-mechsim:mass(Cnt-XSize):position); #else /* Pos.y middle */ #local Norm=vcross(mechsim:mass(Cnt):position-mechsim:mass(Cnt-1):position, mechsim:mass(Cnt+XSize):position-mechsim:mass(Cnt-XSize):position); #end #end #else /* Pos.x middle */ #if (Pos.y=0) #local Norm=vcross(mechsim:mass(Cnt+1):position-mechsim:mass(Cnt-1):position, mechsim:mass(Cnt+XSize):position-mechsim:mass(Cnt):position); #else #if (Pos.y=YSize-1) #local Norm=vcross(mechsim:mass(Cnt+1):position-mechsim:mass(Cnt-1):position, mechsim:mass(Cnt):position-mechsim:mass(Cnt-XSize):position); #else /* Pos.y and Pos.x middle */ #local Norm=vcross(mechsim:mass(Cnt+1):position-mechsim:mass(Cnt-1):position, mechsim:mass(Cnt+XSize):position-mechsim:mass(Cnt-XSize):position); #end #end #end #end Norm #if (Write_File) #write (FILE, ",\n <",vstr(3,Norm,",",0,MSim_File_Decimals), ">") #end #local Cnt=Cnt+1; #end } #if (Write_File) #write (FILE, "\n }\n") #end #end #if (UV) #if (Write_File) #write (FILE, " uv_vectors {\n") #write (FILE, " ",str(XSize*YSize,0,0)) #end uv_vectors { (XSize*YSize) #local Cnt=Start_Mass_Index; #while (Cnt < XSize*YSize + Start_Mass_Index) , #local UV_Pos=/(XSize-1); UV_Pos #if (Write_File) #write (FILE, ",\n <",vstr(2,UV_Pos,",",0,MSim_File_Decimals), ">") #end #local Cnt=Cnt+1; #end } #if (Write_File) #write (FILE, "\n }\n") #end #end #if (abs(Stress_Fact)>0) #if (Write_File) #write (FILE, " texture_list {\n") #write (FILE, " ",str(XSize*YSize,0,0)) #end texture_list { (XSize*YSize) #local Cnt=0; #while (Cnt < XSize*YSize) #local Vertex_Text[Cnt]= texture { pigment { color fn_Stress_CM(Vertex_Stress[Cnt]/Vertex_Mult[Cnt], 0, 0) } finish { specular 0.3 diffuse 0.7 } } , texture { Vertex_Text[Cnt] } #if (Write_File) #write (FILE, "\n #local Vertex_Text[",str(Cnt,0,0),"]=texture{pigment{ color rgb <", vstr(3, fn_Stress_CM(Vertex_Stress[Cnt]/Vertex_Mult[Cnt],0,0),",",0,4), "> }finish{Fin_Stress}}\n") #write (FILE, " , texture { Vertex_Text[",str(Cnt,0,0),"] }") #end #local Cnt=Cnt+1; #end } #if (Write_File) #write (FILE, "\n }\n") #end #end #if (Write_File) #write (FILE, " face_indices {\n") #write (FILE, " ",str((XSize-1)*(YSize-1)*2,0,0)) #end face_indices { (XSize-1)*(YSize-1)*2 #local Cnt=Start_Face_Index; #while (Cnt< (XSize-1)*(YSize-1)*2 + Start_Face_Index) , #if (Write_File) #write (FILE, ",\n <",vstr(3,,",",0,0), ">") #end #if (Stress_Fact>0) , mechsim:face(Cnt):index1-Start_Mass_Index, mechsim:face(Cnt):index2-Start_Mass_Index, mechsim:face(Cnt):index3-Start_Mass_Index #if (Write_File) #write (FILE, ", ",vstr(3,,",",0,0)) #end #end #local Cnt=Cnt+1; #end } //texture { MSim_Tex_Mesh } } #if (Write_File) #write (FILE, "\n }\n}\n") #fclose FILE #end #end #debug "Done\n" #end // ======================================================================================= // MechSim_Show_Grid() macro // // generating a mesh for the outer surface of a grid generated with the // MechSim_Generate_Grid() macro (with 'Faces' parameter true) // // Parameters: // Start_Face_Index - index of the first face that's part of the patch. Should // be stored when the patch is generated // XSize, YSize - Size of the patch, number of nodes in x- and y-direction // Smooth - boolean value, if true normal vectors are generated // UV - boolean value, if true UV-coordinates are generated // (from 0 to 1 in x-direction) // Stress_Fact - if >0 the mesh is textured to visualize the stress. // values are scaled with this factor // File_Name - string, if length is >0 the mesh is written to a file // with that name in addition // // ======================================================================================= #macro MechSim_Show_Grid(Start_Face_Index, XSize, YSize, ZSize, Smooth, UV, Stress_Fact, File_Name) #local FCount=(XSize-1)*(YSize-1)*4 + (XSize-1)*(ZSize-1)*4 + (ZSize-1)*(YSize-1)*4; #if ((mechsim:face_count-Start_Face_Index)>=FCount) #if (strlen(File_Name)=0) #local Write_File=false; #debug "Generating Grid Surface Triangle Mesh...\n" #else #local Write_File=true; #fopen FILE File_Name write #write (FILE, "// grid mesh (",str(XSize,0,0),"x",str(YSize,0,0),"x",str(ZSize,0,0)," vertices)\n") #write (FILE, "// written by MechSim include file version ",str(MSIM_INCLUDE_VERSION,1,1),"\n\n") #debug concat("Generating Grid Triangle Mesh (writing to file ",File_Name,")...\n") #end #local Start_Mass_Index = mechsim:face(Start_Face_Index):index1; #local Count=(XSize*YSize*ZSize); #local EPS=1e-6; #if (abs(Stress_Fact)>0) #local Vertex_Mult=array[XSize*YSize*ZSize] #local Vertex_Stress=array[XSize*YSize*ZSize] #local Vertex_Text=array[XSize*YSize*ZSize] #if (Write_File) #write (FILE, " #local Vertex_Text=array[",str(XSize*YSize*ZSize,0,0),"]\n") #write (FILE, " #local Fin_Stress=\n") #write (FILE, " finish {\n") #write (FILE, " specular 0.3\n") #write (FILE, " diffuse 0.7\n") #write (FILE, " }\n\n") #end #local Cnt=0; #while (Cnt < Count) #local Vertex_Mult[Cnt]=0; #local Vertex_Stress[Cnt]=0; #local Cnt=Cnt+1; #end #local Cnt=0; #while (Cnt < mechsim:viscoelastic_count) #if ((mechsim:viscoelastic(Cnt):index1 >= Start_Mass_Index) & (mechsim:viscoelastic(Cnt):index2 >= Start_Mass_Index) & (mechsim:viscoelastic(Cnt):index1 < Start_Mass_Index+Count) & (mechsim:viscoelastic(Cnt):index2 < Start_Mass_Index+Count)) #local Dist = vlength(mechsim:mass(mechsim:viscoelastic(Cnt):index1):position- mechsim:mass(mechsim:viscoelastic(Cnt):index2):position); #local Stress=((Dist-mechsim:viscoelastic(Cnt):length)/mechsim:viscoelastic(Cnt):length)*Stress_Fact + 0.5; #local Vertex_Stress[mechsim:viscoelastic(Cnt):index1-Start_Mass_Index]= Vertex_Stress[mechsim:viscoelastic(Cnt):index1-Start_Mass_Index]+max(0.0, min(1.0, Stress)); #local Vertex_Mult[mechsim:viscoelastic(Cnt):index1-Start_Mass_Index]= Vertex_Mult[mechsim:viscoelastic(Cnt):index1-Start_Mass_Index]+1; #local Vertex_Stress[mechsim:viscoelastic(Cnt):index2-Start_Mass_Index]= Vertex_Stress[mechsim:viscoelastic(Cnt):index2-Start_Mass_Index]+max(0.0, min(1.0, Stress)); #local Vertex_Mult[mechsim:viscoelastic(Cnt):index2-Start_Mass_Index]= Vertex_Mult[mechsim:viscoelastic(Cnt):index2-Start_Mass_Index]+1; #end #local Cnt=Cnt+1; #end #local Cnt=0; #while (Cnt < mechsim:connection_count) #if ((mechsim:connection(Cnt):index1 >= Start_Mass_Index) & (mechsim:connection(Cnt):index2 >= Start_Mass_Index) & (mechsim:connection(Cnt):index1 < Start_Mass_Index+Count) & (mechsim:connection(Cnt):index2 < Start_Mass_Index+Count)) #local Dist = vlength(mechsim:mass(mechsim:connection(Cnt):index1):position- mechsim:mass(mechsim:connection(Cnt):index2):position); #local Stress=((Dist-mechsim:connection(Cnt):length)/mechsim:connection(Cnt):length)*Stress_Fact + 0.5; #local Vertex_Stress[mechsim:connection(Cnt):index1-Start_Mass_Index]= Vertex_Stress[mechsim:connection(Cnt):index1-Start_Mass_Index]+max(0.0, min(1.0, Stress)); #local Vertex_Mult[mechsim:connection(Cnt):index1-Start_Mass_Index]= Vertex_Mult[mechsim:connection(Cnt):index1-Start_Mass_Index]+1; #local Vertex_Stress[mechsim:connection(Cnt):index2-Start_Mass_Index]= Vertex_Stress[mechsim:connection(Cnt):index2-Start_Mass_Index]+max(0.0, min(1.0, Stress)); #local Vertex_Mult[mechsim:connection(Cnt):index2-Start_Mass_Index]= Vertex_Mult[mechsim:connection(Cnt):index2-Start_Mass_Index]+1; #end #local Cnt=Cnt+1; #end #local Cnt=0; #while (Cnt < Count) #local Vertex_Text[Cnt]= texture { pigment { color fn_Stress_CM(Vertex_Stress[Cnt]/Vertex_Mult[Cnt], 0, 0) } finish { specular 0.3 diffuse 0.7 } } #if (Write_File) #write (FILE, " #local Vertex_Text[",str(Cnt,0,0),"]=texture{pigment{ color rgb <", vstr(3, fn_Stress_CM(Vertex_Stress[Cnt]/Vertex_Mult[Cnt],0,0),",",0,4), "> }finish{Fin_Stress}}\n") #end #local Cnt=Cnt+1; #end #end mesh { #if (Write_File) #write (FILE, "\nmesh {\n") #end #if (Smooth) #local Normals=array[Count][3] #local Cnt=0; #while (Cnt; #local Normals[Cnt][1]=<0,0,0>; #local Normals[Cnt][2]=<0,0,0>; #local Cnt=Cnt+1; #end #local Cnt=Start_Face_Index; #while (Cnt; #local Coord2=; #local Coord3=; #if ((abs(Coord1.x-Coord2.x)0.5)& (vlength(Normals[mechsim:face(Cnt):index2-Start_Mass_Index][0])>0.5)& (vlength(Normals[mechsim:face(Cnt):index3-Start_Mass_Index][0])>0.5) ) smooth_triangle { mechsim:mass(mechsim:face(Cnt):index1):position, vnormalize(Normals[mechsim:face(Cnt):index1-Start_Mass_Index][0]), mechsim:mass(mechsim:face(Cnt):index2):position, vnormalize(Normals[mechsim:face(Cnt):index2-Start_Mass_Index][0]), mechsim:mass(mechsim:face(Cnt):index3):position, vnormalize(Normals[mechsim:face(Cnt):index3-Start_Mass_Index][0]) #if (abs(Stress_Fact)>0) texture_list { Vertex_Text[mechsim:face(Cnt):index1] Vertex_Text[mechsim:face(Cnt):index2] Vertex_Text[mechsim:face(Cnt):index3] } #end } #if (Write_File) #write (FILE, "smooth_triangle { <",vstr(3,mechsim:mass(mechsim:face(Cnt):index1):position,",",0,MSim_File_Decimals), ">, <", vstr(3,vnormalize(Normals[mechsim:face(Cnt):index1-Start_Mass_Index][0]),",",0,MSim_File_Decimals), ">, <", vstr(3,mechsim:mass(mechsim:face(Cnt):index2):position,",",0,MSim_File_Decimals), ">, <", vstr(3,vnormalize(Normals[mechsim:face(Cnt):index2-Start_Mass_Index][0]),",",0,MSim_File_Decimals), ">, <", vstr(3,mechsim:mass(mechsim:face(Cnt):index3):position,",",0,MSim_File_Decimals), ">, <", vstr(3,vnormalize(Normals[mechsim:face(Cnt):index3-Start_Mass_Index][0]),",",0,MSim_File_Decimals), ">") #if (abs(Stress_Fact)>0) #write (FILE, "\n texture_list { Vertex_Text[", str(mechsim:face(Cnt):index1,0,0), "] Vertex_Text[", str(mechsim:face(Cnt):index2,0,0), "] Vertex_Text[", str(mechsim:face(Cnt):index3,0,0), "] } }\n" #else #write (FILE, " }\n") #end #end #end #if ( // --- is y-Face? --- (vlength(Normals[mechsim:face(Cnt):index1-Start_Mass_Index][1])>0.5)& (vlength(Normals[mechsim:face(Cnt):index2-Start_Mass_Index][1])>0.5)& (vlength(Normals[mechsim:face(Cnt):index3-Start_Mass_Index][1])>0.5) ) smooth_triangle { mechsim:mass(mechsim:face(Cnt):index1):position, vnormalize(Normals[mechsim:face(Cnt):index1-Start_Mass_Index][1]), mechsim:mass(mechsim:face(Cnt):index2):position, vnormalize(Normals[mechsim:face(Cnt):index2-Start_Mass_Index][1]), mechsim:mass(mechsim:face(Cnt):index3):position, vnormalize(Normals[mechsim:face(Cnt):index3-Start_Mass_Index][1]) #if (abs(Stress_Fact)>0) texture_list { Vertex_Text[mechsim:face(Cnt):index1] Vertex_Text[mechsim:face(Cnt):index2] Vertex_Text[mechsim:face(Cnt):index3] } #end } #if (Write_File) #write (FILE, "smooth_triangle { <",vstr(3,mechsim:mass(mechsim:face(Cnt):index1):position,",",0,MSim_File_Decimals), ">, <", vstr(3,vnormalize(Normals[mechsim:face(Cnt):index1-Start_Mass_Index][1]),",",0,MSim_File_Decimals), ">, <", vstr(3,mechsim:mass(mechsim:face(Cnt):index2):position,",",0,MSim_File_Decimals), ">, <", vstr(3,vnormalize(Normals[mechsim:face(Cnt):index2-Start_Mass_Index][1]),",",0,MSim_File_Decimals), ">, <", vstr(3,mechsim:mass(mechsim:face(Cnt):index3):position,",",0,MSim_File_Decimals), ">, <", vstr(3,vnormalize(Normals[mechsim:face(Cnt):index3-Start_Mass_Index][1]),",",0,MSim_File_Decimals), ">") #if (abs(Stress_Fact)>0) #write (FILE, "\n texture_list { Vertex_Text[", str(mechsim:face(Cnt):index1,0,0), "] Vertex_Text[", str(mechsim:face(Cnt):index2,0,0), "] Vertex_Text[", str(mechsim:face(Cnt):index3,0,0), "] } }\n" #else #write (FILE, " }\n") #end #end #end #if ( // --- is z-Face? --- (vlength(Normals[mechsim:face(Cnt):index1-Start_Mass_Index][2])>0.5)& (vlength(Normals[mechsim:face(Cnt):index2-Start_Mass_Index][2])>0.5)& (vlength(Normals[mechsim:face(Cnt):index3-Start_Mass_Index][2])>0.5) ) smooth_triangle { mechsim:mass(mechsim:face(Cnt):index1):position, vnormalize(Normals[mechsim:face(Cnt):index1-Start_Mass_Index][2]), mechsim:mass(mechsim:face(Cnt):index2):position, vnormalize(Normals[mechsim:face(Cnt):index2-Start_Mass_Index][2]), mechsim:mass(mechsim:face(Cnt):index3):position, vnormalize(Normals[mechsim:face(Cnt):index3-Start_Mass_Index][2]) #if (abs(Stress_Fact)>0) texture_list { Vertex_Text[mechsim:face(Cnt):index1] Vertex_Text[mechsim:face(Cnt):index2] Vertex_Text[mechsim:face(Cnt):index3] } #end } #if (Write_File) #write (FILE, "smooth_triangle { <",vstr(3,mechsim:mass(mechsim:face(Cnt):index1):position,",",0,MSim_File_Decimals), ">, <", vstr(3,vnormalize(Normals[mechsim:face(Cnt):index1-Start_Mass_Index][2]),",",0,MSim_File_Decimals), ">, <", vstr(3,mechsim:mass(mechsim:face(Cnt):index2):position,",",0,MSim_File_Decimals), ">, <", vstr(3,vnormalize(Normals[mechsim:face(Cnt):index2-Start_Mass_Index][2]),",",0,MSim_File_Decimals), ">, <", vstr(3,mechsim:mass(mechsim:face(Cnt):index3):position,",",0,MSim_File_Decimals), ">, <", vstr(3,vnormalize(Normals[mechsim:face(Cnt):index3-Start_Mass_Index][2]),",",0,MSim_File_Decimals), ">") #if (abs(Stress_Fact)>0) #write (FILE, "\n texture_list { Vertex_Text[", str(mechsim:face(Cnt):index1,0,0), "] Vertex_Text[", str(mechsim:face(Cnt):index2,0,0), "] Vertex_Text[", str(mechsim:face(Cnt):index3,0,0), "] } }\n" #else #write (FILE, " }\n") #end #end #end #local Cnt=Cnt+1; #end #else // not Smooth #local Cnt=Start_Face_Index; #while (Cnt0) texture_list { Vertex_Text[mechsim:face(Cnt):index1] Vertex_Text[mechsim:face(Cnt):index2] Vertex_Text[mechsim:face(Cnt):index3] } #end } #if (Write_File) #write (FILE, "triangle { <",vstr(3,mechsim:mass(mechsim:face(Cnt):index1):position,",",0,MSim_File_Decimals), ">, <", vstr(3,mechsim:mass(mechsim:face(Cnt):index2):position,",",0,MSim_File_Decimals), ">, <", vstr(3,mechsim:mass(mechsim:face(Cnt):index3):position,",",0,MSim_File_Decimals), ">") #if (abs(Stress_Fact)>0) #write (FILE, "\n texture_list { Vertex_Text[", str(mechsim:face(Cnt):index1,0,0), "] Vertex_Text[", str(mechsim:face(Cnt):index2,0,0), "] Vertex_Text[", str(mechsim:face(Cnt):index3,0,0), "] } }\n" #else #write (FILE, " }\n") #end #end #local Cnt=Cnt+1; #end #end texture { MSim_Tex_Mesh } } #if (Write_File) #write (FILE, "}\n") #end #end #debug "Done\n" #end // ======================================================================================= // MechSim_Show_Sphere() macro // // generating a mesh for the outer surface of a grid generated with the // MechSim_Generate_Sphere() macro (fith 'Faces' parameter true) // // Parameters: // Start_Face_Index - index of the first face that's part of the patch. Should // be stored when the patch is generated // XSize, YSize - Size of the patch, number of nodes in x- and y-direction // Smooth - boolean value, if true normal vectors are generated // UV - boolean value, if true UV-coordinates are generated // (from 0 to 1 in x-direction) // Stress_Fact - if >0 the mesh is textured to visualize the stress. // values are scaled with this factor // File_Name - string, if length is >0 the mesh is written to a file // with that name in addition // // ======================================================================================= #macro MechSim_Show_Sphere(Start_Face_Index, Face_Count, Smooth, UV, Stress_Fact, File_Name) #if ((mechsim:face_count-Start_Face_Index)>=Face_Count) #if (strlen(File_Name)=0) #local Write_File=false; #debug "Generating Sphere Surface Triangle Mesh...\n" #else #local Write_File=true; #fopen FILE File_Name write #write (FILE, "// sphere mesh (",str(XSize,0,0),"x",str(YSize,0,0),"x",str(ZSize,0,0)," vertices)\n") #write (FILE, "// written by MechSim include file version ",str(MSIM_INCLUDE_VERSION,1,1),"\n\n") #write (FILE, "mesh {\n\n") #debug concat("Generating Sphere Triangle Mesh (writing to file ",File_Name,")...\n") #end mesh { #if (Write_File) #write (FILE, "mesh {\n") #end #if (Smooth) #local Center_Pos=mechsim:mass(mechsim:face(Start_Face_Index):index1-1):position; #local Cnt=Start_Face_Index; #while (Cnt, <", vstr(3,mechsim:mass(mechsim:face(Cnt):index2):position,",",0,MSim_File_Decimals), ">, <", vstr(3,mechsim:mass(mechsim:face(Cnt):index3):position,",",0,MSim_File_Decimals), "> }\n") #end #local Cnt=Cnt+1; #end #else // not Smooth #local Cnt=Start_Face_Index; #while (Cnt, <", vstr(3,mechsim:mass(mechsim:face(Cnt):index2):position,",",0,MSim_File_Decimals), ">, <", vstr(3,mechsim:mass(mechsim:face(Cnt):index3):position,",",0,MSim_File_Decimals), "> }\n") #end #local Cnt=Cnt+1; #end #end texture { MSim_Tex_Mesh } } #if (Write_File) #write (FILE, "}\n") #end #end #debug "Done\n" #end // ======================================================================================= // MechSim_Show_Con() macro // // generating a cylinder representing a connection // // Parameters: // Idx - connection index // // ======================================================================================= #macro MechSim_Show_Con(Idx) #local Dist = vlength(mechsim:mass(mechsim:connection(Idx):index1):position- mechsim:mass(mechsim:connection(Idx):index2):position); #if (Dist>0.0001) cylinder { mechsim:mass(mechsim:connection(Idx):index1):position, mechsim:mass(mechsim:connection(Idx):index2):position, (mechsim:mass(mechsim:connection(Idx):index1):radius+mechsim:mass(mechsim:connection(Idx):index2):radius)*0.25 } #end #end // ======================================================================================= // MechSim_Show_Con_VE() macro // // generating a cylinder representing a viscoelastic connection // // Parameters: // Idx - connection index // // ======================================================================================= #macro MechSim_Show_Con_VE(Idx) #local Dist = vlength(mechsim:mass(mechsim:viscoelastic(Idx):index1):position- mechsim:mass(mechsim:viscoelastic(Idx):index2):position); #if (Dist>0.0001) cylinder { mechsim:mass(mechsim:viscoelastic(Idx):index1):position, mechsim:mass(mechsim:viscoelastic(Idx):index2):position, (mechsim:mass(mechsim:viscoelastic(Idx):index1):radius+mechsim:mass(mechsim:viscoelastic(Idx):index2):radius)*0.25 } #end #end // ####################################################################################### // Grid topology generation macros // ####################################################################################### // ======================================================================================= // MechSim_Generate_Grid_X() macro // // basis macro for generating 3D grid topologies. // Do not use this but the wrapper macros below. // // Parameters: // Velocity - vector defining the common starting velocity of all masses. // Radius - radius of all masses. // fn_Density - user defined function controlling the density of the masses. // x, y and z are evaluated in [0..1] range. // fn_Stiffness - user defined function controlling the stiffness of the connections. // fn_Damping - user defined function controlling the damping of the connections. // VE_Elements - array with the parameters for viscoelastic connections // VE_Accuracy - accuracy value for viscoelastic connections - // <= 0 means to create normal connections // Faces - Boolean value controlling whether faces are generated for the surface. // If true faces are generated on the outside shape. // Cube_Scale - 3D vector controlling the distances in the grid. It defines the size of an elementary cell. // Grid_Size - 3D vector containing the number of masses in all three directions. // Transf - Transform applied to the mass positions // fn_Fixed - user defined function controlling which masses are fixed. // x, y and z are evaluated in [0..1] range. For function values > 0 the masses are fixed. // fn_Attach - user defined function controlling which masses are attached. // x, y and z are evaluated in [0..1] range. The function value determines the attachment index. // fn_Force - user defined function controlling custom forces. // x, y and z are evaluated in [0..1] range. The function value determines the custom force index. // Connect_Arr - Array containing weights for connection stiffness and damping. // // ======================================================================================= #macro MechSim_Generate_Grid_X(Velocity, Radius, fn_Density, fn_Stiffness, fn_Damping, VE_Elements, VE_Accuracy, Faces, Cube_Scale, Grid_Size, Transf, fn_Fixed, fn_Attach, fn_Force, Connect_Arr) #debug "Generating Grid..." #local Vel=Velocity+<0,0,0>; #local CubeScale=Cube_Scale+<0,0,0>; #local GridSize=Grid_Size+<0,0,0>; #local EPS=0.001*CubeScale.x; #local StIdx=mechsim:mass_count; #local Count=(GridSize.x*GridSize.y*GridSize.z); #local Diagonal=dimension_size(Connect_Arr, 1); #if (Connect_Arr[0]=0) #local Diagonal=0; #end #local Cnt=0; #while (Cnt; #local Coord2=; #local CoordF=; mass { vtransform(Coord2, Transf), Vel, Radius density fn_Density(CoordF.x, CoordF.y, CoordF.z) #if ( fn_Fixed(CoordF.x, CoordF.y, CoordF.z)>0 ) fixed on #else #local Attach=fn_Attach(CoordF.x, CoordF.y, CoordF.z); #if ( Attach>-0.1 ) attach Attach #end #local Force=fn_Force(CoordF.x, CoordF.y, CoordF.z); #if ( Force>-0.1 ) force Force #end #end } #local Cnt=Cnt+1; #end #if (Faces) #local Cnt=0; #while (Cnt; #local UpB=GridSize-1-EPS; #if (((Coord.xUpB.x))& (Coord.yUpB.y))& (Coord.xUpB.z))& (Coord.x0) #if (VE_Accuracy>0) #local VE_Elem_Cnt=dimension_size(VE_Elements, 1); #else #local VE_Elem_Cnt=0; #end #local Cnt=0; #while (Cnt; #local CoordF=; #local Stiffness=fn_Stiffness(CoordF.x, CoordF.y, CoordF.z); #local Damping=fn_Damping(CoordF.x, CoordF.y, CoordF.z); #if (Coord.x1) #if (Coord.y2) #if (VE_Elem_Cnt=0) connection { StIdx+Cnt+1, StIdx+Cnt+GridSize.x stiffness Stiffness*Connect_Arr[2] damping Damping*Connect_Arr[2] } #else viscoelastic { StIdx+Cnt+1, StIdx+Cnt+GridSize.x stiffness Stiffness*Connect_Arr[2] #local ECnt=0; #while (ECnt1) #if (Coord.z2) #if (VE_Elem_Cnt=0) connection { StIdx+Cnt+GridSize.x, StIdx+Cnt+GridSize.x*GridSize.y stiffness Stiffness*Connect_Arr[2] damping Damping*Connect_Arr[2] } #else viscoelastic { StIdx+Cnt+GridSize.x, StIdx+Cnt+GridSize.x*GridSize.y stiffness Stiffness*Connect_Arr[2] #local ECnt=0; #while (ECnt1) #if (Coord.x2) #if (VE_Elem_Cnt=0) connection { StIdx+Cnt+1, StIdx+Cnt+GridSize.x*GridSize.y stiffness Stiffness*Connect_Arr[2] damping Damping*Connect_Arr[2] } #else viscoelastic { StIdx+Cnt+1, StIdx+Cnt+GridSize.x*GridSize.y stiffness Stiffness*Connect_Arr[2] #local ECnt=0; #while (ECnt3) #if ((Coord.x 0 the masses are fixed. // fn_Attach - user defined function controlling which masses are attached. // x, y and z are evaluated in [0..1] range. The function value determines the attachment index. // fn_Force - user defined function controlling custom forces. // x, y and z are evaluated in [0..1] range. The function value determines the custom force index. // Connect_Arr - Array containing weights for connection stiffness and damping. // // ======================================================================================= #macro MechSim_Generate_Grid_Fn(Velocity, Radius, fn_Density, fn_Stiffness, fn_Damping, Faces, Cube_Scale, Grid_Size, Transf, fn_Fixed, fn_Attach, fn_Force, Connect_Arr) #local VE_Elements=array[1] #local VE_Accuracy=0; MechSim_Generate_Grid_X( Velocity, Radius, fn_Density, fn_Stiffness, fn_Damping, VE_Elements, VE_Accuracy, Faces, Cube_Scale, Grid_Size, Transf, fn_Fixed, fn_Attach, fn_Force, Connect_Arr ) #end // ======================================================================================= // MechSim_Generate_Grid_Fn_VE() macro // // variant of MechSim_Generate_Grid_Fn() generating viscoelastic connections // // Parameters: // Velocity - vector defining the common starting velocity of all masses. // Radius - radius of all masses. // fn_Density - user defined function controlling the density of the masses. // x, y and z are evaluated in [0..1] range. // fn_Stiffness - user defined function controlling the stiffness of the connections. // VE_Elements - array with the parameters for viscoelastic connections // VE_Accuracy - accuracy value for viscoelastic connection // Faces - Boolean value controlling whether faces are generated for the surface. // If true faces are generated on the outside shape. // Cube_Scale - 3D vector controlling the distances in the grid. It defines the size of an elementary cell. // Grid_Size - 3D vector containing the number of masses in all three directions. // Transf - Transform applied to the mass positions // fn_Fixed - user defined function controlling which masses are fixed. // x, y and z are evaluated in [0..1] range. For function values > 0 the masses are fixed. // fn_Attach - user defined function controlling which masses are attached. // x, y and z are evaluated in [0..1] range. The function value determines the attachment index. // fn_Force - user defined function controlling custom forces. // x, y and z are evaluated in [0..1] range. The function value determines the custom force index. // Connect_Arr - Array containing weights for connection stiffness and damping. // // ======================================================================================= #macro MechSim_Generate_Grid_Fn_VE(Velocity, Radius, fn_Density, fn_Stiffness, VE_Elements, VE_Accuracy, Faces, Cube_Scale, Grid_Size, Transf, fn_Fixed, fn_Attach, fn_Force, Connect_Arr) #local __MSIM_fn_Damping=function(x, y, z) {0} MechSim_Generate_Grid_X( Velocity, Radius, fn_Density, fn_Stiffness, __MSIM_fn_Damping, VE_Elements, VE_Accuracy, Faces, Cube_Scale, Grid_Size, Transf, fn_Fixed, fn_Attach, fn_Force, Connect_Arr ) #end // ======================================================================================= // MechSim_Generate_Grid() macro // // topology generation macro building a 3D grid of masses connected and with optional // faces on the outside. density, stiffness and damping as fixed values, // masses are not fixed or attached. // // Parameters: // Velocity - common velocity of all masses // Radius - radius of the masses // Density - density of the masses // Stiffness - stiffness of the connections // Damping - damping of the connections // Faces - Boolean value controlling whether faces are generated for the // surface. // Cube_Scale - Grid distance vector, defining the size of an elemetary // cell in the grid. // Grid_Size - Vector with number of masses in x, y and z direction // Transf - Transform applied to the mass positions // Connect_Arr - Array containing weights for connection stiffness and damping // // ======================================================================================= #macro MechSim_Generate_Grid(Velocity, Radius, Density, Stiffness, Damping, Faces, Cube_Scale, Grid_Size, Transf, Connect_Arr) #local __MSIM_fn_Density=function(x, y, z) {Density} #local __MSIM_fn_Stiffness=function(x, y, z) {Stiffness} #local __MSIM_fn_Damping=function(x, y, z) {Damping} #local __MSIM_fn_Fixed=function(x, y, z) {-1} #local __MSIM_fn_Attach=function(x, y, z) {-1} #local __MSIM_fn_Force=function(x, y, z) {-1} #local VE_Elements=array[1] #local VE_Accuracy=0; MechSim_Generate_Grid_X( Velocity, Radius, __MSIM_fn_Density, __MSIM_fn_Stiffness, __MSIM_fn_Damping, VE_Elements, VE_Accuracy, Faces, Cube_Scale, Grid_Size, Transf, __MSIM_fn_Fixed, __MSIM_fn_Attach, __MSIM_fn_Force, Connect_Arr ) #end // ======================================================================================= // MechSim_Generate_Grid_VE() macro // // variant of MechSim_Generate_Grid() generating viscoelastic connections // // Parameters: // Velocity - common velocity of all masses // Radius - radius of the masses // Density - density of the masses // Stiffness - stiffness of the connections // VE_Elements - array with the parameters for viscoelastic connections // VE_Accuracy - accuracy value for viscoelastic connection // Faces - Boolean value controlling whether faces are generated for the // surface. // Cube_Scale - Grid distance vector, defining the size of an elemetary // cell in the grid. // Grid_Size - Vector with number of masses in x, y and z direction // Transf - Transform applied to the mass positions // Connect_Arr - Array containing weights for connection stiffness and damping // // ======================================================================================= #macro MechSim_Generate_Grid_VE(Velocity, Radius, Density, Stiffness, VE_Elements, VE_Accuracy, Faces, Cube_Scale, Grid_Size, Transf, Connect_Arr) #local __MSIM_fn_Density=function(x, y, z) {Density} #local __MSIM_fn_Stiffness=function(x, y, z) {Stiffness} #local __MSIM_fn_Damping=function(x, y, z) {0} #local __MSIM_fn_Fixed=function(x, y, z) {-1} #local __MSIM_fn_Attach=function(x, y, z) {-1} #local __MSIM_fn_Force=function(x, y, z) {-1} MechSim_Generate_Grid_X( Velocity, Radius, __MSIM_fn_Density, __MSIM_fn_Stiffness, __MSIM_fn_Damping, VE_Elements, VE_Accuracy, Faces, Cube_Scale, Grid_Size, Transf, __MSIM_fn_Fixed, __MSIM_fn_Attach, __MSIM_fn_Force, Connect_Arr ) #end // ======================================================================================= // MechSim_Generate_Grid_Std() macro // // topology generation macro building a 3D grid of masses connected and with optional // faces on the outside. density, stiffness and damping as fixed values, // masses are not fixed or attached. // Instead of the connection weight array a Diagonal parameter is used // // Parameters: // Velocity - common velocity of all masses // Radius - radius of the masses // Density - density of the masses // Stiffness - stiffness of the connections // Damping - damping of the connections // Faces - Boolean value controlling whether faces are generated for the // surface. // Cube_Scale - Grid distance vector, defining the size of an elemetary // cell in the grid. // Grid_Size - Vector with number of masses in x, y and z direction // Transf - Transform applied to the mass positions // Diagonal - controling which diagonal connections are generated in the grid. // // ======================================================================================= #macro MechSim_Generate_Grid_Std(Velocity, Radius, Density, Stiffness, Damping, Faces, Cube_Scale, Grid_Size, Transf, Diagonal) #local __MSIM_fn_Density=function(x, y, z) {Density} #local __MSIM_fn_Stiffness=function(x, y, z) {Stiffness} #local __MSIM_fn_Damping=function(x, y, z) {Damping} #local __MSIM_fn_Fixed=function(x, y, z) {-1} #local __MSIM_fn_Attach=function(x, y, z) {-1} #local __MSIM_fn_Force=function(x, y, z) {-1} #local VE_Elements=array[1] #local VE_Accuracy=0; #local Connect_Arr=array[max(1, Diagonal)] #local Cnt=0; #while (Cnt; #local Pnt1=Start+<0,0,0>; #local Pnt2=End+<0,0,0>; #local Transf2= transform { scale (Pnt2-Pnt1) translate Pnt1 transform { Transf } } MechSim_Generate_Grid_X( Velocity, Radius, __MSIM_fn_Density, __MSIM_fn_Stiffness, __MSIM_fn_Damping, VE_Elements, VE_Accuracy, Faces, Cube_Scale, Grid_Size, Transf2, __MSIM_fn_Fixed, __MSIM_fn_Attach, __MSIM_fn_Force, Connect_Arr ) #end // ======================================================================================= // MechSim_Generate_Block_VE() macro // // variant of MechSim_Generate_Block() generating viscoelastic connections // // Parameters: // Velocity - common velocity of all masses // Radius - radius of the masses // Mass - mass of the whole body // Stiffness - stiffness of the connections // VE_Elements - array with the parameters for viscoelastic connections // VE_Accuracy - accuracy value for viscoelastic connection // Faces - Boolean value controlling whether faces are generated for the // surface. // Start, End - Corner coordinates of the grid to generate // Grid_Size - Vector with number of masses in x, y and z direction // Transf - Transform applied to the mass positions // Diagonal - controling which diagonal connections are generated in the grid. // // ======================================================================================= #macro MechSim_Generate_Block_VE(Velocity, Radius, Mass, Stiffness, VE_Elements, VE_Accuracy, Faces, Start, End, Grid_Size, Transf, Diagonal) #local Density=(Mass/(Grid_Size.x*Grid_Size.y*Grid_Size.z))/((4/3)*pi*pow(Radius,3)); #local __MSIM_fn_Density=function(x, y, z) {Density} #local __MSIM_fn_Stiffness=function(x, y, z) {Stiffness} #local __MSIM_fn_Damping=function(x, y, z) {0} #local __MSIM_fn_Fixed=function(x, y, z) {-1} #local __MSIM_fn_Attach=function(x, y, z) {-1} #local __MSIM_fn_Force=function(x, y, z) {-1} #local Connect_Arr=array[max(1, Diagonal)] #local Cnt=0; #while (Cnt; #local Pnt1=Start+<0,0,0>; #local Pnt2=End+<0,0,0>; #local Transf2= transform { scale (Pnt2-Pnt1) translate Pnt1 transform { Transf } } MechSim_Generate_Grid_X( Velocity, Radius, __MSIM_fn_Density, __MSIM_fn_Stiffness, __MSIM_fn_Damping, VE_Elements, VE_Accuracy, Faces, Cube_Scale, Grid_Size, Transf2, __MSIM_fn_Fixed, __MSIM_fn_Attach, __MSIM_fn_Force, Connect_Arr ) #end // ####################################################################################### // Patch topology generation macros // ####################################################################################### // ======================================================================================= // MechSim_Generate_Patch_X() macro // // basis macro for generating 2D grid (patch) topologies. // Do not use this but the wrapper macros below. // // Parameters: // Velocity - common velocity of all masses // Radius - radius of the masses // Density - density of the masses // Stiffness - stiffness of the connections // Damping - damping of the connections // VE_Elements - array with the parameters for viscoelastic connections // VE_Accuracy - accuracy value for viscoelastic connections - // <= 0 means to create normal connections // Faces - Boolean value controlling whether faces are generated for the // surface. // Rect_Scale - 2D Grid distance vector, defining the size of an elemetary // rectangle in the grid. // Grid_Size - 2D Vector with number of masses in x and y direction // Transf - Transform applied to the mass positions // fn_Fixed - user defined function controlling which masses are fixed. // x and y are evaluated in [0..1] range. For function values > 0 the masses are fixed. // fn_Attach - user defined function controlling which masses are fixed. // x and y are evaluated in [0..1] range. The function value determines the attachment index. // fn_Force - user defined function controlling custom forces. // x and y are evaluated in [0..1] range. The function value determines the custom force index. // Connect_Arr - Array containing weights for connection stiffness and damping // // ======================================================================================= #macro MechSim_Generate_Patch_X(Velocity, Radius, Density, Stiffness, Damping, VE_Elements, VE_Accuracy, Faces, Rect_Scale, Grid_Size, Transf, fn_Fixed, fn_Attach, fn_Force, Connect_Arr) #debug "Generating Patch..." #local Vel=Velocity+<0,0,0>; #local CubeScale=Rect_Scale+<0,0,0>; #local GridSize=Grid_Size+<0,0,0>; #local EPS=0.001*CubeScale.x; #local StIdx=mechsim:mass_count; #local Count=(GridSize.x*GridSize.y); #local Con_Cnt=dimension_size(Connect_Arr, 1); #local Cnt=0; #while (Cnt; #local Coord2=; #local CoordF=; mass { vtransform(Coord2, Transf), Vel, Radius density Density #if ( fn_Fixed(CoordF.x, CoordF.y, 0)>0 ) fixed on #else #local Attach=fn_Attach(CoordF.x, CoordF.y, 0); #if ( Attach>-0.1 ) attach Attach #end #local Force=fn_Force(CoordF.x, CoordF.y, 0); #if ( Force>-0.1 ) force Force #end #end } #local Cnt=Cnt+1; #end #if (Faces) #local Cnt=0; #while (Cnt; #local UpB=GridSize-1-EPS; #if ((Coord.x0) #if (VE_Accuracy>0) #local VE_Elem_Cnt=dimension_size(VE_Elements, 1); #else #local VE_Elem_Cnt=0; #end #local Cnt=0; #while (Cnt; #local UpB=GridSize-1-EPS; #if (Coord.x1) #if ((Coord.x2) #local UpB2=GridSize-2-EPS; #if (Coord.x3) #if ((Coord.x4) #if ((Coord.x5) #local UpB3=GridSize-3-EPS; #if ((Coord.x5 */ #end /* Connect>4 */ #end /* Connect>3 */ #end /* Connect>2 */ #end /* Connect>1 */ #local Cnt=Cnt+1; #end #end /* Connect>0 */ #debug "Done\n" #end // ======================================================================================= // MechSim_Generate_Patch() macro // // topology generation macro building a rectangular patch of masses connected and with // optional faces. // // Parameters: // Velocity - common velocity of all masses // Radius - radius of the masses // Density - density of the masses // Stiffness - stiffness of the connections // Damping - damping of the connections // Faces - Boolean value controlling whether faces are generated for the // surface. // Rect_Scale - 2D Grid distance vector, defining the size of an elemetary // rectangle in the grid. // Grid_Size - 2D Vector with number of masses in x and y direction // Transf - Transform applied to the mass positions // fn_Fixed - user defined function controlling which masses are fixed. // x and y are evaluated in [0..1] range. For function values > 0 the masses are fixed. // fn_Attach - user defined function controlling which masses are fixed. // x and y are evaluated in [0..1] range. The function value determines the attachment index. // fn_Force - user defined function controlling custom forces. // x and y are evaluated in [0..1] range. The function value determines the custom force index. // Connect_Arr - Array containing weights for connection stiffness and damping // // ======================================================================================= #macro MechSim_Generate_Patch(Velocity, Radius, Density, Stiffness, Damping, Faces, Rect_Scale, Grid_Size, Transf, fn_Fixed, fn_Attach, fn_Force, Connect_Arr) #local VE_Elements=array[1] #local VE_Accuracy=0; MechSim_Generate_Patch_X( Velocity, Radius, Density, Stiffness, Damping, VE_Elements, VE_Accuracy, Faces, Rect_Scale, Grid_Size, Transf, fn_Fixed, fn_Attach, fn_Force, Connect_Arr ) #end // ======================================================================================= // MechSim_Generate_Patch_VE() macro // // variant of MechSim_Generate_Patch() generating viscoelastic connections // // Parameters: // Velocity - common velocity of all masses // Radius - radius of the masses // Density - density of the masses // Stiffness - stiffness of the connections // VE_Elements - array with the parameters for viscoelastic connections // VE_Accuracy - accuracy value for viscoelastic connection // Faces - Boolean value controlling whether faces are generated for the // surface. // Rect_Scale - 2D Grid distance vector, defining the size of an elemetary // rectangle in the grid. // Grid_Size - 2D Vector with number of masses in x and y direction // Transf - Transform applied to the mass positions // fn_Fixed - user defined function controlling which masses are fixed. // x and y are evaluated in [0..1] range. For function values > 0 the masses are fixed. // fn_Attach - user defined function controlling which masses are fixed. // x and y are evaluated in [0..1] range. The function value determines the attachment index. // fn_Force - user defined function controlling custom forces. // x and y are evaluated in [0..1] range. The function value determines the custom force index. // Connect_Arr - Array containing weights for connection stiffness and damping // // ======================================================================================= #macro MechSim_Generate_Patch_VE(Velocity, Radius, Density, Stiffness, VE_Elements, VE_Accuracy, Faces, Rect_Scale, Grid_Size, Transf, fn_Fixed, fn_Attach, fn_Force, Connect_Arr) MechSim_Generate_Patch_X( Velocity, Radius, Density, Stiffness, 0, VE_Elements, VE_Accuracy, Faces, Rect_Scale, Grid_Size, Transf, fn_Fixed, fn_Attach, fn_Force, Connect_Arr ) #end // ======================================================================================= // MechSim_Generate_Patch_Std() macro // // topology generation macro building a rectangular patch of masses connected and with // optional faces. No nodes fixed and same stiffness and damping for all connections. // // Parameters: // Velocity - common velocity of all masses // Radius - radius of the masses // Density - density of the masses // Stiffness - stiffness of the connections // Damping - damping of the connections // Faces - Boolean value controlling whether faces are generated for the // surface. // Rect_Scale - 2D Grid distance vector, defining the size of an elemetary // rectangle in the grid. // Grid_Size - 2D Vector with number of masses in x and y direction // Transf - Transform applied to the mass positions // Connect - Which connections to generate // // ======================================================================================= #macro MechSim_Generate_Patch_Std(Velocity, Radius, Density, Stiffness, Damping, Faces, Rect_Scale, Grid_Size, Transf, Connect) #local __MSIM_fn_Fixed=function(x, y, z) { -1 } #local __MSIM_fn_Attach=function(x, y, z) { -1 } #local __MSIM_fn_Force=function(x, y, z) { -1 } #local Connect_Arr=array[Connect] #local Cnt=0; #while (Cnt 0 the masses are fixed. // fn_Attach - user defined function controlling which masses are fixed. // x is evaluated in [0..1] range. The function value determines the attachment index. // fn_Force - user defined function controlling which masses are fixed. // x is evaluated in [0..1] range. The function value determines the attachment index. // Connect_Arr - Array containing weights for connection stiffness and damping // // ======================================================================================= #macro MechSim_Generate_Line(Velocity, Radius, Density, Stiffness, Damping, Spacing, Count, Direction, Transf, fn_Fixed, fn_Attach, fn_Force, Connect_Arr) #debug "Generating Line..." #local Vel=Velocity+<0,0,0>; #local Dir=vnormalize(Direction); #local StIdx=mechsim:mass_count; #local Con_Cnt=dimension_size(Connect_Arr, 1); #if (Con_Cnt>0) #local Cnt=0; #while (Cnt0 ) fixed on #else #local Attach=fn_Attach(Cnt/(Count-1), 0, 0); #if ( Attach>-0.1 ) attach Attach #end #local Force=fn_Force(Cnt/(Count-1), 0, 0); #if ( Force>-0.1 ) force Force #end #end } #local Cnt=Cnt+1; #end #if (Con_Cnt>0) #local Cnt=0; #while (Cnt; #declare Icosahedron_Vtx[5+Cnt]=; #declare Cnt=Cnt+1; #end #declare Icosahedron_Vtx[0]=<0,0,-1>; #declare Icosahedron_Vtx[11]=<0,0,1>; #declare Icosahedron_Face = array[20] #declare Icosahedron_Face[ 0]=< 0, 1, 2>; #declare Icosahedron_Face[ 1]=< 0, 2, 3>; #declare Icosahedron_Face[ 2]=< 0, 3, 4>; #declare Icosahedron_Face[ 3]=< 0, 4, 5>; #declare Icosahedron_Face[ 4]=< 0, 5, 1>; #declare Icosahedron_Face[ 5]=< 1, 2, 9>; #declare Icosahedron_Face[ 6]=< 2, 3,10>; #declare Icosahedron_Face[ 7]=< 3, 4, 6>; #declare Icosahedron_Face[ 8]=< 4, 5, 7>; #declare Icosahedron_Face[ 9]=< 5, 1, 8>; #declare Icosahedron_Face[10]=< 1, 8, 9>; #declare Icosahedron_Face[11]=< 9,10, 2>; #declare Icosahedron_Face[12]=<10, 6, 3>; #declare Icosahedron_Face[13]=< 6, 7, 4>; #declare Icosahedron_Face[14]=< 7, 8, 5>; #declare Icosahedron_Face[15]=<11, 6, 7>; #declare Icosahedron_Face[16]=<11, 7, 8>; #declare Icosahedron_Face[17]=<11, 8, 9>; #declare Icosahedron_Face[18]=<11, 9,10>; #declare Icosahedron_Face[19]=<11,10, 6>; // --- Builds a triangle mesh from Vertex and Face arrays --- #macro MechSim_Ico_Build_Mesh(Arr_V, Arr_F) #local Cnt_F=dimension_size(Arr_F, 1); #local Cnt=0; #while (Cnt; #local EnCnt=EnCnt+1; #end #if (Is[1]=false) #local Arr_E[EnCnt]=; #local EnCnt=EnCnt+1; #end #if (Is[2]=false) #local Arr_E[EnCnt]=; #local EnCnt=EnCnt+1; #end #local FCnt=FCnt+1; #end // center mass #local Center_Pos=vtransform(<0,0,0>, Transf); mass { Center_Pos, Velocity, Radius density Density2 } #local Cnt=0; #while (Cnt0) #local Cnt_Vn=Cnt_V+Cnt_E; #local Cnt_Fn=4*Cnt_F; #local Cnt_En=2*Cnt_E + 3*Cnt_F; #local Arr_Vn=array[Cnt_Vn] #local Arr_Fn=array[Cnt_Fn] #local Pnt6=array[6] #local FCnt=0; #local FnCnt=0; #local VnCnt=0; #while (FCnt; #local FnCnt=FnCnt+1; #local Arr_Fn[FnCnt]=; #local FnCnt=FnCnt+1; #local Arr_Fn[FnCnt]=; #local FnCnt=FnCnt+1; #local Arr_Fn[FnCnt]=; #local FnCnt=FnCnt+1; #local FCnt=FCnt+1; #end #if (Depth>1) MechSim_Subdivide_Ico_Rec(Depth-1, Cnt_Vn, Cnt_Fn, Cnt_En, Arr_Vn, Arr_Fn, Velocity, Radius, Density, Stiffness, Damping, Density2, Stiffness2, Damping2, Faces, BRadius, Transf) #else MechSim_Ico_Build_Grid(Cnt_En, Arr_Vn, Arr_Fn, Velocity, Radius, Density, Stiffness, Damping, Density2, Stiffness2, Damping2, Faces, BRadius, Transf) #end #end #end #macro MechSim_Subdivide_Ico(Depth, Velocity, Radius, Density, Stiffness, Damping, Density2, Stiffness2, Damping2, Faces, Division, BRadius, Transf) #local Cnt_V=12; #local Cnt_F=20; #local Cnt_E=30; #local Arr_V=Icosahedron_Vtx; #local Arr_F=Icosahedron_Face; MechSim_Subdivide_Ico_Rec(Division, Cnt_V, Cnt_F, Cnt_E, Arr_V, Arr_F, Velocity, Radius, Density, Stiffness, Damping, Density2, Stiffness2, Damping2, Faces, BRadius, Transf) #end // ======================================================================================= // MechSim_Generate_Sphere() macro // // topology generation macro building a sphere. // Only simple connections and not fixed // // Parameters: // Velocity - common velocity of all masses // Radius - radius of the masses // Density - density of the surface masses // Stiffness - stiffness of the surface connections // Damping - damping of the surface connections // Density2 - density of the center mass // Stiffness2 - stiffness of the center connections // Damping2 - damping of the center connections // Division - Icosahedron subdivision depth // BRadius - Radius of the ball // Transf - Transform applied to the mass positions // // ======================================================================================= #macro MechSim_Generate_Sphere(Velocity, Radius, Density, Stiffness, Damping, Density2, Stiffness2, Damping2, Faces, Division, BRadius, Transf) #debug "Generating Sphere...\n" #local Vel=Velocity+<0,0,0>; MechSim_Subdivide_Ico(Division, Vel, Radius, Density, Stiffness, Damping, Density2, Stiffness2, Damping2, Faces, Division, BRadius, Transf) #debug "Done\n" #end #version MECHSIM_Inc_Temp; #end #ifndef(Metals_Inc_Temp) #declare Metals_Inc_Temp=version; #version 3.5; #ifdef(View_POV_Include_Stack) # debug "including metals.inc\n" #end /* Persistence of Vision Raytracer Version 3.1 Metallic pigments, finishes, and textures. ***************************************************************************** BASIC METAL COLORS ***************************************************************************** Note: Describing metallic textures is difficult, at best. The reflectivity and other qualities make them highly dependant on lighting and surroundings. The following notes are intended as a rough guide only. P_Brass1: Dark brown bronze. P_Brass2: Somewhat lighter brown than Brass4. Old penny, in soft finishes. P_Brass3: Used by Steve Anger's Polished_Brass. Slightly coppery. P_Brass4: A little yellower than Brass1. P_Brass5: Very light bronze, ranges from med tan to almost white. P_Copper1: bronze-like. Best in finish #C. P_Copper2: slightly brownish copper/bronze. Best in finishes #B-#D. P_Copper3: reddish-brown copper. Best in finishes #C-#E. P_Copper4: pink copper, like new tubing. Best in finishes #C-#E. P_Copper5: Bronze in softer finishes, gold in harder finishes. P_Chrome1: 20% Gray. Used in Steve Anger's Polished_Chrome. P_Chrome2: Slightly blueish 60% gray. Good steel w/finish #A P_Chrome3: 50% neutral gray. P_Chrome4: 75% neutral gray. P_Chrome5: 95% neutral gray. P_Silver1: Yellowish silverplate. Somewhat tarnished looking. P_Silver2: Not quite as yellowish as Silver1 but more so than Silver3. P_Silver3: Reasonably neutral silver. P_Silver4: REDUNDANT (unused) P_Silver5: REDUNDANT (unused) */ #include "golds.inc" #declare P_Brass1 = color rgb <0.30, 0.20, 0.10>; #declare P_Brass2 = color rgb <0.50, 0.35, 0.25>; #declare P_Brass3 = color rgb <0.58, 0.42, 0.20>; #declare P_Brass4 = color rgb <0.65, 0.50, 0.25>; #declare P_Brass5 = color rgb <0.70, 0.55, 0.40>; #declare P_Copper1 = color rgb <0.40, 0.20, 0.15>; #declare P_Copper2 = color rgb <0.50, 0.25, 0.15>; #declare P_Copper3 = color rgb <0.60, 0.30, 0.15>; #declare P_Copper4 = color rgb <0.70, 0.25, 0.15>; #declare P_Copper5 = color rgb <0.65, 0.35, 0.15>; #declare P_Chrome1 = color rgb <0.20, 0.20, 0.20>; #declare P_Chrome2 = color rgb <0.39, 0.41, 0.43>; #declare P_Chrome3 = color rgb <0.50, 0.50, 0.50>; #declare P_Chrome4 = color rgb <0.75, 0.75, 0.75>; #declare P_Chrome5 = color rgb <0.95, 0.95, 0.95>; #declare P_Silver1 = color rgb <0.94, 0.93, 0.80>; #declare P_Silver2 = color rgb <0.94, 0.93, 0.85>; #declare P_Silver3 = color rgb <0.94, 0.93, 0.90>; #declare P_Silver4 = color rgb <0.95, 0.91, 0.91>; #declare P_Silver5 = color rgb <0.91, 0.95, 0.91>; //***************************************************************************** // BASIC METAL FINISHES //***************************************************************************** // F_MetalA : Very soft and dull. // F_MetalB : Fairly soft and dull. // F_MetalC : Medium reflectivity. Holds color well. // F_MetalD : Highly hard and polished. High reflectivity. // F_MetalE : Very highly polished & reflective. #declare F_MetalA = finish { ambient 0.35 brilliance 2 diffuse 0.3 metallic specular 0.80 roughness 1/20 reflection 0.1 } #declare F_MetalB = finish { ambient 0.30 brilliance 3 diffuse 0.4 metallic specular 0.70 roughness 1/60 reflection 0.25 } #declare F_MetalC = finish { ambient 0.25 brilliance 4 diffuse 0.5 metallic specular 0.80 roughness 1/80 reflection 0.5 } #declare F_MetalD = finish { ambient 0.15 brilliance 5 diffuse 0.6 metallic specular 0.80 roughness 1/100 reflection 0.65 } #declare F_MetalE = finish { ambient 0.1 brilliance 6 diffuse 0.7 metallic specular 0.80 roughness 1/120 reflection 0.8 } //***************************************************************************** // METAL TEXTURES //***************************************************************************** // BRASSES #declare T_Brass_1A = texture { pigment { P_Brass1 } finish { F_MetalA } } #declare T_Brass_1B = texture { pigment { P_Brass1 } finish { F_MetalB } } #declare T_Brass_1C = texture { pigment { P_Brass1 } finish { F_MetalC } } #declare T_Brass_1D = texture { pigment { P_Brass1 } finish { F_MetalD } } #declare T_Brass_1E = texture { pigment { P_Brass1 } finish { F_MetalE } } #declare T_Brass_2A = texture { pigment { P_Brass2 } finish { F_MetalA } } #declare T_Brass_2B = texture { pigment { P_Brass2 } finish { F_MetalB } } #declare T_Brass_2C = texture { pigment { P_Brass2 } finish { F_MetalC } } #declare T_Brass_2D = texture { pigment { P_Brass2 } finish { F_MetalD } } #declare T_Brass_2E = texture { pigment { P_Brass2 } finish { F_MetalE } } #declare T_Brass_3A = texture { pigment { P_Brass3 } finish { F_MetalA } } #declare T_Brass_3B = texture { pigment { P_Brass3 } finish { F_MetalB } } #declare T_Brass_3C = texture { pigment { P_Brass3 } finish { F_MetalC } } #declare T_Brass_3D = texture { pigment { P_Brass3 } finish { F_MetalD } } #declare T_Brass_3E = texture { pigment { P_Brass3 } finish { F_MetalE } } #declare T_Brass_4A = texture { pigment { P_Brass4 } finish { F_MetalA } } #declare T_Brass_4B = texture { pigment { P_Brass4 } finish { F_MetalB } } #declare T_Brass_4C = texture { pigment { P_Brass4 } finish { F_MetalC } } #declare T_Brass_4D = texture { pigment { P_Brass4 } finish { F_MetalD } } #declare T_Brass_4E = texture { pigment { P_Brass4 } finish { F_MetalE } } #declare T_Brass_5A = texture { pigment { P_Brass5 } finish { F_MetalA } } #declare T_Brass_5B = texture { pigment { P_Brass5 } finish { F_MetalB } } #declare T_Brass_5C = texture { pigment { P_Brass5 } finish { F_MetalC } } #declare T_Brass_5D = texture { pigment { P_Brass5 } finish { F_MetalD } } #declare T_Brass_5E = texture { pigment { P_Brass5 } finish { F_MetalE } } // COPPERS & BRONZES #declare T_Copper_1A = texture { pigment { P_Copper1 } finish { F_MetalA } } #declare T_Copper_1B = texture { pigment { P_Copper1 } finish { F_MetalB } } #declare T_Copper_1C = texture { pigment { P_Copper1 } finish { F_MetalC } } #declare T_Copper_1D = texture { pigment { P_Copper1 } finish { F_MetalD } } #declare T_Copper_1E = texture { pigment { P_Copper1 } finish { F_MetalE } } #declare T_Copper_2A = texture { pigment { P_Copper2 } finish { F_MetalA } } #declare T_Copper_2B = texture { pigment { P_Copper2 } finish { F_MetalB } } #declare T_Copper_2C = texture { pigment { P_Copper2 } finish { F_MetalC } } #declare T_Copper_2D = texture { pigment { P_Copper2 } finish { F_MetalD } } #declare T_Copper_2E = texture { pigment { P_Copper2 } finish { F_MetalE } } #declare T_Copper_3A = texture { pigment { P_Copper3 } finish { F_MetalA } } #declare T_Copper_3B = texture { pigment { P_Copper3 } finish { F_MetalB } } #declare T_Copper_3C = texture { pigment { P_Copper3 } finish { F_MetalC } } #declare T_Copper_3D = texture { pigment { P_Copper3 } finish { F_MetalD } } #declare T_Copper_3E = texture { pigment { P_Copper3 } finish { F_MetalE } } #declare T_Copper_4A = texture { pigment { P_Copper4 } finish { F_MetalA } } #declare T_Copper_4B = texture { pigment { P_Copper4 } finish { F_MetalB } } #declare T_Copper_4C = texture { pigment { P_Copper4 } finish { F_MetalC } } #declare T_Copper_4D = texture { pigment { P_Copper4 } finish { F_MetalD } } #declare T_Copper_4E = texture { pigment { P_Copper4 } finish { F_MetalE } } #declare T_Copper_5A = texture { pigment { P_Copper5 } finish { F_MetalA } } #declare T_Copper_5B = texture { pigment { P_Copper5 } finish { F_MetalB } } #declare T_Copper_5C = texture { pigment { P_Copper5 } finish { F_MetalC } } #declare T_Copper_5D = texture { pigment { P_Copper5 } finish { F_MetalD } } #declare T_Copper_5E = texture { pigment { P_Copper5 } finish { F_MetalE } } // CHROMES & STEELS #declare T_Chrome_1A = texture { pigment { P_Chrome1 } finish { F_MetalA } } #declare T_Chrome_1B = texture { pigment { P_Chrome1 } finish { F_MetalB } } #declare T_Chrome_1C = texture { pigment { P_Chrome1 } finish { F_MetalC } } #declare T_Chrome_1D = texture { pigment { P_Chrome1 } finish { F_MetalD } } #declare T_Chrome_1E = texture { pigment { P_Chrome1 } finish { F_MetalE } } #declare T_Chrome_2A = texture { pigment { P_Chrome2 } finish { F_MetalA } } #declare T_Chrome_2B = texture { pigment { P_Chrome2 } finish { F_MetalB } } #declare T_Chrome_2C = texture { pigment { P_Chrome2 } finish { F_MetalC } } #declare T_Chrome_2D = texture { pigment { P_Chrome2 } finish { F_MetalD } } #declare T_Chrome_2E = texture { pigment { P_Chrome2 } finish { F_MetalE } } #declare T_Chrome_3A = texture { pigment { P_Chrome3 } finish { F_MetalA } } #declare T_Chrome_3B = texture { pigment { P_Chrome3 } finish { F_MetalB } } #declare T_Chrome_3C = texture { pigment { P_Chrome3 } finish { F_MetalC } } #declare T_Chrome_3D = texture { pigment { P_Chrome3 } finish { F_MetalD } } #declare T_Chrome_3E = texture { pigment { P_Chrome3 } finish { F_MetalE } } #declare T_Chrome_4A = texture { pigment { P_Chrome4 } finish { F_MetalA } } #declare T_Chrome_4B = texture { pigment { P_Chrome4 } finish { F_MetalB } } #declare T_Chrome_4C = texture { pigment { P_Chrome4 } finish { F_MetalC } } #declare T_Chrome_4D = texture { pigment { P_Chrome4 } finish { F_MetalD } } #declare T_Chrome_4E = texture { pigment { P_Chrome4 } finish { F_MetalE } } #declare T_Chrome_5A = texture { pigment { P_Chrome5 } finish { F_MetalA } } #declare T_Chrome_5B = texture { pigment { P_Chrome5 } finish { F_MetalB } } #declare T_Chrome_5C = texture { pigment { P_Chrome5 } finish { F_MetalC } } #declare T_Chrome_5D = texture { pigment { P_Chrome5 } finish { F_MetalD } } #declare T_Chrome_5E = texture { pigment { P_Chrome5 } finish { F_MetalE } } // SILVERS #declare T_Silver_1A = texture { pigment { P_Silver1 } finish { F_MetalA } } #declare T_Silver_1B = texture { pigment { P_Silver1 } finish { F_MetalB } } #declare T_Silver_1C = texture { pigment { P_Silver1 } finish { F_MetalC } } #declare T_Silver_1D = texture { pigment { P_Silver1 } finish { F_MetalD } } #declare T_Silver_1E = texture { pigment { P_Silver1 } finish { F_MetalE } } #declare T_Silver_2A = texture { pigment { P_Silver2 } finish { F_MetalA } } #declare T_Silver_2B = texture { pigment { P_Silver2 } finish { F_MetalB } } #declare T_Silver_2C = texture { pigment { P_Silver2 } finish { F_MetalC } } #declare T_Silver_2D = texture { pigment { P_Silver2 } finish { F_MetalD } } #declare T_Silver_2E = texture { pigment { P_Silver2 } finish { F_MetalE } } #declare T_Silver_3A = texture { pigment { P_Silver3 } finish { F_MetalA } } #declare T_Silver_3B = texture { pigment { P_Silver3 } finish { F_MetalB } } #declare T_Silver_3C = texture { pigment { P_Silver3 } finish { F_MetalC } } #declare T_Silver_3D = texture { pigment { P_Silver3 } finish { F_MetalD } } #declare T_Silver_3E = texture { pigment { P_Silver3 } finish { F_MetalE } } #declare T_Silver_4A = texture { pigment { P_Silver4 } finish { F_MetalA } } #declare T_Silver_4B = texture { pigment { P_Silver4 } finish { F_MetalB } } #declare T_Silver_4C = texture { pigment { P_Silver4 } finish { F_MetalC } } #declare T_Silver_4D = texture { pigment { P_Silver4 } finish { F_MetalD } } #declare T_Silver_4E = texture { pigment { P_Silver4 } finish { F_MetalE } } #declare T_Silver_5A = texture { pigment { P_Silver5 } finish { F_MetalA } } #declare T_Silver_5B = texture { pigment { P_Silver5 } finish { F_MetalB } } #declare T_Silver_5C = texture { pigment { P_Silver5 } finish { F_MetalC } } #declare T_Silver_5D = texture { pigment { P_Silver5 } finish { F_MetalD } } #declare T_Silver_5E = texture { pigment { P_Silver5 } finish { F_MetalE } } #version Metals_Inc_Temp; #end // Persistence of Vision Ray Tracer version 3.5 Include File // // This include file is part of MegaPOV #ifdef(MPConsts_Inc_Temp) // do nothing #else #declare MPConsts_Inc_Temp = version; #ifdef(View_POV_Include_Stack) # debug "including mp_consts.inc\n" #end #version unofficial megapov 1.2; // OUTPUT IN CAMERA_VIEW CONSTANTS #declare Output_Color = 0; #declare Output_Intersection_Point = 1; #declare Output_Normal_Vector = 2; #declare Output_Perturbed_Normal_Vector = 3; #declare Output_Depth = 4; #declare Output_UV_Vector = 5; #declare MAX_MEGAPOV_DISTANCE = 1e7; #version MPConsts_Inc_Temp; #end// Persistence of Vision Ray Tracer version 3.5 Include File // // This include file is part of MegaPOV #ifdef(MPFunctions_Inc_Temp) // do nothing #else #declare MPFunctions_Inc_Temp = version; #ifndef(Functions_Inc_Temp) #include "functions.inc" #end #ifdef(View_POV_Include_Stack) # debug "including mp_functions.inc\n" #end #version unofficial megapov 1.2; #declare f_triangle = function { internal(79) } // Parameters: x, y, z // 10 extra parameters required: // // 1. - 3. coordinates of the first vertex in the triangle. // 4. - 6. coordinates of the second vertex in the triangle. // 7. - 9. coordinates of the third vertex in the triangle. // 10. thickness of the triangle. #end//mp_functions.inc // Persistence of Vision Ray Tracer version 3.5 Include File // // This include file is part of MegaPOV #ifdef(MPTypes_Inc_Temp) // do nothing #else #declare MPTypes_Inc_Temp = version; #ifdef(View_POV_Include_Stack) # debug "including mp_types.inc\n" #end #version unofficial megapov 1.2; #declare UNDEFINED_ID = 0; #declare FLOAT_ID = 1; #declare VECTOR_ID = 2; #declare COLOR_ID = 3; #declare COLOUR_ID = COLOR_ID; #declare FUNCTION_ID = 4; #declare STRING_ID = 5; #declare ARRAY_ID = 6; #declare SPLINE_ID = 7; #declare TRANSFORM_ID = 8; #declare CAMERA_ID = 9; #declare LIGHT_SOURCE_ID = 10; #declare OBJECT_ID = 11; #declare MATERIAL_ID = 12; #declare INTERIOR_ID = 13; #declare TEXTURE_ID = 14; #declare TEXTURE_MAP_ID = 15; #declare PIGMENT_ID = 16; #declare COLOR_MAP_ID = 17; #declare COLOUR_MAP_ID = COLOR_MAP_ID; #declare PIGMENT_MAP_ID = 18; #declare NORMAL_ID = 19; #declare SLOPE_MAP_ID = 20; #declare NORMAL_MAP_ID = 21; #declare FINISH_ID = 22; #declare MEDIA_ID = 23; #declare DENSITY_ID = 24; #declare DENSITY_MAP_ID = 25; #declare FOG_ID = 26; #declare RAINBOW_ID = 27; #declare SKY_SPHERE_ID = 28; #macro Type_Of(_Id_) #local T=UNDEFINED_ID; #local U=T; #local T=((T=U)?is(_Id_,float )?FLOAT_ID :U:T); #local T=((T=U)?is(_Id_,vector )?VECTOR_ID :U:T); #local T=((T=U)?is(_Id_,color )?COLOR_ID :U:T); #local T=((T=U)?is(_Id_,function )?FUNCTION_ID :U:T); #local T=((T=U)?is(_Id_,string )?STRING_ID :U:T); #local T=((T=U)?is(_Id_,array )?ARRAY_ID :U:T); #local T=((T=U)?is(_Id_,spline )?SPLINE_ID :U:T); #local T=((T=U)?is(_Id_,transform )?TRANSFORM_ID :U:T); #local T=((T=U)?is(_Id_,camera )?CAMERA_ID :U:T); #local T=((T=U)?is(_Id_,light_source)?LIGHT_SOURCE_ID:U:T); #local T=((T=U)?is(_Id_,object )?OBJECT_ID :U:T); #local T=((T=U)?is(_Id_,material )?MATERIAL_ID :U:T); #local T=((T=U)?is(_Id_,interior )?INTERIOR_ID :U:T); #local T=((T=U)?is(_Id_,texture )?TEXTURE_ID :U:T); #local T=((T=U)?is(_Id_,texture_map )?TEXTURE_MAP_ID :U:T); #local T=((T=U)?is(_Id_,pigment )?PIGMENT_ID :U:T); #local T=((T=U)?is(_Id_,color_map )?COLOR_MAP_ID :U:T); #local T=((T=U)?is(_Id_,pigment_map )?PIGMENT_MAP_ID :U:T); #local T=((T=U)?is(_Id_,normal )?NORMAL_ID :U:T); #local T=((T=U)?is(_Id_,slope_map )?SLOPE_MAP_ID :U:T); #local T=((T=U)?is(_Id_,normal_map )?NORMAL_MAP_ID :U:T); #local T=((T=U)?is(_Id_,finish )?FINISH_ID :U:T); #local T=((T=U)?is(_Id_,media )?MEDIA_ID :U:T); #local T=((T=U)?is(_Id_,density )?DENSITY_ID :U:T); #local T=((T=U)?is(_Id_,density_map )?DENSITY_MAP_ID :U:T); #local T=((T=U)?is(_Id_,fog )?FOG_ID :U:T); #local T=((T=U)?is(_Id_,rainbow )?RAINBOW_ID :U:T); #local T=((T=U)?is(_Id_,sky_sphere )?SKY_SPHERE_ID :U:T); (T) #end #declare NOT_SPLINE = 0; #declare LINEAR_SPLINE = 1; #declare QUADRATIC_SPLINE = 2; #declare NATURAL_SPLINE = 3; #declare CATMULL_ROM_SPLINE = 4; #declare CUBIC_SPLINE = CATMULL_ROM_SPLINE; #declare SOR_SPLINE = 5; #declare TCB_SPLINE = 6; #declare AKIMA_SPLINE = 7; #declare BASIC_X_SPLINE = 8; #declare EXTENDED_X_SPLINE = 9; #declare GENERAL_X_SPLINE = 10; #macro Type_Of_Spline(_Id_) #local T=NOT_SPLINE; #if(is(_Id_,spline)) #local U=T; #local T=((T=U)?is(_Id_,linear_spline )?LINEAR_SPLINE :U:T); #local T=((T=U)?is(_Id_,quadratic_spline )?QUADRATIC_SPLINE :U:T); #local T=((T=U)?is(_Id_,natural_spline )?NATURAL_SPLINE :U:T); #local T=((T=U)?is(_Id_,cubic_spline )?CUBIC_SPLINE :U:T); #local T=((T=U)?is(_Id_,sor_spline )?SOR_SPLINE :U:T); #local T=((T=U)?is(_Id_,tcb_spline )?TCB_SPLINE :U:T); #local T=((T=U)?is(_Id_,akima_spline )?AKIMA_SPLINE :U:T); #local T=((T=U)?is(_Id_,basic_x_spline )?BASIC_X_SPLINE :U:T); #local T=((T=U)?is(_Id_,extended_x_spline)?EXTENDED_X_SPLINE:U:T); #local T=((T=U)?is(_Id_,general_x_spline )?GENERAL_X_SPLINE :U:T); #end (T) #end #declare NOT_OBJECT = 0; #declare BICUBIC_PATCH_OBJECT = 1; #declare BLOB_OBJECT = 2; #declare BOX_OBJECT = 3; #declare CONE_OBJECT = 4; #declare CUBIC_OBJECT = 5; #declare CYLINDER_OBJECT = 6; #declare DISC_OBJECT = 7; #declare HEIGHT_FIELD_OBJECT = 8; #declare INTERSECTION_OBJECT = 9; #declare DIFFERENCE_OBJECT = INTERSECTION_OBJECT; #declare ISOSURFACE_OBJECT = 10; #declare JULIA_FRACTAL_OBJECT = 11; #declare LATHE_OBJECT = 12; #declare MERGE_OBJECT = 13; #declare MESH_OBJECT = 14; #declare MESH2_OBJECT = MESH_OBJECT; #declare PARAMETRIC_OBJECT = 15; #declare PLANE_OBJECT = 16; #declare POLY_OBJECT = 17; #declare POLYGON_OBJECT = 18; #declare PRISM_OBJECT = 19; #declare QUADRIC_OBJECT = 20; #declare QUARTIC_OBJECT = 21; #declare SMOOTH_TRIANGLE_OBJECT = 22; #declare SOR_OBJECT = 23; #declare SPHERE_OBJECT = 24; #declare SPHERE_SWEEP_OBJECT = 25; #declare SUPERELLIPSOID_OBJECT = 26; #declare TEXT_OBJECT = 27; #declare TORUS_OBJECT = 28; #declare TRIANGLE_OBJECT = 29; #declare UNION_OBJECT = 30; #macro Type_Of_Object(_Id_) #local T=NOT_OBJECT; #if(is(_Id_,object)) #local U=T; #local T=((T=U)?is(_Id_,bicubic_patch )?BICUBIC_PATCH_OBJECT :U:T); #local T=((T=U)?is(_Id_,blob )?BLOB_OBJECT :U:T); #local T=((T=U)?is(_Id_,box )?BOX_OBJECT :U:T); #local T=((T=U)?is(_Id_,cone )?CONE_OBJECT :U:T); #local T=((T=U)?is(_Id_,cubic )?CUBIC_OBJECT :U:T); #local T=((T=U)?is(_Id_,cylinder )?CYLINDER_OBJECT :U:T); #local T=((T=U)?is(_Id_,disc )?DISC_OBJECT :U:T); #local T=((T=U)?is(_Id_,height_field )?HEIGHT_FIELD_OBJECT :U:T); #local T=((T=U)?is(_Id_,intersection )?INTERSECTION_OBJECT :U:T); #local T=((T=U)?is(_Id_,isosurface )?ISOSURFACE_OBJECT :U:T); #local T=((T=U)?is(_Id_,julia_fractal )?JULIA_FRACTAL_OBJECT :U:T); #local T=((T=U)?is(_Id_,lathe )?LATHE_OBJECT :U:T); #local T=((T=U)?is(_Id_,merge )?MERGE_OBJECT :U:T); #local T=((T=U)?is(_Id_,mesh )?MESH_OBJECT :U:T); #local T=((T=U)?is(_Id_,parametric )?PARAMETRIC_OBJECT :U:T); #local T=((T=U)?is(_Id_,plane )?PLANE_OBJECT :U:T); #local T=((T=U)?is(_Id_,poly )?POLY_OBJECT :U:T); #local T=((T=U)?is(_Id_,polygon )?POLYGON_OBJECT :U:T); #local T=((T=U)?is(_Id_,prism )?PRISM_OBJECT :U:T); #local T=((T=U)?is(_Id_,quadric )?QUADRIC_OBJECT :U:T); #local T=((T=U)?is(_Id_,quartic )?QUARTIC_OBJECT :U:T); #local T=((T=U)?is(_Id_,smooth_triangle)?SMOOTH_TRIANGLE_OBJECT:U:T); #local T=((T=U)?is(_Id_,sor )?SOR_OBJECT :U:T); #local T=((T=U)?is(_Id_,sphere )?SPHERE_OBJECT :U:T); #local T=((T=U)?is(_Id_,sphere_sweep )?SPHERE_SWEEP_OBJECT :U:T); #local T=((T=U)?is(_Id_,superellipsoid )?SUPERELLIPSOID_OBJECT :U:T); #local T=((T=U)?is(_Id_,text )?TEXT_OBJECT :U:T); #local T=((T=U)?is(_Id_,torus )?TORUS_OBJECT :U:T); #local T=((T=U)?is(_Id_,triangle )?TRIANGLE_OBJECT :U:T); #local T=((T=U)?is(_Id_,union )?UNION_OBJECT :U:T); #end (T) #end #declare NOT_CAMERA = 0; #declare CYLINDER_CAMERA = 1; #declare FISHEYE_CAMERA = 2; #declare OMNIMAX_CAMERA = 3; #declare ORTHOGRAPHIC_CAMERA = 4; #declare PANORAMIC_CAMERA = 5; #declare PERSPECTIVE_CAMERA = 6; #declare SPHERICAL_CAMERA = 7; #declare ULTRA_WIDE_ANGLE_CAMERA = 8; #declare USER_DEFINED_CAMERA = 9; #macro Type_Of_Camera(_Id_) #local T=NOT_CAMERA; #if(is(_Id_,camera)) #local U=T; #local T=((T=U)?is(_Id_,cylinder )?CYLINDER_CAMERA :U:T); #local T=((T=U)?is(_Id_,fisheye )?FISHEYE_CAMERA :U:T); #local T=((T=U)?is(_Id_,omnimax )?OMNIMAX_CAMERA :U:T); #local T=((T=U)?is(_Id_,orthographic )?ORTHOGRAPHIC_CAMERA :U:T); #local T=((T=U)?is(_Id_,panoramic )?PANORAMIC_CAMERA :U:T); #local T=((T=U)?is(_Id_,perspective )?PERSPECTIVE_CAMERA :U:T); #local T=((T=U)?is(_Id_,spherical )?SPHERICAL_CAMERA :U:T); #local T=((T=U)?is(_Id_,ultra_wide_angle)?ULTRA_WIDE_ANGLE_CAMERA:U:T); #local T=((T=U)?is(_Id_,user_defined )?USER_DEFINED_CAMERA :U:T); #end (T) #end #version MPTypes_Inc_Temp; #endGIF87a@x   $(,$$$,,,,0,0404,448<444<4@7;@;;@@7AAIIAEIEAMEEIIMIMEMMIIQMUMQQQUQUMUUQUU]]UUYYYU]YY]]]]]Ya]]aaaaa]eaiaaeeeeemeieiiemieimemmemmqqmmummqqmmumqumyquuuuuu}yu}yyqyyy}yy|xx|||||||||º¹¾¹½½ƽƽýƽƽ,@xմy#=|"tHQG*a))SZe+W/`Đ1F ۶oʝSn^?}sΜ8o٪AcX0_pٚժTHiSK&EzhQCgO;uyF 3dĀ%*R8aH!A|Ё 0\P!>tؠ "p<䘣ldP CIDEdQGs2HcM6݀39=d3h6DX 9 z('1J,SvL0P?"R8 /@5Ap FЂKTt0r"<.rt $tl` < F&<4X1U*t@H0HOS,n15`TM͈5*c%<}أ= ?E.lWNP SpRܠG5QkK%rp /h 0%:qS He*ά2| F s<8(DaW"p` v⠁dqv 3 h` 1 a,idB]P1ء 80!21tΰ%-p" :a;4! 7d4@~K$CA(3< e40! `CD7<1St$&aLX+bA .6j t,K>QsthF2&^w+ +R;i @94c *J. TvIOR)8A@S.Pep*^H:: c \k @(0, PE5 8"88,b8A * ^" bXxRȡQ-A$BqHcͰ91PAhF>J> ~(4!+`9.xx" (E %C_52A(Ȁ'(H`=4`;.1.f92D ԤQqU'DUriLXJ^|C 7ڌ4 cnAcZIO($DMb 78 dP&(D6Or-A)Kk:T Xpv-hD J\@)q4xA YPI=#5q\`a8|AH.z `(#PFz1] x ^L Ѹ($p!)p & Yȓ )3x,j]dyar6a%s#{P=wcm۰ƙ`M +T'RUODE9qb ͆4 Z *˄G/l'- hzt>ݧRQnh,0gH -09BŘ8@T0 aRBF8yADLQ;DBs'y\P61H@ x`  zP U ^`p0 L@p O ۰ E#P3pb0 P @@t C '  & @@ NutQ$@ ` P$ ŀ ˀ5cTFV%Pvg7ߠ j gBA x3wwXP8PXX|Xwxshw!i9qi6gZjFj O` j0& ,_` Ұ`'@>`K%: 4Q ~ p}P 8 ]S@P i=^,E` Cp `} eK@ x00 O0 P= pF0^00@` @ @d QGK4P^EƐ Y(FcgT|e3&c ٠v ` vW0g0pg08Sw~H2hcj@]`Uxhx99fyHZ'jAE` aF`Nu Z0 !00ހ   pHP PH ` O FQ ɀx PP p@w` .,TB j`~c R T qP 0 0 ` @= pp_  P 2HWFF TU[EuVeǐ %Z \5w1qffWP)q&GXPw~7Nq0XUwhXolS t!D)s)8f ?p@ D( RsP P@/*  pJ@@` pbP I 9  ـ Lp"Y@`<݀j M@ <` 1 0 0DA3P0k ,@p s`` ` `rP ` `bP , ੫ JDP$M7eP RHVY7%܀ 4F@0 O9 f=f`Wo7~uWK'_y #TX`XR*9\WPqItѥza*0e? ` B`T0  RbaP  NP ; 0@ #p  ^PS @ 4 @ lp P` ɀ@ А Fp R 00:@ӀW P o$k0Af03;pW а 3) 1tME[U]4 ?٢BɅWӗbGPf j @ >G) +K'{C x{H]uXeha=qaI7Px饧MK@ M`ˠs0 9 g 0ؠ 'p0@p L w P p  0a0pp0 ( * `Ǡ/0 yŀ & `@ ~0A  և @|0 %!]P'U P`PEUQSXW_]f [5`VP < 0 !p a0 V vQp & " E@ A)07@ e`  P1P | y$͐ KP pWPkP Pr` @f w[0PƠ. q` @ $>뼞 0 )Fbsieݠ P -\w}p . 0Hޖ'Ws(.yRyi~ lPV HP(Bp NJz heّXH{Bڿ,֥brsJhKAG:7 6) ?Cfa9 ţ Î3]i1Lt;$R &(l\)V*5@Tᄏ.b Aվ(bKчf8tE&]i*Vhld̞Ev-6ođ;;']:suۆ5iМ1Sa~+[h͒땫VVJ թSL*E(Qp!@ ix2A(lp j<)Th@pޙKC7%P0$Yq$)H釋`VEx$Tv@;`D$ND9Xn%bYƙhf5:ұwc?a+6CL`i0~ы: ,d1l't+^X('4Q B~6 aʬ@(<fH!@j 4tgA1JAJ"8C6`t|K8X@ A/! !5 ``A8֌V ؄`'@Hq9# 0D&@Q m< @'n^?7`8 FJdA6HdA4tC ЌP [@R,c1p,SP3@ \!]$s FD)R Z"^nP:1Σ>1x77/~E8r1 a8`sP-lq ]+L MP0D ; lH/ S("ęՌNQ@EYhB(0 ^@0aHlc fDDj`-4nFP _s,6h3n BҘC -`HD\0l* f`83C?0d > &dP3$lP!|07@A|@AV`P> ZFuxЧ!IXbZE,p d<P C1x(p9p:txG8a0%P }4~:@Bj@#h"mxA~0PsBm 1x#h@ F<L0RX1-QAFXP9G61{D`D3pR @#{!GH)ZA ^C7at=Jl|<GbuHAc:`H1E BE/~!b,G5Q V#!2 e*P;،)!Y LC=,)A~p-Р 92 (#@ oأV $`l01F0_8 -HB1B Exp7N @%1t'*P `E2qE` ! h?@9A7#4(LOpdH >ȶ(0cSMRa?CIIW_PnP1u0r0t؇|ۇ̨{cu@ހ1 1*8&<:_`nYhumP^TME0!iI3K&ЙGUp M(sHyTUQHbH>ȆzPVng`x@_p!$`>  eHJ`H[~@-h2xM`(h0xn`pK0 *8_n, WOL8 @P 2؄x `0N ^ ؆T 4*Ȃ3O0{h6UP8؆& $2 TO U\fІtAw`vxyyɨۈ~Ї|vX| i(":*` `a hhpp~ k0'+O)O29xʂ!*"i7|;9C;;x@@RȄd(l-8/,NVs8lІgy,P%@M؂s0}(1 8?vP5x|HP787(V8${)@I D\)Sh(`lX3Pxp/Ȇ=p[A(Kȁt@9P *T U* zPr0vHCRXY8ht~z0MB}|p}P xPt1І 0)\Cc0Bb`aP%Eb8din(wzhTK"ٲ-z˭J" 9;L0؃7LЄrx>ȁ*8G؁xUdH]hI#Hbg _hZ8CHoH(J7Fq0P{0K@y؆gp@Ɇ%< h 8((?'<Ђ(Cpp=8drQx;p2Ё4@8q:lxgȆvHЂGXT/؄h=IV ̈́O(Vp~®}yy0M{9Dù Jlع 9"":cٟ=dokrhur`ະKGPB?`! /32[SC7 91Ȃ1 _GPy`601H8H Hh,`TYxXVzQh*H1<&U.8s O0`"P1`eDPREBXQ#0o@L04h P+>W8Ok-Bp/sH_@pH jM`ERqh ؃^0+``j \Ya|: GhO0Vaph+x }sw1KQQUI4rYmQ%Jh0JfYKaePe0ZqX}w l``W8/CBLKJCQ1SӮz#[(2[9%$$H :Mk6P*x3)x HgH+@UP93sh?Vx%@[6'DɃ<2XHugz(6`"@0p+PXw00f !8L W%hHL&(GN؂(e@LYXL-`"`.KyX6Z?`0І,38XS6bvxtQwyhvXjJY}h^aoֆޗYvkfingpnuxipe\U (-hKY-V"b:`H A8#lwY`7XM8Xl 6N@{*\hhwX0P*XpEȅXO:Jo H`@9LpH$rЃڕX&^50|PI@@+(hG\1ȁ4Xx. H( X%RX(0 4P60[ mt(sQZt@Oh^Qqp9a>iVhit~oe]VMxFbl3<2=S"26,.j|Sj |U\9 p(P0hArP\N!`5{l(Nnpiho00@ P#r(eT(u}X>fAX}x@H;<І5  T-HHSXp*H6X:|Q o8 +HZ64+ ֵ e݉24JvPHK@!% * 1R >Gh1I݀iPt15|{1׃3VX:GΨigzH!4%rJ+L1(Ì3D3M5iM7|8䘃:x?=N;s9X訣9cP7 iM6I$lȍ┃;1D3 C WBC=h\3 hb @"ӘB3X>ň"0D)3S/+"9!N=`CX@6BȂ)%G#T'K- 1$L3\X5l7C9=><סQN:7t iݡX9C>s8LÌ1JH"2QqqdXXAz*DM=TU@h6#95X'JT%|IC!zx8 #c>9[ h:?6˨S+TE: P0C 8 2A;,l -` ATb/k@4 р0BH=p 04 RLCw@.ͨ*L _`'B%7CxgTgHp2>x%0 QE.x alg=5!oMG=݃/;dciG=ܱtGd&=1D#R{5b@(4&E MyMڠ3! _$G<1rSTp u&J04`a = 7`h ?a%""I"3!)` 6X F*01CE`-M MP f@)~@CX qA(66$ 9&a-A*\0 4pHzb;@"x@ A4=CfP<8"!Kl"fhq 4AqC"R;A{背vЕxG<|j<*8(?nF6::Q"xC:qHlL,VQOh`DL=MlxO|JQVH0R4(U`28G0V[lgFpcpv4G.BUHcȇ=a<&B`kĀ TQh(A!a4pCG-P{az!$1!; n@@?A{nPC0D$ /0C ap <-bkp N N,@$A!bK LQg5J C(M Wdu0q UHY8m>13:;dXElPPBvxa `,t;0Ѕ\@ &p#F:$ȁ!1J ژB4*'X Բ$r8*\!ZhPs2* e## L|s<>cP=я5F4ByGʏ}lG<(}lR(ЎVMܤ W'E͵氩ܠv B @#4<  F(p @Nct=z@~ ԁhcEHF"q D"{@:ԡYH -AA2TM E?1 PB-܀CD-B\ @:8B;`(9 @7i %d1h(D9?X9B)D%.hC;@#C$BAU܁A M%h'B)+ڵ0ݚQȅ!MC=\WC<\<å>؃<C <=L 籈 jp:PC1B,)pV%DM'yZQ4ŖS@l/̂-,C<H  ,A )xB8<3 h lXB0,1A;B>BLAC4 .B<Hl H"--:#tB A"\@>7B C7 1 tA"A13(`xnyC P!0 tBD44|P.tA)Cd>t2++؀b !@#x&(Y+.VY(Cϸ6tC;ZA9=!= uE>#\ɕ;0 =ԃb⃊=<4xA܂C H@8C4x=TD564-A3dC1dB07C2 A6T65|Ё),t) B,:ld3@@D@@)dd)܃A:|6t9U^ɤ "4$P%!>-D/1LLCd8;ԃH]ڃʩb>ÔH_fܩ>dÌâi3ߨaMNAʼnj +V2@Q?X-  T?.A,D(**/xACB!ԁX 48h+DAD$,x*A, 4PlAt@ 0' 87TBBB /8! 0L$C%$+lB=Z67|”8$($@5,|>"=7ăP4H0&@"0$80#a&p(|e*a۩ل-ѥi^c]U>DMvC;,j9C8|6\4 0+(xB&T©f~Y)"6RA)-$$`,\B" %3 1L>d+Ђ)`2 7 ZMU0̀0p,$94'pALA 2AԂ@4'dA@;@:C@7$X*L2x4x", B9 @2@1A$;+"<8C 7/,9DB87(LvB,84%%_nC=28t74,1(|&xg%¥$N*ΚRjAv$#A@`A*x@A":<@ Ѐ @L%@?Bl<,pAY ?&# 7X?8|B@%5L=8,C_@؀!#̃,;pA 'd X*(  @>tԉ5):" (,'T #tH0)0+p %  d4 *Cdh LA 8C5 Pqׂ*8x|t4P't/$3\BBDBXC=XB$`A (Aā5<8<><#)>A@5B ȁ"( @0t"(&Ԁ7P@>d0+/49 t$}7vwmTI#F/Lκ ňI'>9\$Y B̽vE%iE=!pCQd J=R]DK!@uEM߉-` `4c(a2H7=CBYđH(DN@ŔTVq%ZnɅ_!eF ti( R"""E"ixigt'oiYbp)WT9eP:ĒI"qc + ,bb x#U8@BAmqI!ď; Ê!RX^Bn4bi,  X!ڈ$Gا@r։'uQfDDg ,pO9E G.̑#ĔNa.a:L gEDG 7Â]xlNQ+#DJId&OC80A7"# /pI,ɄOD)a} dyFj٦s}(RȥH|du)gpjqFcdqeSH zE)d@#;䤳ڪ?@>F"&BP&0@w‘U F'$,@xVB%b 1qcqgWz'}giG'V #Kl`xPep% #iÉ .4%aTv YuP\p)hh/,FR<`p=G28-!3=tXVQ"p"]8 Zaa $Nf!BB\RB-p <ж F#R-#OǒD5aMkԠ21 @E) 3Q"MH! !ny7=UA,P\Hp )QX2&Lh'6h/= @E[QY` aY-?ȇ4z8,cX`J@" 1-{̂ !"`hPD(!%B#R >Ѐ` 80(8@QD61,QJGA Ԥ=YJqc.G=2S qyӞ*q"IR#kHRsTX"Li/A YuSZ9jX:JM0 &f@;Q78!@; [u0 cd {'c8\Ud OA0 r[U`T)pnbUw TpX; U0@ѐFLTب.rB~H- +@ A u 00yC8<h` ް/DΝn;;xwz{:nQ> _xDLpx"I* Rr|c89 \BOMBcM 8 d*\ ob+fn `n >F`:` 0*a |!*A6`h Z4@A !!.Ҋ@f :bA@aȁ6A*aޠ@N aDa`B`a>   l؍M@ o,g\i>#2Pmq"JB!kvafaǼFAm(fa @檀 @X>  Tb  Π f8`!b ځ 6`@:, (`!x#aHl t ``2 apA !R`HA lA <@FA @B( J:6aB jHJg^$FBaitkoH8!Akl@Nd2!$J+Q `@6A !@aHaAb! ~@܁ h a؁`4  rޒFJfTFda#00F1T#!hjk6n'|l4)T 6g <`Pa![bxAb ~ځ@!P   !rj=߳"ara0!an6A KrA!  Zڀ v$!H @A DrtG-GE1dhfLET0j&K7JoJ4tQA!AHs3cT1 ,AȪn4`nN` fSԪA)š 8aAaV~ x6 j@Z`A .!% VAw 4'\ah `b@`AF*\  2a>` \^ Ε@@2FA2 ^̠Ơ Ѝu.W4*bF`OtaxaadϦcH."|hLdd&8j]d`4gVMJov}vN ` S>B x ^!ai!@ 2@'AaȠ4 t =o%mA>@"` B lZ2 !~4X! p`"! p@ ڸ(`v` !VxyYȅ`eD$/rRþZ I-V"o |&ƾLv!eiA44*MPNM XgF xv Tba\L` @AR r!b@a  6"@ ́a6Aȁ֡wړ#-  A@ R Z.AAh @ D_ $l b,8 $@ 4!x2e>$DfV`H4! NGR1aI֡hLdK!䯩VVISD)(N !b`~ @ @a`lơ^!d`f`   b*Pء!vj Da@A`AJB\a~F!B JA J@2d A*l!C4ޜW6f$ÆHB?!ZᒨIށЁzkdlfLga LD<!ȱ!;g%{ (!x@&!H ^` L$j!xd*! ֡ Ra<@>, Z *i (4o |`aXePp  v/A @ x(\l` !@%Y6C8*f04F|a!G< I4u\":NIfJDhBKK~s[]V4\܀ ցn!naA d: ,! @`Ơ ^A  A$`h%iG  f@@@d bd .fA@ !~ؠ@ >@Pa `:a  ! n  n a : U&̒MN$/wV A]Hp HቘdL~A~a%W [ʩRSg= @ ޠ* X0gAa0a6 ! Q)MnHk+0bh8wئ!tjP.q82ʔb ah& C[JĪ"Zᑂc E Vv*&`F7pаW5eU@>NVTXЀ .A3 5m̱A-r$R&NHZj-] 3l3hҪ]8qΥ[F1R["L,`4 `FOE%א^}`1$hI(J,‹ei5dM7߄3Ni#psN96T3M40 2YvB,x䙇'hrI%7_}wr4O/a?P, ( " BLE!o V8K8DR,AC9؀@1!?td'0J\T3 7gpS) aO!&pCk!"lH;bp6Z\,S+T!CO<9rIͶx[0d .k.xJ*&H#ڇ_v˯g!,Y< (}aݬQnQd0/ȅ,VI Ȇ <@ &0t,aЌ|h# o?14 2 B J FP1t ~фbx K'4 (& !66# C9CX&>V0f<#L6R'q4`;Ї>FwyXq1jYقt`E2Y+])DK> 8@5Hh# ܱ 23 ΐ ށYаG Gd# ƔBE.|A d0cbM5 ekRXce\o8erk`+|u ȅlѝY|H)FLf mk`ACE/-D (q' `C40PdĂ0\A]u1^pԈ/p;Ћ`X<Xc i?qc"A $lK.ZJPXȁ|d %*L `@ mDȂ:i AD" _~QWE4" Uɋa$2, oJ(bSJy㱑5%l,X lAYƒ+4/:;F1ZakU4C|6Iցk#N EJq+, ~!A A q(\6f -@b {E0 6<@H8t`fc F2Pw'`hXD(я L܎8*As ?(= %X PA ]H!\Q*0}!NlE.hphphuds{@se>Y <1hZĆ5Ke$0R+i_`|.lVl㋄#C "~(phQ APC rơw v ΰ?@80a``HC+LBڀ Bzh kF>J}D^P*hF|apP0(}0p!܀98B3@ʐ b0p20 .$ 0 P΀Vp,Gsw=7t 0 P䀃mVpIJsVZuJu`7Sv6C` nw۲ r tG fw @ @ x x0xz :@5:0@mhE@ "@@ 0 0 `  0 ЀCprP:@0 s !`̠v n cT0  p  h FP o0=<| Јm` P M0= Z `/`X#eprH p `ϒ:?suPJyV,gYI;vLhv [ v d E ր i 0 `>a~/!P m`/;m0P 0ߡO`V|0 `pp m^ `+p 5  0 Q0P`'R`0o W@#PQ \@ KB   0 `{`l`w j +0+pNː;b @ G@ @ sbHW @vc`"g;&uf;1;|{g~}jQ; o7 > A 4 @ P 5MeMԕs` E T Bp (` F`VF C0 p `^;p `0P p0 X0 s p 3@O >R-a `P o 0 T VP  a0@8` =`Ā xP  gR K W` @|P @ ppg`h#YMY$%v;~V;w+bJr`<$v@ ')΀ U  İ j l膆x[P R`p 0P`a 1 ?peUp( 0v  1@ 4?34S P0٠ |݀ pɐ 50bq @@p 00  0" EP pjp  `,F`z e @ Ю0+09g{cJJ"@1-ɳ Wȓ;'* p:瀑p ` @ZWi> xwp IjgPx@p =` ϰ 88@ @ i 6@u0 =/upM& ? C fnB   $8 0 ` @ 0 QABj 2`HPJ\0"p fy +P [f`k: y hRҽs, ̽,P<բ ـ f l `| ݠ@ְ &i[e/uqt` Pް x@A :  + /\` d @ ˖ $` А ` t `p q` ˰`P_p İ$( Pp갣pa v-@P\` T7 >4@ TN0 #_v Uр @`"ٓJB;M(Y ̾ڗ(YaK0ܰ m۵ ڰ h `  `Spp08p [0? ǀ  S }e@ `bp  ` ]PV 0΀ ؀lp r. Ԑ P󠽵3@Y Kp˷u0vv[4٠E+Kh7u@/mVu07Y@ @ ࣡@)2p l~ 57  *0P ` h O% ` ð`q Z@N` V0 1 p`jЇ ! fS " p4KLrX/n%2Pb 12d(. )(!a@nД 'yk*fLGc̠Y&;z"$J:2*-^5[9u={޻7Oyqwyqҳ|uݻw#Lx,>}}7޻vԡ;W8qm'n\9tԥS, )xS1rC Lb(=h4b5u[%H'q0΋9<@y1 [%, H9BY80Z@$GifTLg TfIg oH1Id y&vKqY`1z9%0aaZ J`zA'|J(BJ)Jdsؑ|3Kxw E@ TzRl*N;5|鋵&;qrI'{!4{͇G}1Ɨ[diRBDK(FAyd1C)' $ $ygcPAv`jimHQD%Ri206)" Aj&`=*ilcڹ+9eg.RGHQ] PF +fG-UꁣZ@%ԱbL^Pf.Ї4ԩC RJWh@)G^4 jJQNa%[zәjǴz|GPwi'2v*gxY- P5}S̒SI}2yP,V5gsBkGPS~5HGc~eWR1EO6aDZjY򈢇XD"Ċ*fV'jALaq9@" 6B @C~G&6[77-p.|A e@(O%LXK?l{U18 c"xmFe5K ! 1!#_J:C¸0~tN ؇5щ0A0?T rK@0%Dn@x:聄obpQw,H/, Ѓ54"HA=FbA < hC<V"6*1c| P' ԡFX N 50(!,>DolR28TbE1!lc(>$ќCw3GzhJv`.5KJ@ jPu2PET\=N%9^VR4`GjA|x;Qpx#X1| ZY hI˛&H~pT0VQ$h2+h(:P \ #XA'(be@'j mGD&qv`Xr#tbxG"z0"l Q̃ (v@!(qcrV-\Ġ8@, T`F"yx.a dQF,a )!/AJlϨC  m @(P Z"@7:cXeOX;ޱf=rV5e[SJ1c|UN8n7A g$c.+RQ qYئgS`aF7т?cIB[=@!y|H:D :  00* D*Yc `F~b@A<`bP!8P€c8*8m@a OT VB?1m*2 /8F8J6Ѩ$ ~ B!0A6P@AE  RDH7bmhj (9 ȃ]@E\mh4 A+-``apȄh,\OqX.@   w`H{|0@w([ _H'1`V(oȃi|(C+4;D;E0FKX_@ho X 29s qooIopPup$H>ɽw`=)asRb @%Q-FyЙYJٕx(okgPb>WPSHضIȅ*`=H ``'уV[8^8yȅHqX0V!HaxpX*[I8Hia0XEunЁd/؂:P}8x5PU|{.psMQ0 ` p2pi @sJ:`Oe@;Pg@" HShl8 ?4*2;:<>#YGX>\gq0@.QxHrGnԑJ LY@yt0gS>d `瓅ClæMKpHОE`xE'h(h8xdu`؀8t89x7HDsȀF &.0M0& aL@A(^P1)`38:2x(&| ^`p4(fa=ȇQx*HV`zX0epXVMt؁v@c&HV[p>YHBr_@RJHg1 l7;?xGU\(k5`}w.o(LmlS@͆lm0TLoD z#I*$j+SKz) xhu8qmEgXcڼW6S6Xd-Kp ?Ex$|8~z`VeG$*C kX5OX)x-@6&x 8f v@`TLp:@h8LxQ|h`5pH198p8~mH($HhhȄ#dHxVipGPKWQ\$-sp hx8xH`0UK6(:4CP5mTbs@~yp.rn?kjۺk?TB5T΀t U[\tȤTT )T굯ѹZ5eSUnxhhe0a۬YUc$޼>,`ixQlGrX..x&VpZ0X؃8HqXk$0 pIEHn@ xU"cXxЀ?,Plh01p_DXh \@?wX@MX^8nLN!WfȄ8|x8H$?sr(x:h#(J0SZ<؃?uI\GnHJ4v[j6ni8۽B-7o8N, j\ B z[ʋQM ^kײ\bEVg`d0a@\YVPUOܦGH;a(.P([V8+(}H(P؂Ec؀<= dP(:Ѕ {|X@`0@0k) 2I@Kx(MV0}}qY=xɑf5 PaN؁GE`U83oCy؂"(>Wp|@/Ȁl:&;x~o SH>Ly(6)*A(Dh-P@W``lH~uh&liih8kh kixcj;qPϳàA..b\ %T҇$G=s.=je@bdX80qOL]TX:OjЅn@t=LXoEp.6pF8j0 8j4^ ІC  XFB[IKȇj?E@( d @Э/V` 0eP /z" jSQx`}+tP_0q.$Յ9P!? w; Uh|,(<@i1 OF< X} ]HH ̴ !3S \Ph#ȇMz9؛;JR`ZeHosirghf`ey_gfh*rhX~k0cK ߌ5Q%d 7GDM[J=]f:cli=F]]mU@Sp]P8eMM@b?X99Xb~ˇ=zc9ruvʎ.\fr*թRB})&K%qFF1Iw| evR!dl4c %2̀c0Ïx3M7.5CJ0a(t<4B' ~@\2,\""E\RG](8+`Qjt$Gx ($l)3c 41QG%SPIEUXeU7[uXfZm\5O=yO?`;97dsMM0sYf .+)'v%?0:ۜ| oO (E2 N"CX@pG0rA-Z3)FkDԒ) = :/" >&P$R4>T22 23HJ` @!@I 1=ƐH!pK9PJoX~RH"@RI&’.,L2C0{71S ةQ$SQMuMUWʍzYV:3iOaNb5X7`cͪb& b -*گdr 80 B406V =P(אS6 A, @ Bx@հ,[4@ GH!p.T = A?T(!BD4bb|䁁l;`~X P">!440Z.t! "@'@L ,Em9.1 cP*rA } 0@ 2! lpCp=(I. 1bE0`# ? C{diqRi6@Qrd9K.x_sN nh#vӰ 1 `gb!\4&0X>pш<20Ah<c&@oD2!&Z` 34 k7D,@E$- +Wb!4p -qaOH@01H( qL0bhB2 z`G E,`A?v(  dchuP'XGt Z B`#! ԈHTB*Z! [B^yWl!GE2NC) $YOQM*-;>7KaJSG*ǘ ب,Y d2Egt'W.(R M= 1 p6<@H$(t`ݨBY`c4`+QO ٘5Bn4a>bV:3l#s҆FqpC+^! Z-p\Bzk` {D3HJOՠdI̪Qoy쁏}mVwZq6I3^k b6VLhr[QX %xG3z`0$ hD(8  B1b BwG \c# r@Z F+ -6,8D , l7@a@ŀ(:Vh6AE+o F+x',a7@F) (0*$`>`\(T`_b8jJ, f C/ nn(4$4&`B+X/"94H!3' C%=Bl4C4M3h<8 A(h8 d,dP@3PC%X#A @;l1&p x @h5D>`A0Qx A$ !'|()B*+ P@@ |<+L?B>4*<JU]!#n'B)BdOdʨ*S&SRRirf(nabJsB6ʨD 潚(817pA9AB:8$%$@7 B1CЀ܀ \?,(؀C2!C3¥A T`/B"C5B&8dt @&4P*L#6/A$5"Ԁ%.P7C%p( @t$'B3>< T,DC=|B0A8hD]F`Z] mh!af&t'(,h®Q᜽( Q.#%Ξ@VTaUE_>)XʾN%Zn%"04. <4)4`@3& LA@;h2(@B <=|1%Bl TA0,C,Tn( C A6x A 08!|5@-Ā8܂)B,8 H-l?@ xB/t?)|,,PB  L\]HM[uh#@$P%`&'MBo/%b NꨣʏC<];5H^\!1ȃ )lDTA58/؈+DC6%7x1x@XB/h;CЃ:x3*`! xC9HC0(@B āH̀D6$-$th04A( /d!%4 \<(, x@]܀>C'L"hA A$;x@.$C;H p B602h@H kMh%03o273.,öRs&ި$]6dC9h`Ee><:,ijd<)ZNfVƂ)(A$=@CD>2" "hB%C$X! ؁*h0` X=6$.B'< ,Ȁ h@=6,LBAA<)C:T@3@!d4(1&,\3C H@T#% *`/A \9T7T#,4$H@" =A)4C=x-B7)l&lNب䘽 he:fs2.l4;l/v6U`l7t39\e>an`̃;,F+K-1wm+ĥn*2*3;,|B9<L ԁ,@pЁA8 H@=C9p4`G.)xB%4B!LA"`+8@ 'C 0B=AAxB 1h"6AĜ#!9@7|@.0 X/ 0<@BP( (TA(,>><+\"@{2Ke!"๞12Cڝ_s#ZTl3UUCVaez>؃<$0YJqMD)2H0ꎕJ*,A!2C]+?<'B-#A=ȁ7#P4B*B4|C:^<:C8p(1B.̂+)xB&P#(B!BAAHB"LB(1.`>{@ @B <`4tA :850\-43h( 0;D,2C 7ŎEc$ã0bȘA͛8s A %Z$I*]ʤS'OBE)TTb+Xd͢U-\t/` #V1dɔ-c3hѤQf6m۸yNrҭso^{w0}s.9r}MkըI3eȎW]p٢%++WT 5o]A'd@4I{;y4\:&X(r3@1qR($J&E䈑Cg MdJ;-]riZa6B )b=)ŗl$Cc $f%`aRဉ:2Ʌuyd!#p"),ࢋ/6( 6C@ēUvq~2 Et9|rĐ+lAnT l$d٢-^nj! fP@ [@f bh#LLu"d"PB#CC Ѓ au@ƨ4D ' Pj Ѧ`@ x6@Q-n!`D" ADd܈D3p_`6|)L*a "4EBnlD:7I(|;JR6> PT (EQoyTadnsa@}r dPEU}u51 i@xwZ&x @!@(0 TPpcxtQh ƱELO,A r8&V dT먇? |0A -|H%Nex氉cܣiP<~l8. qMG z!?+Z #<=q D=X Q΀Ɗ,XA }@E8Trk ]RGЀ%-q)mzt6p\&易'cQ' O8C>.rp6&̡C>B~cˇLT}UʆfA SN4ڝ\ 2 /N! @A UHh4`P*qNG$FxBm8ʠ t` XE4#xa*nai4P H}XCX G`"/ByXa &tD(41|븄@d Fa b0!d -*a+A d4p"0C5@!165)mtDXHV:uNu [GZp:0 eD%q](e6HSJcTP^F-g2k`]-f!p#> s08D@Hp!pl D qb C.H0C4"bA zDEB qTB@= @P1SBzA^)>P 0x`h'4r"CȂ+JkPwX=qs0H@/mleҖ4mo{ɒ: zrG,RPR\2(EBrf ;ౘ{ȇA~nh:RIUέ³6H}Ɵ Wb~XAM! .`;E#G4Dcx-P8#B-$\=H= t053!X9X´ W `M "q'hF8ECp zhB@ cC 0zAo_H-r8 Ptbkd  >A@AAL0 ƀlƤFb"=&L)O,qqrAɑ0/!n C1HJ2@!lXj D d`*A ܁2 |!@x@!TajDP a a@̡D &A>`!rA!NРh`  v("@>AA|^(nATA$ f!!L@l (,2!  bhf h @ Рl \n̫ڨ!mx"La Jg芮-ar. Av0!OT ͡a2&cR!ЎaP!Ҡ8A p@ڡH@ @|(> 0X&@` p!0!!r@ L T`h!L|A  0 dЧ苰^.@ @:A4СH. `^a0H!.`_2b#( jKHֆXL2n GpxnOPp*n+QƬS؁#=rsAt2!NTr%Y%]2AA!aXIWBXL P@\ap!@P`@ja a A hF t~`f4 A  daT ހx$  !`! B da bAA a r!h 0`a P,A A ;PNG  IHDR@șPLTEUUUUUUUUUUUUU ,,,888EEEQQQaaaqqqA}}AA}}AA}}A}}}}}}}}}}}}}}}}}}}}}}}}}}}Ƕ۶Ƕ۶Ƕ۶qq8qUqqqqUq8qqqq8qUqqUq8qqqqq8qUqqUq8qq88qE8qU8qa8qq8qq8aq8Uq8Eq88qE8qU8qa8qq8aq8Uq8Eq88q88qE8qU8qa8qq8aq8Uq8EqQQqYQqaQqiQqqQqqQiqQaqQYqQQqYQqaQqiQqqQiqQaqQYqQQqQQqYQqaQqiQqqQiqQaqQYqAA A0AAAA0A AAAA A0AA0A AAAAA A0AA0A AA A( A0 A8 AA AA 8A 0A (A A( A0 A8 AA 8A 0A (A A A( A0 A8 AA 8A 0A (A,,A0,A4,A<,AA,AA,tRNS@fFIDATxݝY۸ÑHx8שRJ=)h<@eֳc~Ӎn$OgD]yg-!go_ p-nw˃j<^]> ¯e;8~iq# ی[@ӌѮ>6v=|fKd0fϯp 6p#~ ~GEx3Y&Q>\4'IBtKp DZ  +Wúc 5SE2pA]u+g04E9L)ոn87Bݤ`'p~; ~ #}y.FGp_r!)~!8%d( ,4g$OoEx `)g"asO, k)c0$C"'8 0VO-=nFx8ӋU jfrA򞣶0/ˉ6sc"80v(fdxX ݀_ "'m:*1ʛN;`R K# W\vJ i~0aGY w:~9&5p(5N(`0{ ne8xSOu5]Zbax _&L`>Ep=yÝA<]`>6+!Z;EMp pV]CSKmWhN,=Q 5k-Gz|&ǥx7]p ̨ N_"N̚X~Zѿه/K hLUˠW>lbWgJ 5NHN-ٰĈ3*w. el-ޮ웇 Wy3'Lg=--WBy)vwEpja/ %c@}OZ0L@wpɌQ-v3x19޷bZF~@w'YaFc&1l~F d)Ks c;ݥ]5+Y7-gYS5@JF^a!!Fr'#X~(6 })jm9=q#QBB*)B`) ^sFg_ҏMI%$' Sz[3҆|;  e+]܏c8Bh(SJ3I~+ʒS+е8,[:fUJiq\=B(j VGa[grd92712$P` TgZ:W'&,Ltj& c 1֯=1rThAR1qq^%P<H&|kyKZHX,+_Wl\a҄ϒ`oҹUq)&#% 9"PϮZJlBw N5[:9ċS/=}6>Dp/$;!sy- ]!.*ş[}ƅ< ǴnNzjVBlX`xPJ~)0az9'Cڏ>}[.95{A7:qW6 $3%CubɄw@mZt F cKz{L w*=!m +}ɖ'%9mĿ5qNa0&O䤔\Qz{v]P0b&TR%Cyv+(ED-k;%ɿB[Mbq:(a=Ž @J 5܄Zlo$v p@* ]>b$+^K ~$TS]\nF1~nĴɊZgW:אe^K >0}GA7%LYgS&/@KhA8KEE%WԢGؙU;D1E0uchqmz!\-?S,4sz9ȲAhpjj&fxQ=FB'l!WA?cqjc,]1к]0DQ ],g 4!&]טxL_$Uy:ЈI, >PK=gy ι]'TgmY$ vCOZGЈX4UY$߇&8S>X)%tU+PeQy8 ~Vs-A9NvQG ޿w0ڟ/;[s'،C#|?۽_jp{Ӊ'#I0HЙkYǻۥ\c ]jL^{A*-~{&/=_k:zͱqg mChY\.>,X8,:>zdQf`ߕ!?Tbqq > PUQ*I<+ URȊ6nzG#a}L< oDdwx9g|I!lA*+S`ER: 4Ϙ3,{MyY`@,&0? * |ȼ" u 쥙I|a~AHPEۧqդ5B.~$ saO08yL3 F(&d`uvʮRam >3LS3lCg;AtPJm7F|§ 9b/>]0/;2uo%Z.m cᗃֺFd3 ל wm_ػ,vw"|6iڈJP,'ߕ o!x—l 6OMc]w |:9m^ B3Z;\>|7-%a4?K2TF/8Gp 0xY'ExoAt+=q#|+]dcnekn[B3w!d 5s-%S"k'<&ʠn8q{Fm&YuZ95o_p#~)&J /`rcmbO}*\M0GF)U󶾄Vn6fɍ?Onr㺉e .#Ww4C0o&7uކeg 4w)A +n'ݠ8%,yo&7f_Hp.OYMn[cA]*U Mn E0*+ j Vңɍ`ٳ_ 1\ۍv:IU!H0m(y JkD،hԘ<@EURzA x`Gjs"0:7l ],߰W0uM08}y 2AK̽yXImQэSm$Lׇ+v zp,Ɠ)rQseSn0e;xmOT Yp$cy<`o9 :7l˳A$6G# Wl^[ 0x/.]rD4Ҿ bZ; yhpѺS ,SoԀTQ%ġaW-{f 7cp.9ғom!D]7,\jN{rb3hfCbwYHIc6@1u&B}g(GH- v T"Vx#&FJ;v& m|EV| 3Mc` E \&A,*(<5LlS!\M8lWWЛbtƤw `6Q'onB~ ] [0.003922 rgb <0.470588, 0.250980, 0.000000>] [0.007843 rgb <0.501961, 0.188235, 0.000000>] [0.011765 rgb <0.501961, 0.282353, 0.000000>] [0.015686 rgb <0.533333, 0.219608, 0.000000>] [0.019608 rgb <0.533333, 0.250980, 0.000000>] [0.023529 rgb <0.533333, 0.250980, 0.031373>] [0.027451 rgb <0.580392, 0.188235, 0.000000>] [0.031373 rgb <0.580392, 0.219608, 0.000000>] [0.035294 rgb <0.580392, 0.219608, 0.031373>] [0.039216 rgb <0.580392, 0.250980, 0.000000>] [0.043137 rgb <0.580392, 0.250980, 0.031373>] [0.047059 rgb <0.580392, 0.282353, 0.000000>] [0.050980 rgb <0.580392, 0.282353, 0.031373>] [0.054902 rgb <0.580392, 0.313726, 0.000000>] [0.058824 rgb <0.611765, 0.219608, 0.000000>] [0.062745 rgb <0.611765, 0.250980, 0.000000>] [0.066667 rgb <0.611765, 0.250980, 0.031373>] [0.070588 rgb <0.611765, 0.282353, 0.000000>] [0.074510 rgb <0.611765, 0.282353, 0.031373>] [0.078431 rgb <0.611765, 0.345098, 0.031373>] [0.082353 rgb <0.643137, 0.188235, 0.000000>] [0.086275 rgb <0.643137, 0.219608, 0.000000>] [0.090196 rgb <0.643137, 0.250980, 0.000000>] [0.094118 rgb <0.643137, 0.250980, 0.031373>] [0.098039 rgb <0.643137, 0.282353, 0.000000>] [0.101961 rgb <0.643137, 0.282353, 0.031373>] [0.105882 rgb <0.643137, 0.313726, 0.000000>] [0.109804 rgb <0.643137, 0.313726, 0.031373>] [0.113725 rgb <0.643137, 0.313726, 0.062745>] [0.117647 rgb <0.643137, 0.345098, 0.000000>] [0.121569 rgb <0.643137, 0.345098, 0.031373>] [0.125490 rgb <0.674510, 0.219608, 0.000000>] [0.129412 rgb <0.674510, 0.250980, 0.000000>] [0.133333 rgb <0.674510, 0.250980, 0.031373>] [0.137255 rgb <0.674510, 0.282353, 0.000000>] [0.141176 rgb <0.674510, 0.282353, 0.031373>] [0.145098 rgb <0.674510, 0.313726, 0.000000>] [0.149020 rgb <0.674510, 0.313726, 0.031373>] [0.152941 rgb <0.674510, 0.313726, 0.062745>] [0.156863 rgb <0.674510, 0.345098, 0.000000>] [0.160784 rgb <0.674510, 0.345098, 0.031373>] [0.164706 rgb <0.674510, 0.345098, 0.062745>] [0.168627 rgb <0.674510, 0.376471, 0.031373>] [0.172549 rgb <0.705882, 0.219608, 0.000000>] [0.176471 rgb <0.705882, 0.282353, 0.000000>] [0.180392 rgb <0.705882, 0.282353, 0.031373>] [0.184314 rgb <0.705882, 0.313726, 0.000000>] [0.188235 rgb <0.705882, 0.313726, 0.031373>] [0.192157 rgb <0.705882, 0.313726, 0.062745>] [0.196078 rgb <0.705882, 0.345098, 0.000000>] [0.200000 rgb <0.705882, 0.345098, 0.031373>] [0.203922 rgb <0.705882, 0.345098, 0.062745>] [0.207843 rgb <0.705882, 0.376471, 0.000000>] [0.211765 rgb <0.705882, 0.376471, 0.031373>] [0.215686 rgb <0.705882, 0.376471, 0.062745>] [0.219608 rgb <0.705882, 0.407843, 0.000000>] [0.223529 rgb <0.705882, 0.407843, 0.031373>] [0.227451 rgb <0.705882, 0.407843, 0.062745>] [0.231373 rgb <0.737255, 0.282353, 0.000000>] [0.235294 rgb <0.737255, 0.282353, 0.031373>] [0.239216 rgb <0.737255, 0.313726, 0.000000>] [0.243137 rgb <0.737255, 0.313726, 0.031373>] [0.247059 rgb <0.737255, 0.313726, 0.062745>] [0.250980 rgb <0.737255, 0.345098, 0.000000>] [0.254902 rgb <0.737255, 0.345098, 0.031373>] [0.258824 rgb <0.737255, 0.345098, 0.062745>] [0.262745 rgb <0.737255, 0.376471, 0.000000>] [0.266667 rgb <0.737255, 0.376471, 0.031373>] [0.270588 rgb <0.737255, 0.376471, 0.062745>] [0.274510 rgb <0.737255, 0.376471, 0.094118>] [0.278431 rgb <0.737255, 0.407843, 0.000000>] [0.282353 rgb <0.737255, 0.407843, 0.031373>] [0.286275 rgb <0.737255, 0.439216, 0.031373>] [0.290196 rgb <0.768627, 0.282353, 0.000000>] [0.294118 rgb <0.768627, 0.313726, 0.000000>] [0.298039 rgb <0.768627, 0.313726, 0.031373>] [0.301961 rgb <0.768627, 0.345098, 0.000000>] [0.305882 rgb <0.768627, 0.345098, 0.031373>] [0.309804 rgb <0.768627, 0.345098, 0.062745>] [0.313726 rgb <0.768627, 0.376471, 0.000000>] [0.317647 rgb <0.768627, 0.376471, 0.031373>] [0.321569 rgb <0.768627, 0.376471, 0.062745>] [0.325490 rgb <0.768627, 0.376471, 0.094118>] [0.329412 rgb <0.768627, 0.407843, 0.000000>] [0.333333 rgb <0.768627, 0.407843, 0.031373>] [0.337255 rgb <0.768627, 0.407843, 0.062745>] [0.341176 rgb <0.768627, 0.407843, 0.094118>] [0.345098 rgb <0.768627, 0.439216, 0.000000>] [0.349020 rgb <0.768627, 0.439216, 0.031373>] [0.352941 rgb <0.768627, 0.439216, 0.062745>] [0.356863 rgb <0.768627, 0.439216, 0.094118>] [0.360784 rgb <0.768627, 0.470588, 0.000000>] [0.364706 rgb <0.768627, 0.470588, 0.062745>] [0.368627 rgb <0.800000, 0.313726, 0.000000>] [0.372549 rgb <0.800000, 0.345098, 0.000000>] [0.376471 rgb <0.800000, 0.345098, 0.031373>] [0.380392 rgb <0.800000, 0.345098, 0.062745>] [0.384314 rgb <0.800000, 0.376471, 0.000000>] [0.388235 rgb <0.800000, 0.376471, 0.031373>] [0.392157 rgb <0.800000, 0.376471, 0.062745>] [0.396078 rgb <0.800000, 0.376471, 0.094118>] [0.400000 rgb <0.800000, 0.407843, 0.000000>] [0.403922 rgb <0.800000, 0.407843, 0.031373>] [0.407843 rgb <0.800000, 0.407843, 0.062745>] [0.411765 rgb <0.800000, 0.407843, 0.094118>] [0.415686 rgb <0.800000, 0.439216, 0.000000>] [0.419608 rgb <0.800000, 0.439216, 0.031373>] [0.423529 rgb <0.800000, 0.439216, 0.062745>] [0.427451 rgb <0.800000, 0.439216, 0.094118>] [0.431373 rgb <0.800000, 0.439216, 0.125490>] [0.435294 rgb <0.800000, 0.470588, 0.000000>] [0.439216 rgb <0.800000, 0.470588, 0.062745>] [0.443137 rgb <0.800000, 0.470588, 0.094118>] [0.447059 rgb <0.800000, 0.501961, 0.000000>] [0.450980 rgb <0.800000, 0.501961, 0.062745>] [0.454902 rgb <0.831373, 0.345098, 0.031373>] [0.458824 rgb <0.831373, 0.376471, 0.000000>] [0.462745 rgb <0.831373, 0.376471, 0.031373>] [0.466667 rgb <0.831373, 0.376471, 0.062745>] [0.470588 rgb <0.831373, 0.376471, 0.094118>] [0.474510 rgb <0.831373, 0.407843, 0.000000>] [0.478431 rgb <0.831373, 0.407843, 0.031373>] [0.482353 rgb <0.831373, 0.407843, 0.062745>] [0.486275 rgb <0.831373, 0.407843, 0.094118>] [0.490196 rgb <0.831373, 0.439216, 0.000000>] [0.494118 rgb <0.831373, 0.439216, 0.031373>] [0.498039 rgb <0.831373, 0.439216, 0.062745>] [0.501961 rgb <0.831373, 0.439216, 0.094118>] [0.505882 rgb <0.831373, 0.439216, 0.125490>] [0.509804 rgb <0.831373, 0.470588, 0.000000>] [0.513726 rgb <0.831373, 0.470588, 0.031373>] [0.517647 rgb <0.831373, 0.470588, 0.062745>] [0.521569 rgb <0.831373, 0.470588, 0.094118>] [0.525490 rgb <0.831373, 0.470588, 0.125490>] [0.529412 rgb <0.831373, 0.501961, 0.062745>] [0.533333 rgb <0.862745, 0.345098, 0.031373>] [0.537255 rgb <0.862745, 0.376471, 0.000000>] [0.541176 rgb <0.862745, 0.376471, 0.031373>] [0.545098 rgb <0.862745, 0.376471, 0.062745>] [0.549020 rgb <0.862745, 0.407843, 0.000000>] [0.552941 rgb <0.862745, 0.407843, 0.031373>] [0.556863 rgb <0.862745, 0.407843, 0.062745>] [0.560784 rgb <0.862745, 0.407843, 0.094118>] [0.564706 rgb <0.862745, 0.439216, 0.000000>] [0.568627 rgb <0.862745, 0.439216, 0.031373>] [0.572549 rgb <0.862745, 0.439216, 0.062745>] [0.576471 rgb <0.862745, 0.439216, 0.094118>] [0.580392 rgb <0.862745, 0.439216, 0.125490>] [0.584314 rgb <0.862745, 0.470588, 0.000000>] [0.588235 rgb <0.862745, 0.470588, 0.031373>] [0.592157 rgb <0.862745, 0.470588, 0.062745>] [0.596078 rgb <0.862745, 0.470588, 0.094118>] [0.600000 rgb <0.862745, 0.470588, 0.125490>] [0.603922 rgb <0.862745, 0.501961, 0.000000>] [0.607843 rgb <0.862745, 0.501961, 0.031373>] [0.611765 rgb <0.862745, 0.501961, 0.062745>] [0.615686 rgb <0.862745, 0.501961, 0.094118>] [0.619608 rgb <0.862745, 0.501961, 0.125490>] [0.623529 rgb <0.862745, 0.501961, 0.156863>] [0.627451 rgb <0.862745, 0.533333, 0.031373>] [0.631373 rgb <0.862745, 0.533333, 0.094118>] [0.635294 rgb <0.862745, 0.533333, 0.125490>] [0.639216 rgb <0.894118, 0.407843, 0.000000>] [0.643137 rgb <0.894118, 0.407843, 0.031373>] [0.647059 rgb <0.894118, 0.407843, 0.062745>] [0.650980 rgb <0.894118, 0.439216, 0.000000>] [0.654902 rgb <0.894118, 0.439216, 0.031373>] [0.658824 rgb <0.894118, 0.439216, 0.062745>] [0.662745 rgb <0.894118, 0.439216, 0.094118>] [0.666667 rgb <0.894118, 0.439216, 0.125490>] [0.670588 rgb <0.894118, 0.470588, 0.000000>] [0.674510 rgb <0.894118, 0.470588, 0.031373>] [0.678431 rgb <0.894118, 0.470588, 0.062745>] [0.682353 rgb <0.894118, 0.470588, 0.094118>] [0.686275 rgb <0.894118, 0.470588, 0.125490>] [0.690196 rgb <0.894118, 0.470588, 0.156863>] [0.694118 rgb <0.894118, 0.501961, 0.000000>] [0.698039 rgb <0.894118, 0.501961, 0.031373>] [0.701961 rgb <0.894118, 0.501961, 0.062745>] [0.705882 rgb <0.894118, 0.501961, 0.094118>] [0.709804 rgb <0.894118, 0.501961, 0.125490>] [0.713726 rgb <0.894118, 0.501961, 0.156863>] [0.717647 rgb <0.894118, 0.533333, 0.094118>] [0.721569 rgb <0.894118, 0.533333, 0.125490>] [0.725490 rgb <0.894118, 0.533333, 0.156863>] [0.729412 rgb <0.894118, 0.580392, 0.094118>] [0.733333 rgb <0.894118, 0.580392, 0.125490>] [0.737255 rgb <0.925490, 0.407843, 0.062745>] [0.741176 rgb <0.925490, 0.439216, 0.000000>] [0.745098 rgb <0.925490, 0.439216, 0.031373>] [0.749020 rgb <0.925490, 0.439216, 0.062745>] [0.752941 rgb <0.925490, 0.439216, 0.094118>] [0.756863 rgb <0.925490, 0.470588, 0.000000>] [0.760784 rgb <0.925490, 0.470588, 0.031373>] [0.764706 rgb <0.925490, 0.470588, 0.062745>] [0.768627 rgb <0.925490, 0.470588, 0.094118>] [0.772549 rgb <0.925490, 0.470588, 0.125490>] [0.776471 rgb <0.925490, 0.470588, 0.156863>] [0.780392 rgb <0.925490, 0.501961, 0.000000>] [0.784314 rgb <0.925490, 0.501961, 0.031373>] [0.788235 rgb <0.925490, 0.501961, 0.062745>] [0.792157 rgb <0.925490, 0.501961, 0.094118>] [0.796078 rgb <0.925490, 0.501961, 0.125490>] [0.800000 rgb <0.925490, 0.501961, 0.156863>] [0.803922 rgb <0.925490, 0.533333, 0.000000>] [0.807843 rgb <0.925490, 0.533333, 0.062745>] [0.811765 rgb <0.925490, 0.533333, 0.094118>] [0.815686 rgb <0.925490, 0.533333, 0.125490>] [0.819608 rgb <0.925490, 0.533333, 0.156863>] [0.823529 rgb <0.925490, 0.580392, 0.031373>] [0.827451 rgb <0.925490, 0.611765, 0.094118>] [0.831373 rgb <0.956863, 0.407843, 0.062745>] [0.835294 rgb <0.956863, 0.470588, 0.000000>] [0.839216 rgb <0.956863, 0.470588, 0.031373>] [0.843137 rgb <0.956863, 0.470588, 0.062745>] [0.847059 rgb <0.956863, 0.470588, 0.094118>] [0.850980 rgb <0.956863, 0.470588, 0.125490>] [0.854902 rgb <0.956863, 0.501961, 0.000000>] [0.858824 rgb <0.956863, 0.501961, 0.031373>] [0.862745 rgb <0.956863, 0.501961, 0.062745>] [0.866667 rgb <0.956863, 0.501961, 0.094118>] [0.870588 rgb <0.956863, 0.501961, 0.125490>] [0.874510 rgb <0.956863, 0.501961, 0.156863>] [0.878431 rgb <0.956863, 0.533333, 0.000000>] [0.882353 rgb <0.956863, 0.533333, 0.062745>] [0.886275 rgb <0.956863, 0.533333, 0.094118>] [0.890196 rgb <0.956863, 0.533333, 0.125490>] [0.894118 rgb <0.956863, 0.533333, 0.156863>] [0.898039 rgb <0.956863, 0.533333, 0.188235>] [0.901961 rgb <0.956863, 0.580392, 0.000000>] [0.905882 rgb <0.956863, 0.580392, 0.062745>] [0.909804 rgb <0.956863, 0.580392, 0.094118>] [0.913725 rgb <0.956863, 0.580392, 0.125490>] [0.917647 rgb <0.956863, 0.580392, 0.156863>] [0.921569 rgb <0.956863, 0.580392, 0.188235>] [0.925490 rgb <0.988235, 0.470588, 0.031373>] [0.929412 rgb <0.988235, 0.470588, 0.094118>] [0.933333 rgb <0.988235, 0.501961, 0.031373>] [0.937255 rgb <0.988235, 0.501961, 0.094118>] [0.941176 rgb <0.988235, 0.501961, 0.125490>] [0.945098 rgb <0.988235, 0.533333, 0.000000>] [0.949020 rgb <0.988235, 0.533333, 0.062745>] [0.952941 rgb <0.988235, 0.533333, 0.094118>] [0.956863 rgb <0.988235, 0.533333, 0.125490>] [0.960784 rgb <0.988235, 0.533333, 0.156863>] [0.964706 rgb <0.988235, 0.580392, 0.031373>] [0.968627 rgb <0.988235, 0.580392, 0.094118>] [0.972549 rgb <0.988235, 0.580392, 0.125490>] [0.976471 rgb <0.988235, 0.580392, 0.156863>] [0.980392 rgb <0.988235, 0.580392, 0.188235>] [0.984314 rgb <0.988235, 0.611765, 0.062745>] [0.988235 rgb <0.988235, 0.611765, 0.125490>] [0.992157 rgb <0.988235, 0.611765, 0.156863>] [0.996078 rgb <0.988235, 0.611765, 0.188235>] } #version Orngwood_Inc_Temp; #include "colors.inc" #include "textures.inc" //default for plot_curve if nothing else is given in the code #macro curve(xp) 1 #end // good defaults #declare VectorScale0 = 1; #declare VectorThickness0 = 0.1; #declare VectorLabelScale0=2.5; #declare BarScale0 = 1.0; #declare BarZoom0 = 1.0; #declare BarLabelZoom0=1.0; #declare VectorScale = VectorScale0; #declare VectorThickness = VectorThickness0; #declare VectorLabelColor = White; #declare VectorLabelScale = VectorLabelScale0; #declare BarScale = BarScale0; #declare BarZoom = BarZoom0; #declare BarLabelZoom = BarLabelZoom0; #macro draw_bar(bottom,height,the_color,the_label) object { union { cylinder { <0,0,0>,<0,height*BarScale+0.001,0>,0.2 pigment {the_color}} text { ttf "crystal" the_label 0.1, 0 pigment { the_color } translate <0,-1,0> scale BarLabelZoom} } scale BarZoom translate bottom } #end #macro draw_hspring(x1,x2,y1,rad,thick) #local xs=0; #local rs=rad; #if (x1 > x2) #local temp=x1; #local x1=x2; #local x2=temp; #end #local dx=(x2-x1)/(rad*500); #local f=5/(x2-x1); #while (xs <= (x2-x1)) #local yp=rs*cos(2*pi*f*xs); #local zp=rs*sin(2*pi*f*xs); sphere {,thick pigment{ color Silver}} #local xs=xs+dx; #end #end #macro draw_vspring(y1,y2,x1,rad,thick) #local ys=0; #local rs=rad; #if (y1 > y2) #declare temp=y1; #declare y1=y2; #declare y2=temp; #end #local dy=(y2-y1)/(rad*500); #local f=5/(y2-y1); #while (ys <= (y2-y1)) #local xp=rs*cos(2*pi*f*ys); #local zp=rs*sin(2*pi*f*ys); sphere {,thick pigment{ color Silver}} #local ys=ys+dy; #end #end #macro draw_rope(x1,y1,x2,y2,thick) #if (abs(x2-x1) > 0.01 | abs(y2-y1) > 0.01) cylinder { ,,0.25*thick texture {DMFWood4} } #end #end //this rope drawing macro courtesy of student //T. Weber from Phys 141, Fall 2009 //See http://www.youtube.com/gameslammer7 for some of his really //cool Povray physics animations. #macro real_rope(end1,end2,thick,color1,color2,amb,detail) #local delta = end2-end1; #if(abs(delta.x)>0 | abs(delta.y)>0 | abs(delta.z)>0) #local step = 0; #local stepadd = thick/detail; #local dist = sqrt(pow(delta.x,2)+pow(delta.y,2)+pow(delta.z,2)); #if(dist>1) #local ofst = pow(10,-9); #else #local ofst = pow(10,-9); #end #local rotz = degrees(atan2(delta.y+ofst,sqrt(pow(delta.x+ofst,2)+pow(delta.z+ofst,2)))); #local roty = degrees(atan2(delta.z+ofst,delta.x+ofst)); union {#while(step<=dist) #local rtheta = 360*step/(thick*2); sphere{,thick/3 pigment{color1} finish{ambient amb} rotate} sphere{,thick/3 pigment{color2} finish{ambient amb} rotate} #local step = step+stepadd; #end rotate<0,0,rotz> rotate<0,roty,0> translate end1} #end #end #macro draw_real_rope(end1,end2,thick) real_rope(end1,end2,thick,Tan,Brown,0.3,5) #end #macro draw_text(the_location,the_text,text_color,text_scale) text { ttf "crystal" the_text 0.1, 0 pigment { text_color } scale text_scale translate the_location} #end #macro draw_variable(the_location,the_variable,the_units,text_color,text_scale) #local to_str=str(the_variable,0,2) draw_text(the_location,concat(to_str," ",the_units),text_color,text_scale) #end #macro dump_variable(the_name,the_variable) #local to_str=str(the_variable,0,2) #debug concat(the_name," is ", to_str,"\n") #end #macro dv(vec_tail,the_vector,vec_color,the_label) #local the_scaled_vector = VectorScale * vlength(the_vector) * vnormalize(the_vector); #local cone_start = 0.8 * the_scaled_vector; #local cone_end = 1.2 * the_scaled_vector; #local label_pos = 1.3 * the_scaled_vector; #if (vlength(the_scaled_vector) > 0.01) cylinder {vec_tail,vec_tail+the_scaled_vector,VectorThickness pigment {vec_color}} cone { vec_tail+cone_start,5*VectorThickness vec_tail+cone_end,0 pigment {vec_color}} #local text_end = vec_tail+label_pos; draw_text(text_end,the_label,VectorLabelColor,VectorLabelScale) #end #end #macro draw_vector(vec_tail,vec_offset,vec_color,the_label) dv(vec_tail,vec_offset,vec_color,the_label) #end #macro set_vector_scale(n) #declare VectorScale = n*VectorScale0; #end #macro set_vector_thickness(n) #declare VectorThickness = n*VectorThickness0; #end #macro set_vector_label_scale(n) #declare VectorLabelScale = n*VectorLabelScale0; #end #macro set_vector_label_color(vc) #declare VectorLabelColor = vc; #end #macro set_bar_scale(n) #declare BarScale = n; #end #macro set_bar_zoom(n) #declare BarZoom = n; #end #macro set_bar_label_zoom(n) #declare BarLabelZoom = n; #end #macro plot_curve(xmin,xmax,dx,the_color,the_scale) #local xp=0; #local yp=0; #local xold = xmin; #local yold = curve(xold); #declare xp=xmin+dx; #while(xp<=xmax) #declare yp=curve(xp); cylinder {,,.1*the_scale pigment {the_color}} #declare xold=xp; #declare yold=yp; #declare xp=xp+dx; #end #end #declare PinkMarb_Inc_Temp=version; /* Persistence of Vision Raytracer Version 3.1 Pink Marble color_map */ #declare M_PinkMarb = color_map { [0.000000 rgb <0.345098, 0.250980, 0.219608>] [0.003922 rgb <0.345098, 0.313726, 0.250980>] [0.007843 rgb <0.345098, 0.345098, 0.282353>] [0.011765 rgb <0.376471, 0.376471, 0.313726>] [0.015686 rgb <0.407843, 0.313726, 0.250980>] [0.019608 rgb <0.407843, 0.345098, 0.250980>] [0.023529 rgb <0.407843, 0.345098, 0.313726>] [0.027451 rgb <0.407843, 0.345098, 0.345098>] [0.031373 rgb <0.407843, 0.407843, 0.313726>] [0.035294 rgb <0.407843, 0.407843, 0.376471>] [0.039216 rgb <0.439216, 0.345098, 0.282353>] [0.043137 rgb <0.439216, 0.345098, 0.313726>] [0.047059 rgb <0.439216, 0.345098, 0.345098>] [0.050980 rgb <0.439216, 0.376471, 0.313726>] [0.054902 rgb <0.439216, 0.376471, 0.345098>] [0.058824 rgb <0.439216, 0.376471, 0.376471>] [0.062745 rgb <0.439216, 0.407843, 0.376471>] [0.066667 rgb <0.439216, 0.407843, 0.407843>] [0.070588 rgb <0.439216, 0.439216, 0.376471>] [0.074510 rgb <0.439216, 0.439216, 0.407843>] [0.078431 rgb <0.470588, 0.345098, 0.282353>] [0.082353 rgb <0.470588, 0.376471, 0.282353>] [0.086275 rgb <0.470588, 0.376471, 0.313726>] [0.090196 rgb <0.470588, 0.376471, 0.345098>] [0.094118 rgb <0.470588, 0.376471, 0.376471>] [0.098039 rgb <0.470588, 0.407843, 0.313726>] [0.101961 rgb <0.470588, 0.407843, 0.345098>] [0.105882 rgb <0.470588, 0.407843, 0.376471>] [0.109804 rgb <0.470588, 0.407843, 0.407843>] [0.113725 rgb <0.470588, 0.439216, 0.345098>] [0.117647 rgb <0.470588, 0.439216, 0.376471>] [0.121569 rgb <0.470588, 0.439216, 0.407843>] [0.125490 rgb <0.470588, 0.439216, 0.439216>] [0.129412 rgb <0.470588, 0.470588, 0.376471>] [0.133333 rgb <0.470588, 0.470588, 0.439216>] [0.137255 rgb <0.501961, 0.376471, 0.282353>] [0.141176 rgb <0.501961, 0.376471, 0.345098>] [0.145098 rgb <0.501961, 0.407843, 0.313726>] [0.149020 rgb <0.501961, 0.407843, 0.345098>] [0.152941 rgb <0.501961, 0.407843, 0.376471>] [0.156863 rgb <0.501961, 0.407843, 0.407843>] [0.160784 rgb <0.501961, 0.439216, 0.345098>] [0.164706 rgb <0.501961, 0.439216, 0.376471>] [0.168627 rgb <0.501961, 0.439216, 0.407843>] [0.172549 rgb <0.501961, 0.439216, 0.439216>] [0.176471 rgb <0.501961, 0.470588, 0.376471>] [0.180392 rgb <0.501961, 0.470588, 0.407843>] [0.184314 rgb <0.501961, 0.470588, 0.439216>] [0.188235 rgb <0.501961, 0.470588, 0.470588>] [0.192157 rgb <0.501961, 0.501961, 0.439216>] [0.196078 rgb <0.533333, 0.376471, 0.313726>] [0.200000 rgb <0.533333, 0.407843, 0.345098>] [0.203922 rgb <0.533333, 0.407843, 0.376471>] [0.207843 rgb <0.533333, 0.407843, 0.407843>] [0.211765 rgb <0.533333, 0.439216, 0.345098>] [0.215686 rgb <0.533333, 0.439216, 0.376471>] [0.219608 rgb <0.533333, 0.439216, 0.407843>] [0.223529 rgb <0.533333, 0.439216, 0.439216>] [0.227451 rgb <0.533333, 0.470588, 0.376471>] [0.231373 rgb <0.533333, 0.470588, 0.407843>] [0.235294 rgb <0.533333, 0.470588, 0.439216>] [0.239216 rgb <0.533333, 0.470588, 0.470588>] [0.243137 rgb <0.533333, 0.501961, 0.407843>] [0.247059 rgb <0.533333, 0.501961, 0.439216>] [0.250980 rgb <0.533333, 0.501961, 0.470588>] [0.254902 rgb <0.533333, 0.501961, 0.501961>] [0.258824 rgb <0.533333, 0.533333, 0.439216>] [0.262745 rgb <0.533333, 0.533333, 0.501961>] [0.266667 rgb <0.580392, 0.407843, 0.345098>] [0.270588 rgb <0.580392, 0.439216, 0.345098>] [0.274510 rgb <0.580392, 0.439216, 0.376471>] [0.278431 rgb <0.580392, 0.439216, 0.407843>] [0.282353 rgb <0.580392, 0.439216, 0.439216>] [0.286275 rgb <0.580392, 0.470588, 0.376471>] [0.290196 rgb <0.580392, 0.470588, 0.407843>] [0.294118 rgb <0.580392, 0.470588, 0.439216>] [0.298039 rgb <0.580392, 0.470588, 0.470588>] [0.301961 rgb <0.580392, 0.501961, 0.407843>] [0.305882 rgb <0.580392, 0.501961, 0.439216>] [0.309804 rgb <0.580392, 0.501961, 0.470588>] [0.313726 rgb <0.580392, 0.501961, 0.501961>] [0.317647 rgb <0.580392, 0.533333, 0.439216>] [0.321569 rgb <0.580392, 0.533333, 0.470588>] [0.325490 rgb <0.580392, 0.533333, 0.501961>] [0.329412 rgb <0.580392, 0.533333, 0.533333>] [0.333333 rgb <0.580392, 0.580392, 0.501961>] [0.337255 rgb <0.611765, 0.439216, 0.376471>] [0.341176 rgb <0.611765, 0.470588, 0.376471>] [0.345098 rgb <0.611765, 0.470588, 0.407843>] [0.349020 rgb <0.611765, 0.470588, 0.439216>] [0.352941 rgb <0.611765, 0.470588, 0.470588>] [0.356863 rgb <0.611765, 0.501961, 0.407843>] [0.360784 rgb <0.611765, 0.501961, 0.439216>] [0.364706 rgb <0.611765, 0.501961, 0.470588>] [0.368627 rgb <0.611765, 0.501961, 0.501961>] [0.372549 rgb <0.611765, 0.533333, 0.439216>] [0.376471 rgb <0.611765, 0.533333, 0.470588>] [0.380392 rgb <0.611765, 0.533333, 0.501961>] [0.384314 rgb <0.611765, 0.533333, 0.533333>] [0.388235 rgb <0.611765, 0.580392, 0.470588>] [0.392157 rgb <0.611765, 0.580392, 0.501961>] [0.396078 rgb <0.611765, 0.580392, 0.533333>] [0.400000 rgb <0.611765, 0.580392, 0.580392>] [0.403922 rgb <0.611765, 0.611765, 0.533333>] [0.407843 rgb <0.643137, 0.470588, 0.376471>] [0.411765 rgb <0.643137, 0.470588, 0.439216>] [0.415686 rgb <0.643137, 0.501961, 0.407843>] [0.419608 rgb <0.643137, 0.501961, 0.439216>] [0.423529 rgb <0.643137, 0.501961, 0.470588>] [0.427451 rgb <0.643137, 0.501961, 0.501961>] [0.431373 rgb <0.643137, 0.533333, 0.439216>] [0.435294 rgb <0.643137, 0.533333, 0.470588>] [0.439216 rgb <0.643137, 0.533333, 0.501961>] [0.443137 rgb <0.643137, 0.533333, 0.533333>] [0.447059 rgb <0.643137, 0.580392, 0.470588>] [0.450980 rgb <0.643137, 0.580392, 0.501961>] [0.454902 rgb <0.643137, 0.580392, 0.533333>] [0.458824 rgb <0.643137, 0.580392, 0.580392>] [0.462745 rgb <0.643137, 0.611765, 0.501961>] [0.466667 rgb <0.643137, 0.611765, 0.533333>] [0.470588 rgb <0.643137, 0.611765, 0.580392>] [0.474510 rgb <0.643137, 0.611765, 0.611765>] [0.478431 rgb <0.643137, 0.643137, 0.580392>] [0.482353 rgb <0.674510, 0.470588, 0.407843>] [0.486275 rgb <0.674510, 0.501961, 0.407843>] [0.490196 rgb <0.674510, 0.501961, 0.470588>] [0.494118 rgb <0.674510, 0.501961, 0.501961>] [0.498039 rgb <0.674510, 0.533333, 0.439216>] [0.501961 rgb <0.674510, 0.533333, 0.470588>] [0.505882 rgb <0.674510, 0.533333, 0.501961>] [0.509804 rgb <0.674510, 0.533333, 0.533333>] [0.513726 rgb <0.674510, 0.580392, 0.470588>] [0.517647 rgb <0.674510, 0.580392, 0.501961>] [0.521569 rgb <0.674510, 0.580392, 0.533333>] [0.525490 rgb <0.674510, 0.580392, 0.580392>] [0.529412 rgb <0.674510, 0.611765, 0.501961>] [0.533333 rgb <0.674510, 0.611765, 0.533333>] [0.537255 rgb <0.674510, 0.611765, 0.580392>] [0.541176 rgb <0.674510, 0.611765, 0.611765>] [0.545098 rgb <0.674510, 0.643137, 0.533333>] [0.549020 rgb <0.674510, 0.643137, 0.580392>] [0.552941 rgb <0.674510, 0.643137, 0.611765>] [0.556863 rgb <0.674510, 0.674510, 0.643137>] [0.560784 rgb <0.705882, 0.501961, 0.439216>] [0.564706 rgb <0.705882, 0.533333, 0.439216>] [0.568627 rgb <0.705882, 0.533333, 0.470588>] [0.572549 rgb <0.705882, 0.533333, 0.501961>] [0.576471 rgb <0.705882, 0.533333, 0.533333>] [0.580392 rgb <0.705882, 0.580392, 0.470588>] [0.584314 rgb <0.705882, 0.580392, 0.501961>] [0.588235 rgb <0.705882, 0.580392, 0.533333>] [0.592157 rgb <0.705882, 0.580392, 0.580392>] [0.596078 rgb <0.705882, 0.611765, 0.501961>] [0.600000 rgb <0.705882, 0.611765, 0.533333>] [0.603922 rgb <0.705882, 0.611765, 0.580392>] [0.607843 rgb <0.705882, 0.611765, 0.611765>] [0.611765 rgb <0.705882, 0.643137, 0.533333>] [0.615686 rgb <0.705882, 0.643137, 0.580392>] [0.619608 rgb <0.705882, 0.643137, 0.611765>] [0.623529 rgb <0.705882, 0.643137, 0.643137>] [0.627451 rgb <0.705882, 0.674510, 0.580392>] [0.631373 rgb <0.705882, 0.674510, 0.611765>] [0.635294 rgb <0.705882, 0.674510, 0.643137>] [0.639216 rgb <0.705882, 0.705882, 0.643137>] [0.643137 rgb <0.737255, 0.533333, 0.470588>] [0.647059 rgb <0.737255, 0.580392, 0.470588>] [0.650980 rgb <0.737255, 0.580392, 0.501961>] [0.654902 rgb <0.737255, 0.580392, 0.533333>] [0.658824 rgb <0.737255, 0.580392, 0.580392>] [0.662745 rgb <0.737255, 0.611765, 0.501961>] [0.666667 rgb <0.737255, 0.611765, 0.533333>] [0.670588 rgb <0.737255, 0.611765, 0.580392>] [0.674510 rgb <0.737255, 0.611765, 0.611765>] [0.678431 rgb <0.737255, 0.643137, 0.533333>] [0.682353 rgb <0.737255, 0.643137, 0.580392>] [0.686275 rgb <0.737255, 0.643137, 0.611765>] [0.690196 rgb <0.737255, 0.643137, 0.643137>] [0.694118 rgb <0.737255, 0.674510, 0.580392>] [0.698039 rgb <0.737255, 0.674510, 0.611765>] [0.701961 rgb <0.737255, 0.674510, 0.643137>] [0.705882 rgb <0.737255, 0.674510, 0.674510>] [0.709804 rgb <0.737255, 0.737255, 0.674510>] [0.713726 rgb <0.768627, 0.580392, 0.501961>] [0.717647 rgb <0.768627, 0.611765, 0.501961>] [0.721569 rgb <0.768627, 0.611765, 0.533333>] [0.725490 rgb <0.768627, 0.611765, 0.580392>] [0.729412 rgb <0.768627, 0.611765, 0.611765>] [0.733333 rgb <0.768627, 0.643137, 0.533333>] [0.737255 rgb <0.768627, 0.643137, 0.580392>] [0.741176 rgb <0.768627, 0.643137, 0.611765>] [0.745098 rgb <0.768627, 0.643137, 0.643137>] [0.749020 rgb <0.768627, 0.674510, 0.580392>] [0.752941 rgb <0.768627, 0.674510, 0.611765>] [0.756863 rgb <0.768627, 0.674510, 0.643137>] [0.760784 rgb <0.768627, 0.674510, 0.674510>] [0.764706 rgb <0.768627, 0.705882, 0.611765>] [0.768627 rgb <0.768627, 0.705882, 0.643137>] [0.772549 rgb <0.768627, 0.705882, 0.674510>] [0.776471 rgb <0.768627, 0.705882, 0.705882>] [0.780392 rgb <0.768627, 0.768627, 0.705882>] [0.784314 rgb <0.800000, 0.611765, 0.533333>] [0.788235 rgb <0.800000, 0.643137, 0.533333>] [0.792157 rgb <0.800000, 0.643137, 0.580392>] [0.796078 rgb <0.800000, 0.643137, 0.611765>] [0.800000 rgb <0.800000, 0.643137, 0.643137>] [0.803922 rgb <0.800000, 0.674510, 0.580392>] [0.807843 rgb <0.800000, 0.674510, 0.611765>] [0.811765 rgb <0.800000, 0.674510, 0.643137>] [0.815686 rgb <0.800000, 0.674510, 0.674510>] [0.819608 rgb <0.800000, 0.705882, 0.611765>] [0.823529 rgb <0.800000, 0.705882, 0.643137>] [0.827451 rgb <0.800000, 0.705882, 0.674510>] [0.831373 rgb <0.800000, 0.705882, 0.705882>] [0.835294 rgb <0.800000, 0.737255, 0.643137>] [0.839216 rgb <0.800000, 0.737255, 0.674510>] [0.843137 rgb <0.800000, 0.737255, 0.705882>] [0.847059 rgb <0.800000, 0.737255, 0.737255>] [0.850980 rgb <0.831373, 0.643137, 0.580392>] [0.854902 rgb <0.831373, 0.674510, 0.580392>] [0.858824 rgb <0.831373, 0.674510, 0.611765>] [0.862745 rgb <0.831373, 0.674510, 0.643137>] [0.866667 rgb <0.831373, 0.705882, 0.611765>] [0.870588 rgb <0.831373, 0.705882, 0.643137>] [0.874510 rgb <0.831373, 0.705882, 0.674510>] [0.878431 rgb <0.831373, 0.705882, 0.705882>] [0.882353 rgb <0.831373, 0.737255, 0.611765>] [0.886275 rgb <0.831373, 0.737255, 0.674510>] [0.890196 rgb <0.831373, 0.737255, 0.705882>] [0.894118 rgb <0.831373, 0.737255, 0.737255>] [0.898039 rgb <0.831373, 0.768627, 0.674510>] [0.901961 rgb <0.831373, 0.768627, 0.705882>] [0.905882 rgb <0.831373, 0.768627, 0.737255>] [0.909804 rgb <0.831373, 0.800000, 0.737255>] [0.913725 rgb <0.862745, 0.674510, 0.611765>] [0.917647 rgb <0.862745, 0.705882, 0.611765>] [0.921569 rgb <0.862745, 0.705882, 0.643137>] [0.925490 rgb <0.862745, 0.737255, 0.643137>] [0.929412 rgb <0.862745, 0.737255, 0.674510>] [0.933333 rgb <0.862745, 0.737255, 0.705882>] [0.937255 rgb <0.862745, 0.768627, 0.674510>] [0.941176 rgb <0.862745, 0.768627, 0.705882>] [0.945098 rgb <0.862745, 0.768627, 0.737255>] [0.949020 rgb <0.862745, 0.800000, 0.737255>] [0.952941 rgb <0.862745, 0.831373, 0.768627>] [0.956863 rgb <0.894118, 0.705882, 0.643137>] [0.960784 rgb <0.894118, 0.737255, 0.674510>] [0.964706 rgb <0.894118, 0.768627, 0.674510>] [0.968627 rgb <0.894118, 0.768627, 0.705882>] [0.972549 rgb <0.894118, 0.768627, 0.737255>] [0.976471 rgb <0.894118, 0.800000, 0.705882>] [0.980392 rgb <0.894118, 0.800000, 0.737255>] [0.984314 rgb <0.894118, 0.800000, 0.768627>] [0.988235 rgb <0.925490, 0.768627, 0.705882>] [0.992157 rgb <0.925490, 0.800000, 0.737255>] [0.996078 rgb <0.925490, 0.831373, 0.768627>] } #version PinkMarb_Inc_Temp; PNG  IHDRddGɇP%KHdpȌt[!2L%f\+= S\9vd( 2؋ 6\`ZީJ6}_nϝ\y_|zxx럥?N?}穧?ND#Mn}GVv>V}M(e{+ۏ|<,ox>P闿u׽ߍy>d(I?M>M&өT8J%A-]Eٍh1M VáPηuݼYMz~v~vn*=Meb;N'M%ӟÈ?V {a5j^h'PHQv` qn݄+7͖;M% i~(FXTKq2J%L6Nʁ? *b }_U"kW |MZ{qidAe_OjZ}utRedd2M&dtOʧ jDbɄǢ%,.e'x\N˱nZY^XX^5A%&BVj[N_j7ZR0q434>y cEX  ~_ - KἿa5,-p[Vd6/Ukƙ4콮7 b)I&Q:,ERqOb!BʶQ.öjw> nOJVo4ӆ4VV.%#|I'QUT V>Q5XI&CVc}ذ۬V}7Ң i6x5tFNݨUʥҟdT2LĢQrwDmDIQcNлzpl8v}(P#IQ(+n[NF7VE;l8*8$ a"J2gԓD*fSn:[O'm#GF^;tUhEa2_U_*b.ٖ~χ9q(3s+k[`8n,F:zh֫/J%tg2߇'qUa.W*l*"a[†Ce>GH7dv #7x:gg><2̠+$ Fm1` )%{- !98MfpYLRv6 V!ݮ6U;$꣮`c6Ks\$h2z`eE'^Q=QV}KtmʚVj3p@@{QX }.# ufG`Xv+x0Gqb6Gce<⛓qY׋¥GU (QZXvڪŶp# Gsbd2 F#0vu@򈎨k@F/ X96 IDh.tQ6]bw &+tp0 #:#wFZʦ}u;!dx&qeu|e]@S4&Zrxm? #9`_k"|B_-zuVq@xt`i5Lc&:K tTXF W• ;H{ʶ = S;vy>Ie3(*|H|FGrY|ԑ{i-̻'{֏,6 ~Ƣ) d\ktC44 OW2Gf5o IBJDX4QnՄ8>/ d9I4 -B[}nM#sdQB645/KF/ <"bT͜M<} Q̱1Z~wB3"S}N,\ͦnV)pʧI)Ў#weV0 r6o7\&J i 0bY EF#l{9@9чqu:- +!pH\{惻6 '|x05%Eq:4hA'$Wq*q4.̒$2=6M|BES*ڠP 1Y`W/fRu H)#V;0q ry6`Я1'j\b8]ނC 8l:{7OD.id@.uT/mN`}cv~w>Àr  ^m[z j^_+E!EɒuqǘN}^xmff뎃~+,P6z r3aE#F$C  Ţtᲁ8ZLZ[5[Ga dF1HP@I%: +@1'0ߴ7PhK& a`/m`d-H?Dt1<)d1' %-4#eEwBD4Ϯ <m?C4/LW\X`h1tZutbjAIfUf ~Hh բHB53@D8q:,\v0b܎~,,a$$2ȦtqR!{n&L(\G XB;!* F4fvG,*\x3&Wzd}r}=ˊf bD%rd U.\v4@,/fqz@&!Tн \AQW7Do>4)"#vB v+7D~h):4 _`Nfd39$ i3~FF(*U- DA6]ۨ=۠e@!^Gi$> >TyqjI{ƺźnZܯbtݼ {&2Ch%y~1p~2oۄ2a3WX*> GBo8-hA\nf$^efUCp%' ̴w.v;"yB+f 訂`(^6;7n:z]%~QD&s*c'"c=ѸrF*^su@7 }Q@xx 5D*K*4ifٝT^&[aSaj4Ro2ZpqV+y<(6!&: B f2GrΞ@ 8j~`<Q k\IM"TBu?SZIRoƹ\Q>:mV[Nںh2WQѨg_6AS(<s;D+`*41Tݮx{.ڲlr.ƄBuzt?e$"QB(w `I2eN ٧ p hrM\7!|G ?ee wVcw1A;,t!* GȞ8{TNVԦہh{jKO>Ԃ?18 I@XC=Ghxg{;uA8]wmv^Zڋ:B'*h4ѬT=n3cVtȒo1S@+,-[\.+ זtR}v [3.PUͭk?z<w] `\~ +L.8ɑ1 3ZCDFAEGAXowCUMH~4#UfJ(b ZdW= lm~<Bb K!77DQ8-/Ě(KS5Zu*y0H)ƒX@L[؀A4|bD>:,ZgPse:H197NhLB2,F/<ގ;{FRB(lVJq@AHKZ]tk0ݓ!rP3>‘ueeumbv*+(T4sR~gTl\\7v7I?:wnݘkU &r1Ɲ2(0S,?/ϒJylwm=EOv^HB<k@'ALo,.}hqy;JXS\)=c(j))\k7ʶi7&RZC,}i{tF x:u(jVow{vvt, {v63g-™[GJ$Rrq%A5SFR7zU `(JW*ass:lgdž*AA.iڔ՘Oxl2!@;*JZ} Q]`٠4ܟ-U p+{;~vۆۏVUd9A0}ڵy>WIIoяnmTqd@%MH`[FI9 %w V>rKKaZ=H9{yF^ѮWyIh;KEX`_C@C&$90o!vI"'ӹr?Q`b[TW0nq u :`l c"* b٥iӅޠs6;|2@˴1b`'@0\bIc8)'c@ U;&H2W7<'o'鐧9< $ G @_-?7b'jfb[FvA 9XLKLh ԓB8}׈`%gu[moI-X EF5yQ~l&PS\!S kY@SnS!Qj%TB`$H z(oz<{]\r df]J^-g6GHO<Dd/=PwIf)"$P`0)y npn]ʮRXœrr(BH?RY-a,H:˂=\hxU,2pĸ"QFԣ 2Wpf_^hbğLp_TkbxJECooj-5xx!THR.qUydljBP#^7{:<:d=<|7fT3DgЧ"˭U-_|( c;ս@ #KUiwcnFQ8}s]mzz rp{ԨW~+`̻0n&-@f/)Owh4`E'VT0"t}l7f5W"(\JB/Wo'y:pOF"oT\R I: RPs|:GRzV2R1P«k7y#`/n \'M"h$oȪk OlJdž$GWBUA^/3`OŷP%D\SnL׀ `@dW jajƍ}i51a|~s5ǯa|2_S<n#]6*IENDB`PNG  IHDRddG{c6~il`b~MK篘0BDtl\l4H  x7;#MEYi)i9M}Cc3+[#T_SUYYM[O@G?A]@F> .}Gϧ &.>AD@]mTCZX9p@[MUUSGO ?>|#k^\741/,*"GGFvGFE&j*:fֶXgWWG;k3Cm 5 -]==]MUE9InVq[TQ֋]Z74>=./$'ՉHb씥k.G7/˯cWַv "ԼoLMcz?~//N''Jxy9٘26613xxy{.䭈̏\pYy%U-G1#]-EiAu07`efdnh(#׮\yki5Ckg߰YZmm*+MK&}]v6Vwg-PW]QFT2r+hڻH͇Oc28/I tam,-lq>?wÿX꨽{+ㅀwPDBZ^YVg0O]-5EyYiXtqr}#cbc"!^.X+sc= E)1|<c8WO@0! bHT1v%Ħd7t N-oa k7Vg&:g&:Wg&E!]3K+*+ˋsR]̵%E$޽W2v“j>to~ׯ\@ذٙ**J( ogq9DR5Rx_TRF J #K+<8:\Y\XZ][P_,)*gkinne2KJRcݭe_x-(" [H^_Q=4s;k닓]mm͍L,}BcD_'SU 6/^ p=c}⍜>:{p|fy fphtj @NvvwVfF:ۚKHAζ&ƖPyy)Q6 \ӳr|R>6 6c`lzaez&_NO0 Kk{;[ۻ;k㟺`jJt4F%fdƅzaMdٟ>y@/lU989}x#,`gsuqqPv47TgݱjjfqIqxkU)gOhާcz#'("iUR94s r [3[;Ksӓ>6Wf#uUTԴ -@s=@ IHJIJK(x3 ['Wv|v--,Ϗ45vQ&')=-Y.6ڪJJ*:ƖX(ʠ/ks ˼STRTPP0 %g6v̀#XO}QNQC?ejerDk)+A(&"=pv&\h2r~NY8#82!-obqc|?sOgTw NN4ז吣=Lu5TU4to9[hy DR ]}[҆ó__1@XsE^NQ}4e8/6 CC#xvv֖f&ai5cwHdBJzf^Q9,mm4NvZRI@<>0D ̐аgk}U|^p>gge|ׯ߸M󄅓WDV@ON-1 U!ݥƲrpx?_`h}bƒ&on| j^p{tHj8#cSj[0磝eJkmQVjR<)4/ )c j,VLTTDH;s3'k y5}slATbfQ͇6 hoc2JJ,1BILˡ O{c-eyXR|߸t~>w-/U\]9=tȁى:AyC NH G Yj((+ʽzJ{ٟ~tl\x%T-|CcR˪Q$Pkkk VVz1@BGFǓD-$' %-F잦'ý+~_/ަeb焒}# $O+3Y_Y^_K ӔQPMi ёp I(b# AXGp3?q̏?zƃL,,,l\F$nC +du}}uyiqqnjl,7-9!!1)1 / J' .Tdb?_9ջ<}z3/b\_[[{ U b}eaz4?+= LQ29#++''+-%!fXCNkΝ={[hAܤ|#iE %tp[[{{{wK/:~I&#$B'`xBaʹEy9޿uŋ~?.^ >_Z gRRY\ZYG i;+C&Ou6Vf$%S)))`(c"B\<{8Yh C_zk׮\:Wh5M `W6cw|=1h.@)HILH$X1A>0^>fү_>}ޝ۷n\~ܟ4,r1E5uTC3>Xl)KKJڶԤ(\U%3=~7Q>x&g]ZӀY]|r `b&>bR2T]MNG I)쬴h...XKw/ =zx?.=g/ޤU6"$V7av|zz{x羾PI&gfІ96Vd{x4]3g/\a|V'<9,~83{Rm}q21>8@S322srsP(.P& ߽s[.\C)%36*řёAQ EHNτA#7_v/~;$Ռ@ʫ0ݓ/'Ms[Q ?w.IMKNLOE 7/XP.^ǵ;l⊺܂b@CYU'Y)Q$"pb #P'HQWbe}psg~;Y^kغOItήnmvW4 -Aut|h.HrjMLJ"I@o1Po(gqCR*X7脔 LK{Lo}YEPWsCMUUEIA\!E {8YCǟ~=D5ݼ!Qqɘ幑Zz&(cde&'쌃w@uژEag|~Q$7iC6qtqko[5<2137=҅=ꄱ1ё@WH=56KRjuH_T">S𭒶k_X_Y\1RUj  hL  4މ=g@@uܥWo?d|ediP|~:p"̤6!"22$\=}BIIĨ`O@j?yn]rr; sx0gWwOLÇCKHHl,ώחĀsGFx9#F|jVNvZD%P_ A pRLrDRG&M5eą ,Ϲ_|ޝyB\=}࣠;Z*J s..hB]АPb 9 #>^ +.6&&6W~>jT( &d%>!œT29-+tbr41 y9w3y*93Vfv>~'(*ab]XVbT䔴03 HC^,,,k~>>>AA!1Yuc0±y%UuhSSSR畕fBaDnblbttM,PkZga{Jz$D%|#u4Z^yP]Z]PZUWWdA-[+p:ZZj*J j"|,H ¢Rrr唴pIť8!b<(/+=8a{p7oܼyWoCYE= ,eu= g<"L&ʀ}EJh6Hs3"-&7Kn\,n]KzSv>q9%Uu M uXIEMS?"1]a@'$T7u }l+J p3E);7\:sݣUTSAK=Ck/1>]T`H$Y+jhnLRƆAqU擣~B+/헟>s}WxLL 745u ͬCcRZQi ]Cc陙)P]}+^Xs]EWOD{_҅g~t16`Z8yE&„£Jj?LL΀m-$$F=c:zȵkW A"@@;B[RL-paDbX$:9qQ1fAkwȊ t1Tx 3;; {w܃MxK3p +9@ŚYXcqnЍ]1aQI٥m#sSh 9=50~M9jO6Xܺv:7ZXW/_??u p 3L`PHD|FQMK,`P(I@m.ˌ 7V&&.&"=s6'2=la`3Y [K}m 5/>429kx@&)q e0-Pe%DEťdeą 򽂂a{+" # z WzJrҒ~xBlZam eff262YZ_i)IG$E IG\ph9:+H|`PPPH zfY)Ksb d3;ФƏ}]? ,mn.Ow5ו3gdA'HM&x? k lP.Nf* 2bLqIȯG/i,S6&>uSXZQYU $?#1Dᡁ <}|эz'@[]I5c ·\ejni@OvWf!Zk[Z#O QQ1q@>~`@9Xh*dc3+،н&fWVVwNO'cOV(7+pJrRjFՠfDy;[I`@jk[Dk+'h6498T0MACZ~@f̜̔Xz&2&6>!`%'Nw&F%T5}4>{|z [9?39>6>9G-EyYY9eEɉhjBaANjLsGщ̂Oc=t<}tzJ><:7 Œ_P\VY[[UVʤ8;LO0 ɩ95:zde{S>pws}mshokA7VW6~hnkhoU槄SyB&=+74m ߾ ߽sta-όu65644~hhkTSH&z9h)Hr?īilY-gg{֎߾cnHOԅ%];kR^:*1 {(3 +[~994A#ポ_NhBLMBU8&?o,-om//.,nmmn|`og}in8O]˫ٮCOgko.H!x;Zgar˚ƧWTO5H4&hgyfjnmcyeeey/XjiO&:6Pd6Nmm}Kk+SBѠ}c?׷ӝ//_~9=YPWH^Kv_9ِIENDB`  OS/2Ncmapnglyf0n̬headNւ6hheaZ($hmtx iLloca`maxp@x nameppost H @  X .'' + 4H]=GflD"&'A+0D0?)$X .'' + 4H]=GflD"&'A+0D0?)$5Ps_<|ᕂXiXi/f     + C Q iPOV-Ray LogoRegularPOV-Ray LogoPOV-Ray LogoPOV-Ray LogoRegularPOV-Ray LogoPOV-Ray LogoPNG  IHDR@k*%0PLTEUUUUYtRNS@fIDATxQr0 ^a`]`Gݶ %MDgN6 < L`4 $0р&0F&_7&0:H`w o? ,=7Ʌ.AZZ2@ey }r81Ar#]sWc寞nqv>>qe97dҩ*. O eCi; de6}EM+[ y՚El[a&wW^BhFG L`t$0ёFG L`t$0ёHBrk'zzM?8Ƨ*+řd5s%m}^%p$u}Vjn  T]cf% /*Mb!{[ʒ2|gˢR1$Ls1Y0՝}}; _filter_clip(function(u,v){f_PigColor(u,v,0).red },CMin.red ,CMax.red ) _filter_clip(function(u,v){f_PigColor(u,v,0).green },CMin.green ,CMax.green ) _filter_clip(function(u,v){f_PigColor(u,v,0).blue },CMin.blue ,CMax.blue ) _filter_clip(function(u,v){f_PigColor(u,v,0).transmit},CMin.transmit,CMax.transmit) #end #macro Pig_Clip_Colors_Cam(Cam,CMin,CMax) #local f_PigColor=function{pigment{camera_view{Cam}}}; #local f_clr_r=_filter_clip(function(u,v){f_PigColor(u,v,0).red },CMin.red ,CMax.red ); #local f_clr_g=_filter_clip(function(u,v){f_PigColor(u,v,0).green },CMin.green ,CMax.green ); #local f_clr_b=_filter_clip(function(u,v){f_PigColor(u,v,0).blue },CMin.blue ,CMax.blue ); #local f_clr_a=_filter_clip(function(u,v){f_PigColor(u,v,0).transmit},CMin.transmit,CMax.transmit); #local Pig=Pig_f_rgba(f_clr_r,f_clr_g,f_clr_b,f_clr_a); Pig #end //-------------------------------------------------------------- //----- color matrix effect -------------------------------- //-------------------------------------------------------------- #macro _filter_dot(_f_red,_f_green,_f_blue,_p_red,_p_green,_p_blue) function{(_f_red(u,v)*_p_red+_f_green(u,v)*_p_green+_f_blue(u,v)*_p_blue)} #end #macro PP_Color_Matrix(Matrix) PP_Init_Colors_Outputs() _filter_dot(f_output_red,f_output_green,f_output_blue,Matrix[0],Matrix[1],Matrix[2]) _filter_dot(f_output_red,f_output_green,f_output_blue,Matrix[3],Matrix[4],Matrix[5]) _filter_dot(f_output_red,f_output_green,f_output_blue,Matrix[6],Matrix[7],Matrix[8]) function{0} #end #macro PP_Color_Matrix_Ref(Ref,Matrix) #if(Ref=0) PP_Color_Matrix(Matrix) #else PP_Init_Colors_Outputs() PP_Init_PP_Colors_Outputs() _filter_dot( function(u,v){f_pp_red (u,v,Ref)}, function(u,v){f_pp_green(u,v,Ref)}, function(u,v){f_pp_blue (u,v,Ref)}, Matrix[0],Matrix[1],Matrix[2] ) _filter_dot( function(u,v){f_pp_red (u,v,Ref)}, function(u,v){f_pp_green(u,v,Ref)}, function(u,v){f_pp_blue (u,v,Ref)}, Matrix[3],Matrix[4],Matrix[5] ) _filter_dot( function(u,v){f_pp_red (u,v,Ref)}, function(u,v){f_pp_green(u,v,Ref)}, function(u,v){f_pp_blue (u,v,Ref)}, Matrix[6],Matrix[7],Matrix[8] ) function{0} #end #end #macro PP_Color_Matrix_Cam(Cam,Matrix) #local f_PigColor=function{pigment{camera_view{Cam}translate -y scale <1,-1,1>}}; _filter_dot( function(u,v){f_PigColor(u,v,0).red}, function(u,v){f_PigColor(u,v,0).green}, function(u,v){f_PigColor(u,v,0).blue}, Matrix[0],Matrix[1],Matrix[2] ) _filter_dot( function(u,v){f_PigColor(u,v,0).red}, function(u,v){f_PigColor(u,v,0).green}, function(u,v){f_PigColor(u,v,0).blue}, Matrix[3],Matrix[4],Matrix[5] ) _filter_dot( function(u,v){f_PigColor(u,v,0).red}, function(u,v){f_PigColor(u,v,0).green}, function(u,v){f_PigColor(u,v,0).blue}, Matrix[6],Matrix[7],Matrix[8] ) function{0} #end #macro Pig_Color_Matrix_Cam(Cam,Matrix) #local f_PigColor=function{pigment{camera_view{Cam}}}; #local f_clr_r=_filter_dot( function(u,v){f_PigColor(u,v,0).red}, function(u,v){f_PigColor(u,v,0).green}, function(u,v){f_PigColor(u,v,0).blue}, Matrix[0],Matrix[1],Matrix[2] ); #local f_clr_g=_filter_dot( function(u,v){f_PigColor(u,v,0).red}, function(u,v){f_PigColor(u,v,0).green}, function(u,v){f_PigColor(u,v,0).blue}, Matrix[3],Matrix[4],Matrix[5] ); #local f_clr_b=_filter_dot( function(u,v){f_PigColor(u,v,0).red}, function(u,v){f_PigColor(u,v,0).green}, function(u,v){f_PigColor(u,v,0).blue}, Matrix[6],Matrix[7],Matrix[8] ); #local f_clr_a=function{0}; #local Pig=Pig_f_rgba(f_clr_r,f_clr_g,f_clr_b,f_clr_a); Pig #end //-------------------------------------------------------------- //----- convolution matrix effect -------------------------- //-------------------------------------------------------------- #macro _filter_convolution(_f_ib,_XDim,_YDim,_Divisor,_Leveling,_Matrix) #local _X_Step=1/image_width; #local _Y_Step=1/image_height; #local _X_Start=-((_XDim-1)/image_width)/2; #local _Y_Start=-((_YDim-1)/image_height)/2; function{(( _Leveling #local _Y=0; #while(_Y<_YDim) #local _Y0=_Y_Start+_Y_Step*_Y; #local _X=0; #while(_X<_XDim) #local _X0=_X_Start+_X_Step*_X; #local _C=Matrix[_Y*_XDim+_X]; +_f_ib(clip(u+_X0,0,1),clip(v+_Y0,0,1))*_C #local _X=_X+1; #end #local _Y=_Y+1; #end )/_Divisor)} #end #macro PP_Convolution_Matrix(XDim,YDim,Divisor,Leveling,Matrix) #local Size=XDim*YDim; #if(Size!=dimension_size(Matrix,1)) #error "Wrong convolution matrix (array) size" #else PP_Init_Alpha_Colors_Outputs() _filter_convolution(f_output_red ,XDim,YDim,Divisor,Leveling,Matrix) _filter_convolution(f_output_green,XDim,YDim,Divisor,Leveling,Matrix) _filter_convolution(f_output_blue ,XDim,YDim,Divisor,Leveling,Matrix) _filter_convolution(f_output_alpha,XDim,YDim,Divisor,Leveling,Matrix) #end #end #macro PP_Convolution_Matrix_Ref(Ref,XDim,YDim,Divisor,Leveling,Matrix) #if(Ref=0) PP_Convolution_Matrix(XDim,YDim,Divisor,Leveling,Matrix) #else #local Size=XDim*YDim; #if(Size!=dimension_size(Matrix,1)) #error "Wrong convolution matrix (array) size" #else PP_Init_Alpha_Colors_Outputs() PP_Init_PP_Alpha_Colors_Outputs() _filter_convolution(function(u,v){f_pp_red (u,v,Ref)},XDim,YDim,Divisor,Leveling,Matrix) _filter_convolution(function(u,v){f_pp_green(u,v,Ref)},XDim,YDim,Divisor,Leveling,Matrix) _filter_convolution(function(u,v){f_pp_blue (u,v,Ref)},XDim,YDim,Divisor,Leveling,Matrix) _filter_convolution(function(u,v){f_pp_alpha(u,v,Ref)},XDim,YDim,Divisor,Leveling,Matrix) #end #end #end #macro PP_Convolution_Matrix_Cam(Cam,XDim,YDim,Divisor,Leveling,Matrix) #local f_PigColor=function{pigment{camera_view{Cam}translate -y scale <1,-1,1>}}; #local Size=XDim*YDim; #if(Size!=dimension_size(Matrix,1)) #error "Wrong convolution matrix (array) size" #else _filter_convolution(function(u,v){f_PigColor(u,v,0).red },XDim,YDim,Divisor,Leveling,Matrix) _filter_convolution(function(u,v){f_PigColor(u,v,0).green },XDim,YDim,Divisor,Leveling,Matrix) _filter_convolution(function(u,v){f_PigColor(u,v,0).blue },XDim,YDim,Divisor,Leveling,Matrix) _filter_convolution(function(u,v){f_PigColor(u,v,0).transmit},XDim,YDim,Divisor,Leveling,Matrix) #end #end #macro Pig_Convolution_Matrix_Cam(Cam,XDim,YDim,Divisor,Leveling,Matrix) #local f_PigColor=function{pigment{camera_view{Cam}}}; #local f_clr_r=_filter_convolution(function(u,v){f_PigColor(u,v,0).red },XDim,YDim,Divisor,Leveling,Matrix); #local f_clr_g=_filter_convolution(function(u,v){f_PigColor(u,v,0).green },XDim,YDim,Divisor,Leveling,Matrix); #local f_clr_b=_filter_convolution(function(u,v){f_PigColor(u,v,0).blue },XDim,YDim,Divisor,Leveling,Matrix); #local f_clr_a=_filter_convolution(function(u,v){f_PigColor(u,v,0).transmit},XDim,YDim,Divisor,Leveling,Matrix); #local Pig=Pig_f_rgba(f_clr_r,f_clr_g,f_clr_b,f_clr_a); Pig #end //-------------------------------------------------------------- //----- depth effect --------------------------------------- //-------------------------------------------------------------- #macro _filter_depth(_f_in,_firld_start,_firld_depth) function{clip(adj_range2(_f_in(u,v),_firld_start,_firld_start+_firld_depth,0,1),0,1)} #end #macro PP_Depth(Field_Start,Field_Depth) PP_Init_Depth_Output() _filter_depth(f_output_depth,Field_Start,Field_Depth) _filter_depth(f_output_depth,Field_Start,Field_Depth) _filter_depth(f_output_depth,Field_Start,Field_Depth) function{0} #end #macro PP_Depth_Cam(Cam,Field_Start,Field_Depth) #local f_PigColor=function{pigment{camera_view{Cam output Output_Depth}translate -y scale <1,-1,1>}}; _filter_depth(function(u,v){f_PigColor(u,v,0).red },Field_Start,Field_Depth) _filter_depth(function(u,v){f_PigColor(u,v,0).green},Field_Start,Field_Depth) _filter_depth(function(u,v){f_PigColor(u,v,0).blue },Field_Start,Field_Depth) function{0} #end #macro Pig_Depth_Cam(Cam,Field_Start,Field_Depth) #local f_PigColor=function{pigment{camera_view{Cam output Output_Depth}}}; #local f_clr_r=_filter_depth(function(u,v){f_PigColor(u,v,0).red },Field_Start,Field_Depth); #local f_clr_g=_filter_depth(function(u,v){f_PigColor(u,v,0).green},Field_Start,Field_Depth); #local f_clr_b=_filter_depth(function(u,v){f_PigColor(u,v,0).blue },Field_Start,Field_Depth); #local f_clr_a=function{0}; #local Pig=Pig_f_rgba(f_clr_r,f_clr_g,f_clr_b,f_clr_a); Pig #end //-------------------------------------------------------------- //----- find edges effect ---------------------------------- //-------------------------------------------------------------- #macro _find_edges_avg_depth(_f_depth,_radius,_tresh,_width,_height) #local _pwidth=1/_width; #local _pheight=1/_height; #local _f=function(u,v,d){( 0 #local _weight=0; #local j=-_radius; #while(j<=_radius) #local k=-_radius; #while(k<=_radius) #if(((k!=0)|(j!=0))&(f_r(j,k,0)<=_radius)) +select(abs(d-_f_depth(clip(u+j*_pwidth,0,1),clip(v+k*_pheight,0,1)))-_tresh,0,1) #local _weight=_weight+1; #end #local k=k+1; #end #local j=j+1; #end #if(_weight!=0) #local _weight=1/_weight; #end )*_weight}; function(u,v){_f(u,v,_f_depth(u,v))} #end #macro _find_edges_avg_normal(_f_depth,_f_normal_x,_f_normal_y,_f_normal_z,_radius,_tresh,_width,_height) #local _pwidth=1/_width; #local _pheight=1/_height; #local _g=function(nx,ny,nz,du,dv){ select( _f_depth(du,dv)-MAX_MEGAPOV_DISTANCE, select((1-(nx*_f_normal_x(du,dv)+ ny*_f_normal_y(du,dv)+ nz*_f_normal_z(du,dv)))/2-_tresh,0,1), 0 ) }; #local _f=function(u,v,nx,ny,nz){( 0 #local _weight=0; #local j=-_radius; #while(j<=_radius) #local k=-_radius; #while(k<=_radius) #if(((k!=0)|(j!=0))&(f_r(j,k,0)<=_radius)) +_g(nx,ny,nz,clip(u+j*_pwidth,0,1),clip(v+k*_pheight,0,1)) #local _weight=_weight+1; #end #local k=k+1; #end #local j=j+1; #end #if(_weight!=0) #local _weight=1/_weight; #end )*_weight}; function(u,v){select( _f_depth(u,v)-MAX_MEGAPOV_DISTANCE, _f(u,v,_f_normal_x(u,v),_f_normal_y(u,v),_f_normal_z(u,v)), 0 )} #end #macro _find_edges_avg_color(_f_red,_f_green,_f_blue,_radius,_tresh,_width,_height) #local _pwidth=1/_width; #local _pheight=1/_height; #local _g=function(r,g,b,du,dv){select((abs(r-_f_red(du,dv))+abs(g-_f_green(du,dv))+abs(b-_f_blue(du,dv)))/3-_tresh,0,1)}; #local _f=function(u,v,r,g,b){( 0 #local _weight=0; #local j=-_radius; #while(j<=_radius) #local k=-_radius; #while(k<=_radius) #if(((k!=0)|(j!=0))&(f_r(j,k,0)<=_radius)) +_g(r,g,b,clip(u+j*_pwidth,0,1),clip(v+k*_pheight,0,1)) #local _weight=_weight+1; #end #local k=k+1; #end #local j=j+1; #end #if(_weight!=0) #local _weight=1/_weight; #end )*_weight}; function(u,v){_f(u,v,_f_red(u,v),_f_green(u,v),_f_blue(u,v))} #end #macro _find_edges(_is_pigment, _f_depth, _f_nx,_f_ny,_f_nz, _f_r,_f_g,_f_b,_f_a, _depth_thresh,_normal_thresh,_color_thresh, _line_radius,_sharpness,_pigment, _background,_background_filter,_width,_height) #local _f_avg_depth=_find_edges_avg_depth( _f_depth, _line_radius, _depth_thresh, _width, _height ); #local _f_avg_normal=_find_edges_avg_normal( _f_depth, _f_nx,_f_ny,_f_nz, _line_radius, _normal_thresh, _width, _height ); #local _f_avg_color=_find_edges_avg_color( _f_r,_f_g,_f_b, _line_radius, _color_thresh, _width, _height ); #local __sharpness=_sharpness*(_line_radius-1)+1; #local _f_filter_3=1; #local _f_filter_2=function(avgCol){ select( _color_thresh, _f_filter_3, max(min(_f_filter_3,1-avgCol*__sharpness),0) ) }; #local _f_filter_1=function(avgNor,avgCol){ select( _normal_thresh, _f_filter_2(avgCol), max(min(_f_filter_2(avgCol),1-avgNor*__sharpness),0) ) }; #local _f_filter_0=function(avgDth,avgNor,avgCol){ select( _depth_thresh, _f_filter_1(avgNor,avgCol), max(min(_f_filter_1(avgNor,avgCol),1-avgDth*__sharpness),0) ) }; #local _f_filter=function(u,v){_f_filter_0(_f_avg_depth(u,v),_f_avg_normal(u,v),_f_avg_color(u,v))}; #local _f_pig=function{pigment{_pigment translate -y scale <1,-1,1>}}; #local _f_back=function{pigment{_background translate -y scale <1,-1,1>}}; #local _f_filt_back=function{pigment{_background_filter translate -y scale <1,-1,1>}}; #local _f_apply=function(p,f,s){p*(1-f)+s*f}; #if((_depth_thresh!=0)|(_normal_thresh!=0)|(_color_thresh!=0)) #if(_is_pigment) #local _pig_red= #end function{_f_apply(_f_pig(u,v,0).red ,_f_filter(u,v),_f_apply(_f_back(u,v,0).red ,_f_filt_back(u,v,0).red ,_f_r(u,v)))} #if(_is_pigment) #local _pig_green= #end function{_f_apply(_f_pig(u,v,0).green,_f_filter(u,v),_f_apply(_f_back(u,v,0).green,_f_filt_back(u,v,0).green,_f_g(u,v)))} #if(_is_pigment) #local _pig_blue= #end function{_f_apply(_f_pig(u,v,0).blue ,_f_filter(u,v),_f_apply(_f_back(u,v,0).blue ,_f_filt_back(u,v,0).blue ,_f_b(u,v)))} #else #if((_depth_thresh=0)&(_normal_thresh=0)&(_color_thresh!=0)) #if(_is_pigment) #local _pig_red= #end function{_f_avg_depth(u,v)} #if(_is_pigment) #local _pig_green= #end function{_f_avg_normal(u,v)} #if(_is_pigment) #local _pig_blue= #end function{_f_avg_color(u,v)} #else #if(_is_pigment) #local _pig_red= #end function{_f_r(u,v)} #if(_is_pigment) #local _pig_green= #end function{_f_g(u,v)} #if(_is_pigment) #local _pig_blue= #end function{_f_b(u,v)} #end #end #if(_is_pigment) #local _pig_alpha= #end function{_f_a(u,v)} #if(_is_pigment) #local Pig=Pig_f_rgba(_pig_red,_pig_green,_pig_blue,_pig_alpha); #local Pig=pigment{Pig translate -y scale <1,-1,1>}; Pig #end #end #macro PP_Find_Edges_Back(Depth_Thresh,Normal_Thresh,Color_Thresh,Line_Radius,Sharpness,Pigment,Background,Background_Filter,Width,Height) PP_Init_Depth_Output() PP_Init_PNormal_Outputs() PP_Init_Alpha_Colors_Outputs() _find_edges( no, f_output_depth, f_output_pnormal_x, f_output_pnormal_y, f_output_pnormal_z, f_output_red, f_output_green, f_output_blue, f_output_alpha, Depth_Thresh, Normal_Thresh, Color_Thresh, Line_Radius, Sharpness, Pigment, Background, Background_Filter, Width, Height ) #end #macro PP_Find_Edges(Depth_Thresh,Normal_Thresh,Color_Thresh,Line_Radius,Sharpness,Pigment) PP_Find_Edges_Back(Depth_Thresh,Normal_Thresh,Color_Thresh,Line_Radius,Sharpness,Pigment,pigment{rgb 0},pigment{rgb 1},image_width,image_height) #end #macro PP_Find_Edges_Back_Cam(Cam,Depth_Thresh,Normal_Thresh,Color_Thresh,Line_Radius,Sharpness,Pigment,Background,Background_Filter,Width,Height) #local f_PigDepth=function{pigment{camera_view{Cam output Output_Depth}translate -y scale <1,-1,1>}}; #local f_PigNormal=function{pigment{camera_view{Cam output Output_Normal_Vector}translate -y scale <1,-1,1>}}; #local f_PigColor=function{pigment{camera_view{Cam}translate -y scale <1,-1,1>}}; _find_edges( no, function(u,v){f_PigDepth(u,v,0).red}, function(u,v){f_PigNormal(u,v,0).x}, function(u,v){f_PigNormal(u,v,0).y}, function(u,v){f_PigNormal(u,v,0).z}, function(u,v){f_PigColor(u,v,0).red}, function(u,v){f_PigColor(u,v,0).green}, function(u,v){f_PigColor(u,v,0).blue}, function(u,v){f_PigColor(u,v,0).transmit}, Depth_Thresh, Normal_Thresh, Color_Thresh, Line_Radius, Sharpness, Pigment, Background, Background_Filter, Width, Height ) #end #macro PP_Find_Edges_Cam(Cam,Depth_Thresh,Normal_Thresh,Color_Thresh,Line_Radius,Sharpness,Pigment) PP_Find_Edges_Back_Cam(Cam,Depth_Thresh,Normal_Thresh,Color_Thresh,Line_Radius,Sharpness,Pigment,pigment{rgb 0},pigment{rgb 1},image_width,image_height) #end #macro Pig_Find_Edges_Back_Cam(Cam,Depth_Thresh,Normal_Thresh,Color_Thresh,Line_Radius,Sharpness,Pigment,Background,Background_Filter,Width,Height) #local f_PigDepth=function{pigment{camera_view{Cam output Output_Depth}translate -y scale <1,-1,1>}}; #local f_PigNormal=function{pigment{camera_view{Cam output Output_Normal_Vector}translate -y scale <1,-1,1>}}; #local f_PigColor=function{pigment{camera_view{Cam}translate -y scale <1,-1,1>}}; _find_edges( yes, function(u,v){f_PigDepth(u,v,0).red}, function(u,v){f_PigNormal(u,v,0).x}, function(u,v){f_PigNormal(u,v,0).y}, function(u,v){f_PigNormal(u,v,0).z}, function(u,v){f_PigColor(u,v,0).red}, function(u,v){f_PigColor(u,v,0).green}, function(u,v){f_PigColor(u,v,0).blue}, function(u,v){f_PigColor(u,v,0).transmit}, Depth_Thresh, Normal_Thresh, Color_Thresh, Line_Radius, Sharpness, Pigment, Background, Background_Filter, Width, Height ) #end #macro Pig_Find_Edges_Cam(Cam,Depth_Thresh,Normal_Thresh,Color_Thresh,Line_Radius,Sharpness,Pigment) Pig_Find_Edges_Back_Cam(Cam,Depth_Thresh,Normal_Thresh,Color_Thresh,Line_Radius,Sharpness,Pigment,pigment{rgb 0},pigment{rgb 1},image_width,image_height) #end #version PProcess_Inc_Temp; #end// Persistence of Vision Ray Tracer version 3.5 Include File // File: rad_def.inc // Last updated: 2001.7.26 // Description: Set some common radiosity settings. // These settings are extremely general and are intended for // ease of use, and don't necessarily give the best results. //Modified 2001.7.26: Made Normal and Media parameters work //no matter what setting is used. (Chris Huff) #ifndef(Rad_Def2_Inc_Temp) #declare Rad_Def2_Inc_Temp = version; #version 3.5; #ifdef(View_POV_Include_Stack) #debug "including rad_def.inc\n" #end #declare Radiosity_Default = 0; #declare Radiosity_Debug = 1; #declare Radiosity_Fast = 2; #declare Radiosity_Normal = 3; #declare Radiosity_2Bounce = 4; #declare Radiosity_Final = 5; #declare Radiosity_OutdoorLQ = 6; #declare Radiosity_OutdoorHQ = 7; #declare Radiosity_OutdoorLight = 8; #declare Radiosity_IndoorLQ = 9; #declare Radiosity_IndoorHQ = 10; // The correct format for using this file is: // // #include "rad_def.inc" // global_settings { // radiosity { // Rad_Settings(Radiosity_Default, off, off) // } // } // // ####### DON NOT FORGET TO USE THE +QR/Radiosity=on OPTION ######## // // for first parameter use one of the above constants // // second parameter for radiosity normal switch // (turn 'on' if normal should be taken into account when calculating radiosity) // // third parameter for radiosity media switch // (turn 'on' if media should be taken into account when calculating radiosity) // #macro Rad_Settings(Nbr, Normal, Media) #switch(Nbr) // An empty raddiosiy block uses deault settings #case (Radiosity_Default) #debug "\nRadiosity_Default in use\n" #break // Run it fast, don't try to make it look good, make sure that // you can actually see where the radiosity boundaries are. #case (Radiosity_Debug) pretrace_start 0.08 pretrace_end 0.02 count 10 nearest_count 1 error_bound 0.3 recursion_limit 1 low_error_factor 0.8 gray_threshold 0 minimum_reuse 0.015 brightness 1.0 adc_bailout 0.01/2 #debug "\nRadiosity_Debug in use\n" #break // Make it look as good as you can, but I'm in a hurry #case (Radiosity_Fast) pretrace_start 0.08 pretrace_end 0.02 count 80 nearest_count 5 error_bound 0.4 recursion_limit 1 low_error_factor 0.9 gray_threshold 0 minimum_reuse 0.025 brightness 1.0 adc_bailout 0.01/2 #debug "\nRadiosity_Fast in use\n" #break // Typical values #case (Radiosity_Normal) pretrace_start 0.08 pretrace_end 0.01 count 200 nearest_count 7 error_bound 0.3 recursion_limit 1 low_error_factor 0.75 gray_threshold 0 minimum_reuse 0.017 brightness 1.0 adc_bailout 0.01/2 #debug "\nRadiosity_Normal in use\n" #break // Typical values, but with 2 bounces. Starts slow, but picks up steam! #case (Radiosity_2Bounce) pretrace_start 0.08 pretrace_end 0.01 count 200 nearest_count 7 error_bound 0.3 recursion_limit 2 low_error_factor 0.75 gray_threshold 0 minimum_reuse 0.017 brightness 1.0 adc_bailout 0.01/2 #debug "\nRadiosity_2Bounce in use\n" #break // For patient quality freaks with fast computers about to leave on vacation #case (Radiosity_Final) pretrace_start 0.08 pretrace_end 0.004 count 800 nearest_count 9 error_bound 0.2 recursion_limit 1 low_error_factor 0.7 gray_threshold 0 minimum_reuse 0.01 brightness 1.0 adc_bailout 0.01/2 #debug "\nRadiosity_Final in use\n" #break // For outdoor scenes without light sources // Low quality being reasonably fast in most scenes #case (Radiosity_OutdoorLQ) pretrace_start 0.08 pretrace_end 0.01 count 80 nearest_count 4 error_bound 0.6 recursion_limit 1 // increase this in scenes with complicated geometries when necessary low_error_factor 0.8 gray_threshold 0 minimum_reuse 0.015 brightness 1.0 adc_bailout 0.01/2 #debug "\nRadiosity_OutdoorLQ in use\n" #break // For outdoor scenes without light sources // High quality - can be very slow #case (Radiosity_OutdoorHQ) pretrace_start 0.08 pretrace_end 0.004 count 500 nearest_count 7 error_bound 0.1 recursion_limit 1 // increase this in scenes with complicated geometries when necessary low_error_factor 0.5 gray_threshold 0 minimum_reuse 0.015 brightness 1.0 adc_bailout 0.01/2 #debug "\nRadiosity_OutdoorHQ in use\n" #break // Settings for outdoor scenes with (Sun)light // for getting a general skylight effect #case (Radiosity_OutdoorLight) pretrace_start 0.08 pretrace_end 0.01 count 50 nearest_count 4 error_bound 0.8 recursion_limit 1 low_error_factor 0.9 gray_threshold 0 minimum_reuse 0.015 brightness 1.0 adc_bailout 0.01/2 #debug "\nRadiosity_OutdoorLight in use\n" #break // quite fast settings for indoor radiosity // good values much depend on actual situation // these settings can be taken as a basis #case (Radiosity_IndoorLQ) pretrace_start 0.08 pretrace_end 0.01 count 80 nearest_count 5 error_bound 0.7 recursion_limit 2 low_error_factor 0.8 gray_threshold 0 minimum_reuse 0.015 brightness 1.0 adc_bailout 0.01/2 #debug "\nRadiosity_IndoorLQ in use\n" #break // slower settings for indoor radiosity // good values much depend on actual situation // these settings can be taken as a basis #case (Radiosity_IndoorHQ) pretrace_start 0.08 pretrace_end 0.004 count 400 nearest_count 8 error_bound 0.15 recursion_limit 3 low_error_factor 0.5 gray_threshold 0 minimum_reuse 0.015 brightness 1.0 adc_bailout 0.01/2 #debug "\nRadiosity_IndoorHQ in use\n" #break #end normal Normal media Media #end #version Rad_Def2_Inc_Temp; #end // Persistence of Vision Ray Tracer version 3.5 Include File // File: rand.inc // Last updated: 2001.8.9 // Description: some predefined random number generators, and // macros for working with random numbers. // Random number distribution macros contributed by Ingo Janssen. #ifndef(RAND_INC_TEMP) #declare RAND_INC_TEMP = version; #version 3.5; #ifdef(View_POV_Include_Stack) #debug "including rand.inc\n" #end #include "consts.inc" //-------------------- //Random number generators: //-------------------- #declare RdmA = seed(574647);// Random stream A #declare RdmB = seed(324879);// Random stream B #declare RdmC = seed(296735);// Random stream C #declare RdmD = seed(978452);// Random stream D //-------------------- //Random number macros: //-------------------- //Probability, returns true or false. //P is probability of returning true, RS is a random number stream. #macro Prob(P, RS) (rand(RS) < P) #end ///////////////////////////////////////// // Continuous Symmetric Distributions // //////////////////////////////////////// #declare Gauss_Next = false; // Cauchy distribution // Input: Mu=mean, Sigma= standard deviation and a random stream #macro Rand_Cauchy(Mu, Sigma, Stream) (Sigma*tan(pi*(rand(Stream)-0.5))+Mu) #end // Student's-t distribution // Input: N= degrees of freedom and a random stream. #macro Rand_Student(N, Stream) (Rand_Gauss(0,1,Stream)/sqrt(Rand_Chi_Square(N,Stream)/N)) #end // Normal distribution // Input: Mu=mean, Sigma= standard deviation and a random stream // Output: a random value in the range of the normal distribution // defined by the standard deviation, around the mean. #macro Rand_Normal(Mu, Sigma, Stream) #local Cn=4*exp(-0.5)/sqrt(2); #local Loop=true; #while (Loop) #local R=rand(Stream); #local V=Cn*(rand(Stream)-0.5)/R; #local VV=V*V/4; #if (VV<=-ln(R)) #local Loop=false; #end #end (Mu+(V*Sigma)) #end // Gaussian distribution // like Rand_Normal, but a bit faster #macro Rand_Gauss(Mu, Sigma, Stream) #local Zgauss=Gauss_Next; #declare Gauss_Next=false; #if (!Zgauss) #local R1=rand(Stream)*2*pi; #local R2=sqrt(-2*ln(1-rand(Stream))); #local Zgauss=cos(R1)*R2; #declare Gauss_Next=sin(R1)*R2; #end (Mu+(Zgauss*Sigma)) #end ///////////////////////////////////// // Continuous Skewed Distributions // ///////////////////////////////////// // Input: spline and a random stream. // Output: a random value in the range 0 - 1. // The probability of the value is controled // by the spline. The splines clock_value is // the output value and the .y value its chanche. #macro Rand_Spline(Spl, Stream) #local I=1; #while (I) #declare cVal=rand(Stream); #if (Spl(cVal).y>=rand(Stream)) #local I=0; (cVal) #end #end #end // Gamma distribution // Input: Alpha= shape parameter >0, Beta= scale parameter >0 and a random stream. #macro Rand_Gamma(Alpha, Beta, Stream) #if(Alpha<=0 | Beta<=0) #error "Alpha and Beta should be bigger than 0" #end #local Ainv=sqrt(2*Alpha-1); #local BBB=Alpha-ln(4); #local CCC=Alpha+Ainv; #if (Alpha>1) #local Loop = true; #while (Loop) #local R1=rand(Stream); #local R2=rand(Stream); #local V=ln(R1/(1-R1))/Ainv; #local X=Alpha*exp(V); #local Z=R1*R1*R2; #local R=BBB+CCC*V-X; #local RZ=R+(1+ln(4.5))-4.5*Z; #if (RZ>=0 | R>=ln(Z)) #local Loop=false; #local RETURN=X; #end #end #end #if (Alpha=1) #local R=rand(Stream); #while (R<=1e-7) #local R=rand(Stream); #end #local RETURN=-ln(R); #end #if (Alpha>0 & Alpha<1) #local Loop=true; #while (Loop) #local R=rand(Stream); #local B=(e+Alpha)/e; #local P=B*R; #if (P<=1) #local X=pow(P, (1/Alpha)); #else #local X=-ln((B-P)/Alpha); #end #local R1=rand(Stream); #if(!( ((P<=1) & (R1>exp(-X))) | ((P>1) & (R1>pow(X,Alpha-1))) )) #local RETURN=X; #local Loop=false; #end #end #end #local Return=Beta*RETURN; Return #end // Beta variate // Input: Alpha= shape Gamma1, Beta= shape Gamma2 and a random stream. #macro Rand_Beta(Alpha, Beta, Stream) #if(Alpha<=0 | Beta<=0) #error "Alpha and Beta should be bigger than 0" #end #local Gamma1=Rand_Gamma(Alpha,1,Stream); #if (Gamma1=0) #local Return=0; #else #local Return=(Gamma1/(Gamma1+Rand_Gamma(Beta,1,Stream))); #end (Return) #end // Chi Square random variate // Input: N= degrees of freedom int() and a random stream #macro Rand_Chi_Square(N, Stream) (Rand_Gamma(2,0.5*int(N),Stream)) #end // F-Distribution // Input: N, M degrees of freedom and a random stream. #macro Rand_F_Dist(N, M, Stream) #local C1=Rand_Chi_Square(M,Stream); #local C2=Rand_Chi_Square(N,Stream); #local Return=(M*C1)/(N*C2); (Return) #end //Triangular distribution //Input: Min, Max, Mode (Min < Mode < Max) and a random stream #macro Rand_Triangle(Min, Max, Mode, Stream) #local Right=Max-Mode; #local Left=Mode-Min; #local Range=Max-Min; #local R=rand(Stream); #if(R<=Left/Range) #local Return= Min+sqrt(Left*Range*R); #else #local Return= Max-sqrt(Right*Range*(1-R)); #end (Return) #end // Erlang variate // Input: Mu= mean >=0, K= number of exponential samples and a random stream. #macro Rand_Erlang(Mu, K, Stream) #local Prod=1; #local I=0; #while(I=rand(Stream)?true:false) #end // Binomial distribution // Input: N= number of trials, P= probability [0-1] and a random stream. #macro Rand_Binomial(N, P, Stream) #local Count=0; #local N=int(N); #local I=0; #while (ICut) #local R=R*rand(Stream); #local N=N+1; #if(N>Maxtimes) #local R=Cut; #end #end (N) #end //signed random number, range [-1, 1] #macro SRand(RS) (rand(RS)*2 - 1) #end //random number in specified range [Min, Max] #macro RRand(Min, Max, RS) (rand(RS)*(Max-Min) + Min) #end //a random point in a box from < 0, 0, 0> to < 1, 1, 1> #macro VRand(RS) < rand(RS), rand(RS), rand(RS)> #end //a random point in a box from Mn to Mx #macro VRand_In_Box(Mn, Mx, RS) (< rand(RS), rand(RS), rand(RS)>*(Mx-Mn) + Mn) #end //a random point in a unit-radius sphere centered on the origin //Thanks to Ingo for this macro, which is faster than the original VRand3() #macro VRand_In_Sphere(Stream) #local R = pow(rand(Stream),1/3); #local Theta = 2*pi*rand(Stream); #local Phi = acos(2*rand(Stream)-1); (R*) #end //a random point on a unit-radius sphere centered on the origin //Author: Ingo #macro VRand_On_Sphere(Stream) #local Theta = 2*pi*rand(Stream); #local Phi = acos(2*rand(Stream)-1); () #end //a random point inside an arbitrary object //Warning: can be quite slow if the object occupies a small //portion of the volume of it's bounding box! //Also, will not work on objects without a definite "inside". #macro VRand_In_Obj(Obj, RS) #local Mn = min_extent(Obj); #local Mx = max_extent(Obj); #local Pt = VRand_In_Box(Mn, Mx, RS); #local J = 0; #while(inside(Obj, Pt) = 0 & J < 1000) #local Pt = VRand_In_Box(Mn, Mx, RS); #local J = J + 1; #end (Pt) #end #version RAND_INC_TEMP; #end//rand.inc #declare RedGranite_Inc_Temp=version; /* Persistence of Vision Raytracer Version 3.1 Red Granite color_map */ #declare M_RedGranite = color_map { [0.000000 rgb <0.439216, 0.407843, 0.454902>] [0.003922 rgb <0.454902, 0.439216, 0.470588>] [0.007843 rgb <0.470588, 0.360784, 0.376471>] [0.011765 rgb <0.470588, 0.454902, 0.486275>] [0.015686 rgb <0.486275, 0.376471, 0.360784>] [0.019608 rgb <0.486275, 0.376471, 0.407843>] [0.023529 rgb <0.486275, 0.423529, 0.439216>] [0.027451 rgb <0.486275, 0.470588, 0.486275>] [0.031373 rgb <0.501961, 0.345098, 0.360784>] [0.035294 rgb <0.501961, 0.407843, 0.439216>] [0.039216 rgb <0.501961, 0.423529, 0.407843>] [0.043137 rgb <0.501961, 0.439216, 0.470588>] [0.047059 rgb <0.501961, 0.470588, 0.501961>] [0.050980 rgb <0.517647, 0.360784, 0.407843>] [0.054902 rgb <0.517647, 0.376471, 0.376471>] [0.058824 rgb <0.517647, 0.407843, 0.423529>] [0.062745 rgb <0.517647, 0.454902, 0.454902>] [0.066667 rgb <0.517647, 0.486275, 0.501961>] [0.070588 rgb <0.517647, 0.501961, 0.533333>] [0.074510 rgb <0.517647, 0.533333, 0.533333>] [0.078431 rgb <0.533333, 0.360784, 0.360784>] [0.082353 rgb <0.533333, 0.392157, 0.392157>] [0.086275 rgb <0.533333, 0.407843, 0.392157>] [0.090196 rgb <0.533333, 0.423529, 0.454902>] [0.094118 rgb <0.533333, 0.454902, 0.486275>] [0.098039 rgb <0.533333, 0.517647, 0.549020>] [0.101961 rgb <0.533333, 0.533333, 0.596078>] [0.105882 rgb <0.549020, 0.345098, 0.298039>] [0.109804 rgb <0.549020, 0.376471, 0.392157>] [0.113725 rgb <0.549020, 0.407843, 0.439216>] [0.117647 rgb <0.549020, 0.423529, 0.423529>] [0.121569 rgb <0.549020, 0.454902, 0.454902>] [0.125490 rgb <0.549020, 0.470588, 0.470588>] [0.129412 rgb <0.549020, 0.470588, 0.501961>] [0.133333 rgb <0.549020, 0.501961, 0.517647>] [0.137255 rgb <0.549020, 0.533333, 0.549020>] [0.141176 rgb <0.549020, 0.549020, 0.580392>] [0.145098 rgb <0.564706, 0.376471, 0.360784>] [0.149020 rgb <0.564706, 0.392157, 0.376471>] [0.152941 rgb <0.564706, 0.392157, 0.407843>] [0.156863 rgb <0.564706, 0.439216, 0.470588>] [0.160784 rgb <0.564706, 0.470588, 0.486275>] [0.164706 rgb <0.564706, 0.501961, 0.533333>] [0.168627 rgb <0.564706, 0.533333, 0.580392>] [0.172549 rgb <0.564706, 0.564706, 0.611765>] [0.176471 rgb <0.564706, 0.580392, 0.596078>] [0.180392 rgb <0.580392, 0.345098, 0.313726>] [0.184314 rgb <0.580392, 0.360784, 0.376471>] [0.188235 rgb <0.580392, 0.376471, 0.345098>] [0.192157 rgb <0.580392, 0.407843, 0.407843>] [0.196078 rgb <0.580392, 0.423529, 0.454902>] [0.200000 rgb <0.580392, 0.454902, 0.439216>] [0.203922 rgb <0.580392, 0.454902, 0.486275>] [0.207843 rgb <0.580392, 0.486275, 0.486275>] [0.211765 rgb <0.580392, 0.517647, 0.533333>] [0.215686 rgb <0.580392, 0.564706, 0.564706>] [0.219608 rgb <0.580392, 0.580392, 0.627451>] [0.223529 rgb <0.580392, 0.580392, 0.674510>] [0.227451 rgb <0.580392, 0.596078, 0.627451>] [0.231373 rgb <0.596078, 0.392157, 0.376471>] [0.235294 rgb <0.596078, 0.407843, 0.376471>] [0.239216 rgb <0.596078, 0.407843, 0.423529>] [0.243137 rgb <0.596078, 0.423529, 0.454902>] [0.247059 rgb <0.596078, 0.439216, 0.423529>] [0.250980 rgb <0.596078, 0.470588, 0.470588>] [0.254902 rgb <0.596078, 0.486275, 0.470588>] [0.258824 rgb <0.596078, 0.486275, 0.517647>] [0.262745 rgb <0.596078, 0.517647, 0.549020>] [0.266667 rgb <0.596078, 0.549020, 0.596078>] [0.270588 rgb <0.596078, 0.580392, 0.596078>] [0.274510 rgb <0.596078, 0.596078, 0.643137>] [0.278431 rgb <0.611765, 0.360784, 0.313726>] [0.282353 rgb <0.611765, 0.392157, 0.360784>] [0.286275 rgb <0.611765, 0.423529, 0.392157>] [0.290196 rgb <0.611765, 0.454902, 0.454902>] [0.294118 rgb <0.611765, 0.470588, 0.501961>] [0.298039 rgb <0.611765, 0.501961, 0.533333>] [0.301961 rgb <0.611765, 0.517647, 0.501961>] [0.305882 rgb <0.611765, 0.533333, 0.549020>] [0.309804 rgb <0.611765, 0.564706, 0.580392>] [0.313726 rgb <0.611765, 0.564706, 0.627451>] [0.317647 rgb <0.611765, 0.611765, 0.627451>] [0.321569 rgb <0.611765, 0.611765, 0.705882>] [0.325490 rgb <0.611765, 0.643137, 0.643137>] [0.329412 rgb <0.611765, 0.658824, 0.737255>] [0.333333 rgb <0.627451, 0.360784, 0.345098>] [0.337255 rgb <0.627451, 0.376471, 0.392157>] [0.341176 rgb <0.627451, 0.407843, 0.392157>] [0.345098 rgb <0.627451, 0.439216, 0.423529>] [0.349020 rgb <0.627451, 0.439216, 0.454902>] [0.352941 rgb <0.627451, 0.454902, 0.470588>] [0.356863 rgb <0.627451, 0.470588, 0.439216>] [0.360784 rgb <0.627451, 0.486275, 0.486275>] [0.364706 rgb <0.627451, 0.533333, 0.564706>] [0.368627 rgb <0.627451, 0.549020, 0.533333>] [0.372549 rgb <0.627451, 0.564706, 0.564706>] [0.376471 rgb <0.627451, 0.580392, 0.611765>] [0.380392 rgb <0.627451, 0.596078, 0.643137>] [0.384314 rgb <0.627451, 0.611765, 0.611765>] [0.388235 rgb <0.627451, 0.627451, 0.674510>] [0.392157 rgb <0.627451, 0.643137, 0.674510>] [0.396078 rgb <0.643137, 0.345098, 0.313726>] [0.400000 rgb <0.643137, 0.392157, 0.345098>] [0.403922 rgb <0.643137, 0.407843, 0.439216>] [0.407843 rgb <0.643137, 0.423529, 0.376471>] [0.411765 rgb <0.643137, 0.454902, 0.407843>] [0.415686 rgb <0.643137, 0.470588, 0.470588>] [0.419608 rgb <0.643137, 0.470588, 0.501961>] [0.423529 rgb <0.643137, 0.501961, 0.470588>] [0.427451 rgb <0.643137, 0.501961, 0.501961>] [0.431373 rgb <0.643137, 0.517647, 0.486275>] [0.435294 rgb <0.643137, 0.533333, 0.517647>] [0.439216 rgb <0.643137, 0.549020, 0.549020>] [0.443137 rgb <0.643137, 0.549020, 0.596078>] [0.447059 rgb <0.643137, 0.580392, 0.596078>] [0.450980 rgb <0.643137, 0.627451, 0.643137>] [0.454902 rgb <0.643137, 0.643137, 0.690196>] [0.458824 rgb <0.658824, 0.423529, 0.423529>] [0.462745 rgb <0.658824, 0.454902, 0.439216>] [0.466667 rgb <0.658824, 0.517647, 0.549020>] [0.470588 rgb <0.658824, 0.517647, 0.580392>] [0.474510 rgb <0.658824, 0.549020, 0.533333>] [0.478431 rgb <0.658824, 0.549020, 0.564706>] [0.482353 rgb <0.658824, 0.580392, 0.611765>] [0.486275 rgb <0.658824, 0.611765, 0.611765>] [0.490196 rgb <0.658824, 0.611765, 0.658824>] [0.494118 rgb <0.658824, 0.658824, 0.658824>] [0.498039 rgb <0.658824, 0.674510, 0.705882>] [0.501961 rgb <0.674510, 0.392157, 0.407843>] [0.505882 rgb <0.674510, 0.407843, 0.360784>] [0.509804 rgb <0.674510, 0.454902, 0.392157>] [0.513726 rgb <0.674510, 0.470588, 0.439216>] [0.517647 rgb <0.674510, 0.470588, 0.486275>] [0.521569 rgb <0.674510, 0.501961, 0.517647>] [0.525490 rgb <0.674510, 0.517647, 0.486275>] [0.529412 rgb <0.674510, 0.580392, 0.564706>] [0.533333 rgb <0.674510, 0.627451, 0.674510>] [0.537255 rgb <0.674510, 0.674510, 0.690196>] [0.541176 rgb <0.674510, 0.690196, 0.737255>] [0.545098 rgb <0.690196, 0.533333, 0.533333>] [0.549020 rgb <0.690196, 0.549020, 0.564706>] [0.552941 rgb <0.690196, 0.564706, 0.596078>] [0.556863 rgb <0.690196, 0.596078, 0.596078>] [0.560784 rgb <0.690196, 0.596078, 0.627451>] [0.564706 rgb <0.690196, 0.627451, 0.627451>] [0.568627 rgb <0.690196, 0.658824, 0.705882>] [0.572549 rgb <0.690196, 0.690196, 0.643137>] [0.576471 rgb <0.690196, 0.705882, 0.752941>] [0.580392 rgb <0.705882, 0.454902, 0.439216>] [0.584314 rgb <0.705882, 0.486275, 0.470588>] [0.588235 rgb <0.705882, 0.517647, 0.486275>] [0.592157 rgb <0.705882, 0.564706, 0.533333>] [0.596078 rgb <0.705882, 0.627451, 0.658824>] [0.600000 rgb <0.705882, 0.658824, 0.658824>] [0.603922 rgb <0.705882, 0.674510, 0.721569>] [0.607843 rgb <0.721569, 0.486275, 0.439216>] [0.611765 rgb <0.721569, 0.517647, 0.533333>] [0.615686 rgb <0.721569, 0.533333, 0.517647>] [0.619608 rgb <0.721569, 0.580392, 0.580392>] [0.623529 rgb <0.721569, 0.596078, 0.611765>] [0.627451 rgb <0.721569, 0.611765, 0.580392>] [0.631373 rgb <0.721569, 0.643137, 0.611765>] [0.635294 rgb <0.721569, 0.643137, 0.674510>] [0.639216 rgb <0.721569, 0.674510, 0.643137>] [0.643137 rgb <0.721569, 0.705882, 0.737255>] [0.647059 rgb <0.721569, 0.737255, 0.768627>] [0.650980 rgb <0.737255, 0.517647, 0.470588>] [0.654902 rgb <0.737255, 0.533333, 0.501961>] [0.658824 rgb <0.737255, 0.564706, 0.549020>] [0.662745 rgb <0.737255, 0.643137, 0.643137>] [0.666667 rgb <0.737255, 0.658824, 0.705882>] [0.670588 rgb <0.737255, 0.690196, 0.674510>] [0.674510 rgb <0.737255, 0.721569, 0.721569>] [0.678431 rgb <0.737255, 0.752941, 0.800000>] [0.682353 rgb <0.752941, 0.564706, 0.580392>] [0.686275 rgb <0.752941, 0.596078, 0.564706>] [0.690196 rgb <0.752941, 0.611765, 0.611765>] [0.694118 rgb <0.752941, 0.643137, 0.674510>] [0.698039 rgb <0.752941, 0.690196, 0.737255>] [0.701961 rgb <0.752941, 0.721569, 0.752941>] [0.705882 rgb <0.752941, 0.737255, 0.737255>] [0.709804 rgb <0.752941, 0.768627, 0.831373>] [0.713726 rgb <0.768627, 0.549020, 0.533333>] [0.717647 rgb <0.768627, 0.596078, 0.611765>] [0.721569 rgb <0.768627, 0.627451, 0.643137>] [0.725490 rgb <0.768627, 0.674510, 0.690196>] [0.729412 rgb <0.768627, 0.721569, 0.705882>] [0.733333 rgb <0.768627, 0.737255, 0.784314>] [0.737255 rgb <0.768627, 0.800000, 0.847059>] [0.741176 rgb <0.784314, 0.564706, 0.549020>] [0.745098 rgb <0.784314, 0.580392, 0.533333>] [0.749020 rgb <0.784314, 0.611765, 0.580392>] [0.752941 rgb <0.784314, 0.643137, 0.611765>] [0.756863 rgb <0.784314, 0.674510, 0.658824>] [0.760784 rgb <0.784314, 0.705882, 0.690196>] [0.764706 rgb <0.784314, 0.705882, 0.737255>] [0.768627 rgb <0.784314, 0.752941, 0.768627>] [0.772549 rgb <0.784314, 0.768627, 0.800000>] [0.776471 rgb <0.800000, 0.658824, 0.674510>] [0.780392 rgb <0.800000, 0.690196, 0.721569>] [0.784314 rgb <0.800000, 0.721569, 0.721569>] [0.788235 rgb <0.800000, 0.721569, 0.768627>] [0.792157 rgb <0.800000, 0.768627, 0.784314>] [0.796078 rgb <0.800000, 0.784314, 0.831373>] [0.800000 rgb <0.815686, 0.596078, 0.564706>] [0.803922 rgb <0.815686, 0.611765, 0.596078>] [0.807843 rgb <0.815686, 0.643137, 0.643137>] [0.811765 rgb <0.815686, 0.690196, 0.674510>] [0.815686 rgb <0.815686, 0.737255, 0.705882>] [0.819608 rgb <0.815686, 0.752941, 0.800000>] [0.823529 rgb <0.815686, 0.800000, 0.847059>] [0.827451 rgb <0.831373, 0.643137, 0.627451>] [0.831373 rgb <0.831373, 0.674510, 0.690196>] [0.835294 rgb <0.831373, 0.690196, 0.737255>] [0.839216 rgb <0.831373, 0.705882, 0.690196>] [0.843137 rgb <0.831373, 0.705882, 0.721569>] [0.847059 rgb <0.831373, 0.737255, 0.752941>] [0.850980 rgb <0.831373, 0.768627, 0.768627>] [0.854902 rgb <0.831373, 0.768627, 0.815686>] [0.858824 rgb <0.831373, 0.847059, 0.878431>] [0.862745 rgb <0.847059, 0.674510, 0.658824>] [0.866667 rgb <0.847059, 0.737255, 0.737255>] [0.870588 rgb <0.847059, 0.784314, 0.847059>] [0.874510 rgb <0.847059, 0.800000, 0.815686>] [0.878431 rgb <0.847059, 0.815686, 0.847059>] [0.882353 rgb <0.847059, 0.831373, 0.878431>] [0.886275 rgb <0.847059, 0.862745, 0.909804>] [0.890196 rgb <0.862745, 0.690196, 0.690196>] [0.894118 rgb <0.862745, 0.721569, 0.737255>] [0.898039 rgb <0.862745, 0.737255, 0.705882>] [0.901961 rgb <0.862745, 0.784314, 0.737255>] [0.905882 rgb <0.862745, 0.831373, 0.800000>] [0.909804 rgb <0.878431, 0.705882, 0.690196>] [0.913725 rgb <0.878431, 0.752941, 0.768627>] [0.917647 rgb <0.878431, 0.784314, 0.784314>] [0.921569 rgb <0.878431, 0.815686, 0.831373>] [0.925490 rgb <0.878431, 0.831373, 0.862745>] [0.929412 rgb <0.878431, 0.847059, 0.894118>] [0.933333 rgb <0.878431, 0.878431, 0.941176>] [0.937255 rgb <0.894118, 0.752941, 0.721569>] [0.941176 rgb <0.894118, 0.831373, 0.800000>] [0.945098 rgb <0.894118, 0.862745, 0.878431>] [0.949020 rgb <0.894118, 0.862745, 0.909804>] [0.952941 rgb <0.894118, 0.909804, 0.956863>] [0.956863 rgb <0.909804, 0.705882, 0.721569>] [0.960784 rgb <0.909804, 0.768627, 0.752941>] [0.964706 rgb <0.909804, 0.800000, 0.800000>] [0.968627 rgb <0.909804, 0.831373, 0.831373>] [0.972549 rgb <0.909804, 0.941176, 0.972549>] [0.976471 rgb <0.925490, 0.784314, 0.784314>] [0.980392 rgb <0.925490, 0.878431, 0.909804>] [0.984314 rgb <0.925490, 0.894118, 0.941176>] [0.988235 rgb <0.941176, 0.925490, 0.972549>] [0.992157 rgb <0.941176, 0.956863, 0.988235>] [0.996078 rgb <0.956863, 0.862745, 0.831373>] } #version RedGranite_Inc_Temp; // Persistence of Vision Raytracer Version 3.5 // Screen Include File // Created by Christoph Hormann, Chris Huff and Rune S. Johansen. // Screen.inc will enable you to place objects and textures right in front // of the camera. One use of this is to place your signature or a logo in // the corner of the image. // You can only use screen.inc with the perspective camera. Screen.inc // will automatically create the camera definition for you when it is // included. // Note that even though objects aligned using screen.inc follow the // camera, they are still part of the scene. That means that they will be // affected by perspective, lighting, the surroundings etc. // For instructions of use, look in the POV-Ray manual, and for an example // of use, see screen.pov. #ifndef(Screen_Inc_Temp) #declare Screen_Inc_Temp = version; #version 3.5; #ifdef(View_POV_Include_Stack) #debug "including screen.inc\n" #end #macro Update_Camera() #ifndef (Camera_Aspect_Ratio) #declare Camera_Aspect_Ratio = image_width/image_height; #end #ifndef (Camera_Location) #declare Camera_Location = <0,0,0>; #end #ifndef (Camera_Look_At) #declare Camera_Look_At = z; #end #ifndef (Camera_Sky) #declare Camera_Sky = y; #end #ifndef (Camera_Zoom) #declare Camera_Zoom = 1; #end #declare CamL=Camera_Location; // wherever you're putting it #declare CamD=vnormalize(Camera_Look_At-CamL); // direction of camera view #declare CamR=vnormalize(vcross(Camera_Sky,CamD)); // to the right #declare CamU=vnormalize(vcross(CamD,CamR)); // camera up #declare Camera_Transform = transform { matrix < CamR.x, CamR.y, CamR.z, CamU.x, CamU.y, CamU.z, CamD.x, CamD.y, CamD.z, CamL.x, CamL.y, CamL.z > } camera { direction CamD*Camera_Zoom right CamR*Camera_Aspect_Ratio up CamU sky Camera_Sky location CamL } #end Update_Camera() #macro Set_Camera_Location(Loc) #declare Camera_Location = Loc; Update_Camera() #end #macro Set_Camera_Look_At(LookAt) #declare Camera_Look_At = LookAt; Update_Camera() #end #macro Set_Camera_Aspect_Ratio(Aspect) #declare Camera_Aspect_Ratio = Aspect; Update_Camera() #end #macro Set_Camera_Aspect(Width,Height) #declare Camera_Aspect_Ratio = Width/Height; Update_Camera() #end #macro Set_Camera_Sky(Sky) #declare Camera_Sky = Sky; Update_Camera() #end #macro Set_Camera_Zoom(Zoom) #declare Camera_Zoom = Zoom; Update_Camera() #end #macro Set_Camera_Angle(Angle) #declare Camera_Zoom = 0.5/tan(radians(Angle/2))*Camera_Aspect_Ratio; Update_Camera() #end #macro Set_Camera(Location, LookAt, Angle) #declare Camera_Location = Location; #declare Camera_Look_At = LookAt; Set_Camera_Angle(Angle) Update_Camera() #end #macro Reset_Camera() #undef Camera_Location #undef Camera_Aspect_Ratio #undef Camera_Location #undef Camera_Look_At #undef Camera_Sky #undef Camera_Zoom Update_Camera() #end #macro Screen_Object (Object, Position, Spacing, Confine, Scaling) #local Obj_Max = max_extent(Object); #local Obj_Min = min_extent(Object); #local Obj_Cen = (Obj_Max+Obj_Min)/2; #local Obj_Dim = (Obj_Max-Obj_Min)/2; #local Pos = (Position-0.5)*2; #local Pos = ( + +( -Obj_Cen -Pos*(Obj_Dim+Spacing) ) * Confine ); object { Object no_shadow // shouldn't cast shadows in the scene no_reflection // shouldn't be reflected in scene elements translate Pos scale Scaling transform {Camera_Transform} } #end #macro Screen_Plane (Texture, Scaling, BLCorner, TRCorner) box { <-0.000001,-0.000001,0>, <+1.000001,+1.000001,0> texture {Texture} scale TRCorner*<1,1,0>-BLCorner*<1,1,0>+z translate BLCorner*<1,1,0>+<-0.5,-0.5,0> scale no_shadow // shouldn't cast shadows in the scene no_reflection // shouldn't be reflected in scene elements hollow on // for media/fog translate Camera_Zoom*z scale Scaling transform {Camera_Transform} } #end #version Screen_Inc_Temp; #end // Persistence of Vision Ray Tracer version 3.5 Include File // File: shapes.inc // Last updated: 2001.8.13 // Description: This file contains macros for working with objects, as well // as macros for creating special objects, such as bevelled text, // height fields, and rounded shapes. #ifndef(SHAPES_INC_TEMP) #declare SHAPES_INC_TEMP = version; #version 3.5; #ifdef(View_POV_Include_Stack) #debug "including shapes.inc\n" #end #include "shapes_old.inc" #include "consts.inc" #include "transforms.inc" #include "strings.inc" #include "math.inc" // These macros are just interfaces to the trace() function. // They return values through their parameters: // If an intersection is found, they return true and set // OPt to the intersection point, and ONorm to the normal. // Otherwise they return false, and do not modify OPt or ONorm. #macro Isect(Pt, Dir, Obj, OPt) #local Norm = <0,0,0>; #local IPt = trace(Obj, Pt, Dir, Norm); #if (vlength(Norm) > 0) #declare OPt = IPt; #local Return=true; #else #local Return=false; #end (Return) #end #macro IsectN(Pt, Dir, Obj, OPt, ONorm) #local Norm = <0,0,0>; #local IPt = trace(Obj, Pt, Dir, Norm); #if (vlength(Norm) > 0) #declare OPt = IPt; #declare ONorm = Norm; #local Return=true; #else #local Return=false; #end (Return) #end // A shortcut for getting both min and max extents of an object #macro Extents(Obj, Min, Max) #declare Min = min_extent(Obj); #declare Max = max_extent(Obj); #end // shortcuts for using the CenterTrans and AlignTrans // macros with objects. #macro Center_Object(Object, Axis) object {Object Center_Trans(Object, Axis)} #end #macro Align_Object(Object, Axis, Pt) object {Object Align_Trans(Object, Axis, Pt)} #end // A simple beveled text macro. The parameters are: // Font: the name of the font file. // String: the text string the text object is composed of. // Cuts: the number of times excess material is cut off, to form the bevel. // More cuts will give smoother results, but take longer to render. // BevelAng: the angle of the bevel. // BevelDepth: the depth of the bevelled portion of the text. // Depth: the total depth of the text object. // Offset: the offset value for the text object. Since the front faces of each // letter need to be in the same plane, z values are ignored. #macro Bevelled_Text(Font, String, Cuts, BevelAng, BevelDepth, Depth, Offset, UseMerge) #local BBox = text {ttf Font, String Depth, Offset*(x+y)} #if(UseMerge) merge { #else union { #end text {ttf Font, String Depth-BevelDepth, Offset*(x+y)} intersection { #local J=0; #while(J/CA) } #local J=J+1; #end } translate z*BevelDepth bounded_by {box {min_extent(BBox), max_extent(BBox)}} } #end // Constants used for the text macros #declare Align_Left = 1; #declare Align_Right = 2; #declare Align_Center = 3; /* Text_Space( Font, String, Size, Spacing ) Computes the width of a text string, including "white space". It returns the advance widths of all n letters. Text_Space gives the space a text or a glyph occupies in regard to its surroundings. Font: The font to use (see the documentation for the text object) String: The text for which we want to know the width Size: The size to which the text should be scaled Spacing: The amount of space to add between the letters. */ #macro Text_Space(Font, String, Size, Spacing) #local TO = text {ttf Font concat("|",String,"|") 1 Spacing*x scale } #local SO = text {ttf Font "||" 1 Spacing*x scale } ((max_extent(TO).x-min_extent(TO).x)-(max_extent(SO).x-min_extent(SO).x)) #end /* Text_Width( Font, String, Size, Spacing ) Computes the width of a text string. It returns the advance widths of the first n-1 letters, plus the glyph width of the last letter. Text_Width gives the "fysical" width of the text and if you use only one letter the "fysical" width of one glyph. Font: The font to use (see the documentation for the text object) String: The text for which we want to know the width Size: The size to which the text should be scaled Spacing: The amount of space to add between the letters. */ #macro Text_Width(Font, String, Size, Spacing) #local TO = text {ttf Font String 1 Spacing*x scale } (max_extent(TO).x-min_extent(TO).x) #end // Circle_Text author: Ron Parker /* Circle_Text( Font, Text, Size, Spacing, Thickness, Radius, Inverted, Justification, Angle ) Creates a text object with the bottom (or top) of the character cells aligned with all or part of a circle. This macro should be used inside an object{...} block. Font: The font to use (see the documentation for the text object) Text: The text string to be created Size: The height of the text string, as you would use to scale a standard text object Spacing: The amount of space to add between the letters. Thickness: The thickness of the letters (see the documentation for the text object) Radius: The radius of the circle along which the letters are aligned Inverted: If this parameter is nonzero, the tops of the letters will point toward the center of the circle. Otherwise, the bottoms of the letters will do so. Justification: One of the constants Align_Left, Align_Right, or Align_Center Angle: The point on the circle from which rendering will begin. The +x direction is 0 and the +y direction is 90 (i.e. the angle increases anti-clockwise. */ #macro Circle_Text(F, T, S, Sp, Th, R, I, J, A) #local FW = Text_Width(F, T, S, Sp); #local TO = text {ttf F T 1 0 scale} #local TH = max_extent(TO).y; #local C = array[strlen(T)] #if(FW > 2*pi*R) #error concat("\n\n**** Text string \"", T, "\" is too long for a circle of the specified radius.\n\n\n") #end #local AW = -FW*180/pi/R; #local SA = A; #local EA = A + AW; #if(((J = Align_Right) & !I)|((J = Align_Left) & I)) #local SA = A - AW; #local EA = A; #else #if(J = Align_Center) #local SA = A - AW/2; #local EA = A + AW/2; #end #end #local CI = 1; #while(CI <= strlen(T)) #local OE = Text_Width(F, substr(T,CI,1), S, Sp); #local LW = Text_Width(F, substr(T,1,CI), S, Sp) - OE; #local LA = SA + AW*LW/FW + OE/2/FW*AW; #if(I) #local LA = EA - (LA - SA); #end #local TO = text {ttf F substr(T, CI, 1) Th 0 scale} #if(I) #local C[CI-1] = object {TO rotate 180*z translate rotate -90*z translate R*x rotate LA*z } #else #local C[CI-1] = object {TO translate -OE/2*x rotate -90*z translate R*x rotate LA*z } #end #local CI = CI + 1; #end // Create the final object, a union of individual text object letters. union { #local CI=0; #while(CI < strlen(T)) object {C[CI]} #local CI = CI + 1; #end } #end #macro Wedge(Angle) #local A = clamp(Angle, 0, 360); #if(A < 180) difference { plane {-x, 0} plane {-x, 0 rotate y*A} } #else #if(A = 180) plane {-x, 0} #else intersection { plane {x, 0} plane {-x, 0 rotate y*A} inverse } #end #end #end #macro Spheroid(Center, Radius) sphere { 0, 1 scale Radius translate Center } #end #macro Supertorus(RMj, RMn, MajorControl, MinorControl, Accuracy, MaxGradient) #local CP = 2/MinorControl; #local RP = 2/MajorControl; isosurface { function { pow( pow(abs(pow(pow(abs(x),RP) + pow(abs(z),RP), 1/RP) - RMj),CP) + pow(abs(y),CP) ,1/CP) - RMn } threshold 0 contained_by {box {<-RMj-RMn,-RMn,-RMj-RMn>, < RMj+RMn, RMn, RMj+RMn>}} #if(MaxGradient >= 1) max_gradient MaxGradient #else evaluate 1, 10, 0.1 #end accuracy Accuracy } #end // Supercone author: Juha Nieminen // A cone object where each end is an ellipse, you specify two radii // for each end. // SuperCone function: (x^2/a^2+y^2/b^2-1)*(1-z) + (x^2/c^2+y^2/d^2-1)*z = 0 // // camera { location <6,5,-10> look_at 0 angle 35 } // light_source { <100,100,-20>,1 } // plane { y,-1.5 pigment { checker rgb 1, rgb .5 } } // object { SuperCone(<0,-1.5,0>,1,2, <0,1.5,0>,1,.5) // pigment { rgb x } finish { specular .5 } // } #macro Supercone(PtA, A, B, PtB, C, D) intersection { quartic { <0, 0, 0, 0, 0, 0, 0, B*B-2*B*D+D*D, 2*(B*D-B*B), B*B, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, A*A-2*A*C+C*C, 2*(A*C-A*A), A*A, 0, 0, 0, 0, -(A*A-2*A*C+C*C)*(B*B-2*B*D+D*D), -(2*((B*D-B*B)*(A*A-2*A*C+C*C)+(A*C-A*A)*(B*B-2*B*D+D*D))), -(B*B*(A*A-2*A*C+C*C)+4*(A*C-A*A)*(B*D-B*B)+A*A*(B*B-2*B*D+D*D)), -(2*(B*B*(A*C-A*A)+A*A*(B*D-B*B))), -A*A*B*B> sturm } cylinder {0, z, max(max(abs(A), abs(B)), max(abs(C), abs(D)))} bounded_by {cone {0, max(abs(A), abs(B)), z, max(abs(C), abs(D))}} #local Dirv = PtB - PtA; scale <1,1,vlength(Dirv)> #local Dirv = vnormalize(Dirv); #if(vlength(Dirv-<0,0,-1>)=0) scale <1,1,-1> #else Reorient_Trans(z, Dirv) #end translate PtA } #end // Connect two spheres with a cylinder. // Derived from Connect() macro by John VanSickle #macro Connect_Spheres(PtA, RadiusA, PtB, RadiusB) #local Axis = PtB - PtA; #local RadDif = RadiusA - RadiusB; #local Len = VDist(PtA, PtB); #local D2 = sqrt(f_sqr(Len) - f_sqr(RadDif)); cone { PtA + Axis/Len*RadDif*RadiusA/Len, RadiusA*D2/Len, PtB + Axis/Len*RadDif*RadiusB/Len, RadiusB*D2/Len } #end #macro Wire_Box_Union(A, B, WireRadius) Wire_Box(A, B, WireRadius, no) #end #macro Wire_Box_Merge(A, B, WireRadius) Wire_Box(A, B, WireRadius, yes) #end #macro Wire_Box(A, B, WireRadius, UseMerge) #local AA = ; #local BB = ; #local Delta=abs(BB.x-AA.x)/2; #if (Delta; #local BB = ; #else #local AA = ; #local BB = ; #end #local Delta=abs(BB.y-AA.y)/2; #if (Delta; #local BB = ; #else #local AA = ; #local BB = ; #end #local Delta=abs(BB.z-AA.z)/2; #if (Delta; #local BB = ; #else #local AA = ; #local BB = ; #end #local LBF = AA; #local RBF = < BB.x, AA.y, AA.z>; #local RBB = < BB.x, AA.y, BB.z>; #local LBB = < AA.x, AA.y, BB.z>; #local LTF = < AA.x, BB.y, AA.z>; #local RTF = < BB.x, BB.y, AA.z>; #local RTB = BB; #local LTB = < AA.x, BB.y, BB.z>; #if(UseMerge) merge { #else union { #end sphere {LBF, WireRadius} #if (AA.x != BB.x) sphere {RBF, WireRadius} #end #if ((AA.x != BB.x) & (AA.z != BB.z)) sphere {RBB, WireRadius} #end #if (AA.z != BB.z) sphere {LBB, WireRadius} #end #if (AA.y != BB.y) sphere {LTF, WireRadius} #end #if ((AA.x != BB.x) & (AA.y != BB.y)) sphere {RTF, WireRadius} #end #if ((AA.x != BB.x) & (AA.y != BB.y) & (AA.z != BB.z)) sphere {RTB, WireRadius} #end #if ((AA.y != BB.y) & (AA.z != BB.z)) sphere {LTB, WireRadius} #end #if (AA.x != BB.x) cylinder {LBF, RBF, WireRadius} cylinder {LBB, RBB, WireRadius} cylinder {LTB, RTB, WireRadius} cylinder {LTF, RTF, WireRadius} #end #if (AA.y != BB.y) cylinder {LBF, LTF, WireRadius} cylinder {RBF, RTF, WireRadius} cylinder {RBB, RTB, WireRadius} cylinder {LBB, LTB, WireRadius} #end #if (AA.z != BB.z) cylinder {LTB, LTF, WireRadius} cylinder {LBB, LBF, WireRadius} cylinder {RTB, RTF, WireRadius} cylinder {RBB, RBF, WireRadius} #end } #end #macro Round_Box_Union(A, B, EdgeRadius) Round_Box(A, B, EdgeRadius, no) #end #macro Round_Box_Merge(A, B, EdgeRadius) Round_Box(A, B, EdgeRadius, yes) #end #macro Round_Box(A, B, EdgeRadius, UseMerge) #local AA = ; #local BB = ; #local Delta=abs(BB.x-AA.x)/2; #if (Delta; #local BB = ; #else #local AA = ; #local BB = ; #end #local Delta=abs(BB.y-AA.y)/2; #if (Delta; #local BB = ; #else #local AA = ; #local BB = ; #end #local Delta=abs(BB.z-AA.z)/2; #if (Delta; #local BB = ; #else #local AA = ; #local BB = ; #end #local LBF = AA; #local RBF = < BB.x, AA.y, AA.z>; #local RBB = < BB.x, AA.y, BB.z>; #local LBB = < AA.x, AA.y, BB.z>; #local LTF = < AA.x, BB.y, AA.z>; #local RTF = < BB.x, BB.y, AA.z>; #local RTB = BB; #local LTB = < AA.x, BB.y, BB.z>; #if(UseMerge) merge { #else union { #end sphere {LBF, EdgeRadius} #if (AA.x != BB.x) sphere {RBF, EdgeRadius} #end #if ((AA.x != BB.x) & (AA.z != BB.z)) sphere {RBB, EdgeRadius} #end #if (AA.z != BB.z) sphere {LBB, EdgeRadius} #end #if (AA.y != BB.y) sphere {LTF, EdgeRadius} #end #if ((AA.x != BB.x) & (AA.y != BB.y)) sphere {RTF, EdgeRadius} #end #if ((AA.x != BB.x) & (AA.y != BB.y) & (AA.z != BB.z)) sphere {RTB, EdgeRadius} #end #if ((AA.y != BB.y) & (AA.z != BB.z)) sphere {LTB, EdgeRadius} #end #if (AA.x != BB.x) cylinder {LBF, RBF, EdgeRadius} cylinder {LBB, RBB, EdgeRadius} cylinder {LTB, RTB, EdgeRadius} cylinder {LTF, RTF, EdgeRadius} #end #if (AA.y != BB.y) cylinder {LBF, LTF, EdgeRadius} cylinder {RBF, RTF, EdgeRadius} cylinder {RBB, RTB, EdgeRadius} cylinder {LBB, LTB, EdgeRadius} #end #if (AA.z != BB.z) cylinder {LTB, LTF, EdgeRadius} cylinder {LBB, LBF, EdgeRadius} cylinder {RTB, RTF, EdgeRadius} cylinder {RBB, RBF, EdgeRadius} #end box {AA-EdgeRadius*x, BB+EdgeRadius*x} box {AA-EdgeRadius*y, BB+EdgeRadius*y} box {AA-EdgeRadius*z, BB+EdgeRadius*z} } #end #macro Round_Cylinder_Union(A, B, Radius, EdgeRadius) Round_Cylinder(A, B, Radius, EdgeRadius, no) #end #macro Round_Cylinder_Merge(A, B, Radius, EdgeRadius) Round_Cylinder(A, B, Radius, EdgeRadius, yes) #end #macro Round_Cylinder(A, B, Radius, EdgeRadius, UseMerge) #if(UseMerge) merge { #else union { #end #if(Radius RadiusB) #local RA = RadiusB; #local RB = RadiusA; #local PA = PtB; #local PB = PtA; #else #local RA = RadiusA; #local RB = RadiusB; #local PA = PtA; #local PB = PtB; #end #local Axis = vnormalize(PB - PA); #local Len = VDist(PA, PB); #local SA = atan2(RB - RA, Len); #if(UseMerge) merge { #else union { #end #local R1 = RA - EdgeRadius*tan(pi/4 - SA/2); #local R2 = RB - EdgeRadius/tan(pi/4 - SA/2); torus {R1, EdgeRadius Point_At_Trans(Axis) translate PA + Axis*EdgeRadius } torus {R2, EdgeRadius Point_At_Trans(Axis) translate PB - Axis*EdgeRadius } #local D1 = EdgeRadius - EdgeRadius*sin(SA); #local D2 = EdgeRadius + EdgeRadius*sin(SA); cone { PA + Axis*D1, R1 + EdgeRadius*cos(SA), PB - Axis*D2, R2 + EdgeRadius*cos(SA) } cone {PA, R1, PB, R2} } #end // Cones with spherical caps // Sphere-capped cone object with spheres centered on end points. // Derived from Connect() macro by John VanSickle #macro Round_Cone2_Union(PtA, RadiusA, PtB, RadiusB) Round_Cone2(PtA, RadiusA, PtB, RadiusB, no) #end #macro Round_Cone2_Merge(PtA, RadiusA, PtB, RadiusB) Round_Cone2(PtA, RadiusA, PtB, RadiusB, yes) #end #macro Round_Cone2(PtA, RadiusA, PtB, RadiusB, UseMerge) #local Axis = PtB - PtA; #local RadDif = RadiusA - RadiusB; #local Len = VDist(PtA, PtB); #local D2 = f_sqr(Len) - f_sqr(RadDif); #if(D2<0) #error "Round_Cone2() macro called with parameters that can't be handled correctly" #end #local D2 = sqrt(D2); #if(UseMerge) merge { #else union { #end sphere {PtA, RadiusA} sphere {PtB, RadiusB} cone { PtA + Axis/Len*RadDif*RadiusA/Len, RadiusA*D2/Len, PtB + Axis/Len*RadDif*RadiusB/Len, RadiusB*D2/Len } } #end // Sphere-capped cone object with spheres moved and resized // to fit ends of cone. // The cone portion is identical to what you would get using // a cone object with the same parameters, but the spheres are // not centered on the endpoints of the cone, but are moved // to give a smooth transition with the surface #macro Round_Cone3_Union(PtA, RadiusA, PtB, RadiusB) Round_Cone3(PtA, RadiusA, PtB, RadiusB, no) #end #macro Round_Cone3_Merge(PtA, RadiusA, PtB, RadiusB) Round_Cone3(PtA, RadiusA, PtB, RadiusB, yes) #end #macro Round_Cone3(PtA, RadiusA, PtB, RadiusB, UseMerge) #local Axis = vnormalize(PtB - PtA); #local Len = VDist(PtA, PtB); #local SA = atan2(RadiusB - RadiusA, Len); #if(UseMerge) merge { #else union { #end cone {PtA, RadiusA, PtB, RadiusB} sphere {PtA + Axis*tan(SA)*RadiusA, RadiusA/cos(SA)} sphere {PtB + Axis*tan(SA)*RadiusB, RadiusB/cos(SA)} } #end // Two-triangle quad // A---B // |\ | // | \ | // | \| // D---C #macro Quad(A, B, C, D) triangle {A, B, C} triangle {A, C, D} #end #macro Smooth_Quad(A, NA, B, NB, C, NC, D, ND) smooth_triangle {A, NA, B, NB, C, NC} smooth_triangle {A, NA, C, NC, D, ND} #end // HF Macros author: Rune S. Johansen // Optimizations by: Wlodzimierz ABX Skiba // There are several HF macros in shapes.inc, which generate meshes in various shapes. // See more information in the help file. #macro HF_Square (Function,UseUVheight,UseUVtexture,Res,Smooth,FileName,MnExt,MxExt) #local WriteFile = (strlen(FileName) > 0); #local xRes = (< 1, 1>*Res).x; #local zRes = (< 1, 1>*Res).y; #local UVheight = (UseUVheight=1); #local UVtex = (UseUVtexture=1); #local Smooth = (Smooth=1); #local Ext = MxExt-MnExt; // CALCULTION OF POINT GRID // Note that the grid extents one element further in all directions // if a smooth heightfield is calculated. This is to ensure correct // normal calculation later on. #local PArr = array[xRes+1+Smooth][zRes+1+Smooth] #local J = 1-Smooth; #while (J; #local P = (UV*Ext*<1,0,1> + MnExt); #if (UVheight) #local H = Function(UV.x, UV.z, 0); #else #local H = Function(P.x, P.y, P.z); #end #declare PArr[J][K] = P + H*Ext*y; #declare K = K+1; #end #declare J = J+1; #end HFCreate_() #end #macro HF_Sphere (Function,UseUVheight,UseUVtexture,Res,Smooth,FileName,Center,Radius,Depth) #local WriteFile = (strlen(FileName) > 0); #local xRes = (< 1, 1>*Res).x; #local zRes = (< 1, 1>*Res).y; #local UVheight = (UseUVheight=1); #local UVtex = (UseUVtexture=1); #local Smooth = (Smooth=1); // CALCULTION OF POINT GRID // Note that the grid extents one element further in all directions // if a smooth heightfield is calculated. This is to ensure correct // normal calculation later on. #local PArr = array[xRes+1+Smooth][zRes+1+Smooth] #local J = 1-Smooth; #while (J; #local Dir = vrotate( vrotate(x,(-89.9999+179.9998*UV.z)*z), -360*UV.x*y ); #local P = Center + Dir * Radius; #if (UVheight) #local H = Function(UV.x, UV.z, 0); #else #local H = Function(P.x, P.y, P.z); #end #declare PArr[J][K] = P + H*Dir*Depth; #declare K = K+1; #end #declare J = J+1; #end HFCreate_() #end #macro HF_Cylinder (Function,UseUVheight,UseUVtexture,Res,Smooth,FileName,EndA,EndB,Radius,Depth) #local WriteFile = (strlen(FileName) > 0); #local xRes = (< 1, 1>*Res).x; #local zRes = (< 1, 1>*Res).y; #local UVheight = (UseUVheight=1); #local UVtex = (UseUVtexture=1); #local Smooth = (Smooth=1); #local Axis = EndB-EndA; #local Base = VPerp_To_Vector(Axis); // CALCULTION OF POINT GRID // Note that the grid extents one element further in all directions // if a smooth heightfield is calculated. This is to ensure correct // normal calculation later on. #local PArr = array[xRes+1+Smooth][zRes+1+Smooth] #local J = 1-Smooth; #while (J; #local Dir = vaxis_rotate(Base,Axis,-360*UV.x-90); #local P = EndA+Axis*UV.z+Dir*Radius; #if (UVheight) #local H = Function(UV.x, UV.z, 0); #else #local H = Function(P.x, P.y, P.z); #end #declare PArr[J][K] = P + H*Dir*Depth; #declare K = K+1; #end #declare J = J+1; #end HFCreate_() #end #macro HF_Torus (Function,UseUVheight,UseUVtexture,Res,Smooth,FileName,Major,Minor,Depth) #local WriteFile = (strlen(FileName) > 0); #local xRes = (< 1, 1>*Res).x; #local zRes = (< 1, 1>*Res).y; #local UVheight = (UseUVheight=1); #local UVtex = (UseUVtexture=1); #local Smooth = (Smooth=1); // CALCULTION OF POINT GRID // Note that the grid extents one element further in all directions // if a smooth heightfield is calculated. This is to ensure correct // normal calculation later on. #local PArr = array[xRes+1+Smooth][zRes+1+Smooth] #local J = 1-Smooth; #while (J; #local Dir = vrotate(vrotate(-x,360*UV.z*z),-360*UV.x*y); #local P = vrotate(Major*x,-360*UV.x*y)+Dir*Minor; #if (UVheight) #local H = Function(UV.x, UV.z, 0); #else #local H = Function(P.x, P.y, P.z); #end #declare PArr[J][K] = P + H*Dir*Depth; #declare K = K+1; #end #declare J = J+1; #end HFCreate_() #end // Internal macro - not intended to be called by user. #macro HFCreate_ () #if(WriteFile) #fopen _HFMACRO_OUTPUT_FILE FileName write #write(_HFMACRO_OUTPUT_FILE,"mesh2 {\nvertex_vectors {",xRes*zRes,",\n", #else mesh2 {vertex_vectors{xRes*zRes, #end #local J = 1; #while (J<=xRes) #local K = 1; #while (K<=zRes) PArr[J][K], #declare K = K+1; #end #declare J = J+1; #end #if(WriteFile) "}\n") #else } #end #if (Smooth) #if(WriteFile) #write(_HFMACRO_OUTPUT_FILE,"normal_vectors {",xRes*zRes,",\n", #else normal_vectors{xRes*zRes, #end // CALCULATION OF NORMAL VECTOR // We don't vnormalize the vectors from the current center point // to its neightbor points because we want a weighted average // where bigger areas contribute more. This also means that the // center point can be left out completely of the calculations: #local J = 1; #while (J<=xRes) #local K = 1; #while (K<=zRes) vnormalize(vcross( PArr[J][K+1]-PArr[J][K-1], PArr[J+1][K]-PArr[J-1][K] )), #declare K = K+1; #end #declare J = J+1; #end #if(WriteFile) "}\n") #else } #end #end #if (UVtex) #if(WriteFile) #write(_HFMACRO_OUTPUT_FILE,"uv_vectors {",xRes*zRes,",\n", #else uv_vectors{xRes*zRes, #end #local J = 1; #while (J<=xRes) #local K = 1; #while (K<=zRes) <(J-1)/(xRes-1),(K-1)/(zRes-1)>, #declare K = K+1; #end #declare J = J+1; #end #if(WriteFile) "}\n") #else } #end #end #if(WriteFile) #write(_HFMACRO_OUTPUT_FILE,"face_indices {",(xRes-1)*(zRes-1)*2,",\n", #else face_indices{(xRes-1)*(zRes-1)*2, #end #local F1 = <0,zRes,zRes+1>; #local F2 = <0,zRes+1,1>; #local J = 0; #while (J} plane {-z,1 rotate <19.47, -120, 0>} plane {-z,1 rotate <19.47, 120, 0>} bounded_by {sphere {0, 3}} } #declare Octahedron = intersection {plane { z, 1 rotate < 35.26438968275, 0, 0>} plane { z, 1 rotate <-35.26438968275, 0, 0>} plane {-z, 1 rotate < 35.26438968275, 0, 0>} plane {-z, 1 rotate <-35.26438968275, 0, 0>} plane { x, 1 rotate <0, 0, -35.26438968275>} plane { x, 1 rotate <0, 0, 35.26438968275>} plane {-x, 1 rotate <0, 0, -35.26438968275>} plane {-x, 1 rotate <0, 0, 35.26438968275>} bounded_by {sphere {0, 1.7321}} } #declare Dodecahedron = intersection {plane {-z, 1 rotate <-26.56505117708, 0, 0>} plane {-z, 1 rotate <-26.56505117708, -72, 0>} plane {-z, 1 rotate <-26.56505117708, -144, 0>} plane {-z, 1 rotate <-26.56505117708, -216, 0>} plane {-z, 1 rotate <-26.56505117708, -288, 0>} plane {-z, 1 rotate <26.56505117708, -36, 0>} plane {-z, 1 rotate <26.56505117708, -108, 0>} plane {-z, 1 rotate <26.56505117708, -180, 0>} plane {-z, 1 rotate <26.56505117708, -252, 0>} plane {-z, 1 rotate <26.56505117708, -324, 0>} plane { y, 1} plane {-y, 1} bounded_by {sphere {0, 1.2585}} } #declare Icosahedron = intersection {plane {-z, 1 rotate <52.6625, 0, 0>} plane {-z, 1 rotate <52.6625, -72, 0>} plane {-z, 1 rotate <52.6625, -144, 0>} plane {-z, 1 rotate <52.6625, -216, 0>} plane {-z, 1 rotate <52.6625, -288, 0>} plane {-z, 1 rotate <10.8125, 0, 0>} plane {-z, 1 rotate <10.8125, -72, 0>} plane {-z, 1 rotate <10.8125, -144, 0>} plane {-z, 1 rotate <10.8125, -216, 0>} plane {-z, 1 rotate <10.8125, -288, 0>} plane {-z, 1 rotate <-52.6625, -36, 0>} plane {-z, 1 rotate <-52.6625, -108, 0>} plane {-z, 1 rotate <-52.6625, -180, 0>} plane {-z, 1 rotate <-52.6625, -252, 0>} plane {-z, 1 rotate <-52.6625, -324, 0>} plane {-z, 1 rotate <-10.8125, -36, 0>} plane {-z, 1 rotate <-10.8125, -108, 0>} plane {-z, 1 rotate <-10.8125, -180, 0>} plane {-z, 1 rotate <-10.8125, -252, 0>} plane {-z, 1 rotate <-10.8125, -324, 0>} bounded_by {sphere {0, 1.2585}} } // Shapes by others // Convenient finite cone primitive, pointing up in the Y axis #declare HalfCone_Y = intersection {object {Cone_Y} plane { y, 0} plane {-y, 2} translate <0, 1, 0> scale <0.5, 1, 0.5> bounded_by {sphere{0, 1.5}} } /* Hexagonal Solid, axis along x */ #declare Hexagon = intersection {plane {z, 1} /* Rotate 90 in z axis to stand up */ plane {z, 1 rotate < 60, 0, 0>} plane {z, 1 rotate <120, 0, 0>} plane {z, 1 rotate <180, 0, 0>} plane {z, 1 rotate <240, 0, 0>} plane {z, 1 rotate <300, 0, 0>} plane { x, 1} plane {-x, 1} bounded_by {sphere{0, 1.5}} } /* Three Dimensional 4-Sided Diamond */ #declare Rhomboid = intersection {plane {-x, 1 rotate <0, 0, -30>} plane { x, 1 rotate <0, 0, -30>} plane { z, 1} plane {-z, 1} plane { y, 1} plane {-y, 1} bounded_by {sphere{0, 2.3}} } // Classic four-sided pyramids. // The first can't be used correctly in CSG, the second can. #declare Pyramid = union { // This isn't true CSG, it's just used for convenience triangle { <-1, 0, -1>, <+1, 0, -1>, <0, 1, 0> } triangle { <+1, 0, -1>, <+1, 0, +1>, <0, 1, 0> } triangle { <-1, 0, +1>, <+1, 0, +1>, <0, 1, 0> } triangle { <-1, 0, +1>, <-1, 0, -1>, <0, 1, 0> } triangle { <-1, 0, -1>, <-1, 0, +1>, <1, 0, +1> } triangle { <-1, 0, -1>, <+1, 0, -1>, <1, 0, +1> } scale <1, 2, 1> translate -y } #declare Pyramid2 = intersection { plane { < 1, 0, 0>, 1 rotate < 0, 0, 40>} plane { <-1, 0, 0>, 1 rotate < 0, 0, -40>} plane { < 0, 0, 1>, 1 rotate <-40, 0, 0>} plane { < 0, 0, -1>, 1 rotate < 40, 0, 0>} plane { <0, -1, 0>, 0 } translate <0 ,-1, 0> bounded_by {box {<-1,0,-1>, <1,1,1>}} } // These next three are finite planes. #declare Square_X = /* Scale-able plane in x */ union {triangle {<0, 1, -1>, <0, -1, 1>, <0, 1, 1>} triangle {<0, 1, -1>, <0, -1, 1>, <0, -1, -1>} } #declare Square_Y = /* Scale-able plane in y */ union {triangle {<-1, 0, 1>, <1, 0, -1>, < 1, 0, 1>} triangle {<-1, 0, 1>, <1, 0, -1>, <-1, 0, -1>} } #declare Square_Z = /* Scale-able plane in z */ union {triangle {<-1, 1, 0>, <1, -1, 0>, <-1, -1, 0>} triangle {<-1, 1, 0>, <1, -1, 0>, < 1, 1, 0>} } #version Shapes2_Inc_Temp; #end // Persistence of Vision Ray Tracer version 3.5 Include File #ifndef(Shapes_Old_Inc_Temp) #declare Shapes_Old_Inc_Temp = version; #version 3.5; #ifdef(View_POV_Include_Stack) #debug "including shapes_old.inc\n" #end /* Persistence of Vision Raytracer Version 3.5 IMPORTANT! This collection of standard shapes has been around since the days of DKB-Trace and early versions of POV-Ray. Those versions had no optomized primatives for planes, cones, disks etc. Some of the definitions below may seem trivial or unnecessary given the POV-Ray 2.0 and higher object primatives. We have retained these objects for compatibility with earlier versions. With the release of POV-Ray 1.0, some of these shapes, in particular, the "Disk_?" group, were changed from an earlier beta test and DKB-Trace style. The file "shapes.old" is also included in this package for compatibility with pre-1.0 scenes. */ //2001.7.27: renamed as shapes_old.inc for POV 3.5. The new shapes.inc //file includes this file, so backwards compatability is preserved. #declare Ellipsoid = sphere {<0, 0, 0>,1} #declare Sphere = sphere {<0, 0, 0>,1} #declare Cylinder_X = quadric {<0, 1, 1>, <0, 0, 0>, <0, 0, 0>, -1 } #declare Cylinder_Y = quadric {<1, 0, 1>, <0, 0, 0>, <0, 0, 0>, -1 } #declare Cylinder_Z = quadric {<1, 1, 0>, <0, 0, 0>, <0, 0, 0>, -1 } // Infinite cones #declare QCone_X = quadric {<-1, 1, 1>, < 0, 0, 0>, < 0, 0, 0>, 0 } #declare QCone_Y = quadric {<1, -1, 1>, <0, 0, 0>, <0, 0, 0>, 0 } #declare QCone_Z = quadric {<1, 1, -1>, <0, 0, 0>, <0, 0, 0>, 0 } // Unit cones // The Cone_n objects were formerly defined as intersections of // quadrics and boxes but now can be redefined with the cone primative. #declare Cone_X = cone {x,0,-x,1} #declare Cone_Y = cone {y,0,-y,1} #declare Cone_Z = cone {z,0,-z,1} // The Plane_nn objects were formerly defined as quadrics but now can // be redefined as a plane. #declare Plane_YZ = plane {x,0} #declare Plane_XZ = plane {y,0} #declare Plane_XY = plane {z,0} /* y^2 + z^2 - x = 0 */ #declare Paraboloid_X = quadric {< 0, 1, 1>, < 0, 0, 0>, <-1, 0, 0>, 0 } /* x^2 + z^2 - y = 0 */ #declare Paraboloid_Y = quadric {<1, 0, 1>, <0, 0, 0>, <0, -1, 0>, 0 } /* x^2 + y^2 - z = 0 */ #declare Paraboloid_Z = quadric {<1, 1, 0>, <0, 0, 0>, <0, 0, -1>, 0 } /* y - x^2 + z^2 = 0 */ #declare Hyperboloid = quadric {<-1, 0, 1>, < 0, 0, 0>, < 0, 1, 0>, 0 } #declare Hyperboloid_Y = quadric /* Vertical hyperboloid */ {<1, -1, 1>, /* */ <0, 0, 0>, /* \ / */ <0, 0, 0>, -1 /* Like this: ) ( */ } /* / \ */ // Cube using the procedural box primitive #declare UnitBox = box { <-1, -1, -1>, <1, 1, 1> } // This primitive used to be an intersection of six planes. For speed, // it is now a box and nothing else. #declare Cube = box { <-1, -1, -1>, <1, 1, 1> } // The Disk primitives are "capped" cylinders of unit length. // // They are now "unit" size, the same as a sphere with a radius of 1. // They will now scale evenly in all directions. #declare Disk_X = /* Capped cylinder, Length in x axis */ cylinder { x,-x,1} #declare Disk_Y = /* Capped cylinder, Length in y axis */ cylinder { y,-y,1} #declare Disk_Z = /* Capped cylinder, Length in z axis */ cylinder { z,-z,1} #version Shapes_Old_Inc_Temp; #end #ifndef(ShapesQ_Inc_Temp) #declare ShapesQ_Inc_Temp = version; #version 3.5; #ifdef(View_POV_Include_Stack) # debug "including shapesq.inc\n" #end /* Persistence of Vision Raytracer Version 3.1 Quartic shapes include file Several cubic and quartic shape definitions by Alexander Enzmann In the following descriptions, multiplication of two terms is shown as the two terms next to each other (i.e. x y, rather than x*y. The expression c(n, m) is the binomial coefficient, n!/m!(n-m)!. */ /* Bicorn This curve looks like the top part of a paraboloid, bounded from below by another paraboloid. The basic equation is: y^2 - (x^2 + z^2) y^2 - (x^2 + z^2 + 2 y - 1)^2 = 0. */ #declare Bicorn = quartic {< 1, 0, 0, 0, 1, 0, 4, 2, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 4, 0, -4, 1, 0, -2, 0, 1> } /* Crossed Trough This is a surface with four pieces that sweep up from the x-z plane. The equation is: y = x^2 z^2. */ #declare Crossed_Trough = quartic {< 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0> } /* a drop coming out of water? This is a curve formed by using the equation y = 1/2 x^2 (x + 1) as the radius of a cylinder having the x-axis as its central axis. The final form of the equation is: y^2 + z^2 = 0.5 (x^3 + x^2) */ #declare Cubic_Cylinder = quartic {< 0, 0, 0, -0.5, 0, 0, 0, 0, 0, -0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0> } /* a cubic saddle. The equation is: z = x^3 - y^3. */ #declare Cubic_Saddle_1 = quartic {< 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0> } /* Variant of a devil's curve in 3-space. This figure has a top and bottom part that are very similar to a hyperboloid of one sheet, however the central region is pinched in the middle leaving two teardrop shaped holes. The equation is: x^4 + 2 x^2 z^2 - 0.36 x^2 - y^4 + 0.25 y^2 + z^4 = 0. */ #declare Devils_Curve = quartic {<-1, 0, 0, 0, 0, 0, 0, -2, 0, 0.36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -0.25, 0, 0, 0, 0, -1, 0, 0, 0, 0> } /* Folium This is a folium rotated about the x-axis. The formula is: 2 x^2 - 3 x y^2 - 3 x z^2 + y^2 + z^2 = 0. */ #declare Folium = quartic {< 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, -3, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0> } /* Glob - sort of like basic teardrop shape. The equation is: y^2 + z^2 = 0.5 x^5 + 0.5 x^4. */ #declare Glob_5 = poly {5, <-0.5, 0, 0, -0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0> } /* Variant of a lemniscate - the two lobes are much more teardrop-like. */ #declare Twin_Glob = poly {6, < 4, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0> } /* Approximation to the helix z = arctan(y/x). The helix can be approximated with an algebraic equation (kept to the range of a quartic) with the following steps: tan(z) = y/x => sin(z)/cos(z) = y/x => (1) x sin(z) - y cos(z) = 0 Using the taylor expansions for sin, cos about z = 0, sin(z) = z - z^3/3! + z^5/5! - ... cos(z) = 1 - z^2/2! + z^6/6! - ... Throwing out the high order terms, the expression (1) can be written as: x (z - z^3/6) - y (1 + z^2/2) = 0, or (2) -1/6 x z^3 + x z + 1/2 y z^2 - y = 0 This helix (2) turns 90 degrees in the range 0 <= z <= sqrt(2)/2. By using scale <2 2 2>, the helix defined below turns 90 degrees in the range 0 <= z <= sqrt(2) = 1.4042. */ #declare Helix = quartic {< 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.1666, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, -1, 0, 0, 0, 0, 0> clipped_by {object {Cylinder_Z scale 2} plane { z, 1.4142} plane {-z, 0} } bounded_by{clipped_by} } /* This is an alternate Helix, using clipped_by instead of csg intersection. */ #declare Helix_1 = object {Helix} /* Hyperbolic Torus having major radius sqrt(40), minor radius sqrt(12). This figure is generated by sweeping a circle along the arms of a hyperbola. The equation is: x^4 + 2 x^2 y^2 - 2 x^2 z^2 - 104 x^2 + y^4 - 2 y^2 z^2 + 56 y^2 + z^4 + 104 z^2 + 784 = 0. See the description for the torus below. */ #declare Hyperbolic_Torus_40_12 = quartic {< 1, 0, 0, 0, 2, 0, 0, -2, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -2, 0, 56, 0, 0, 0, 0, 1, 0, 104, 0, 784> } /* Lemniscate of Gerono This figure looks like two teardrops with their pointed ends connected. It is formed by rotating the Lemniscate of Gerono about the x-axis. The formula is: x^4 - x^2 + y^2 + z^2 = 0. */ #declare Lemniscate = quartic {< 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0> } /* This is a figure with a bumpy sheet on one side and something that looks like a paraboloid (but with an internal bubble). The formula is: (x^2 + y^2 + a c x)^2 - (x^2 + y^2)(c - a x)^2. -99*x^4+40*x^3-98*x^2*y^2-98*x^2*z^2+99*x^2+40*x*y^2+40*x*z^2+y^4+2*y^2*z^2 -y^2+z^4-z^2 */ #declare Quartic_Loop_1 = quartic {<99, 0, 0, -40, 98, 0, 0, 98, 0, -99, 0, 0, -40, 0, 0, 0, 0, -40, 0, 0, -1, 0, 0, -2, 0, 1, 0, 0, 0, 0, -1, 0, 1, 0, 0> } /* Monkey Saddle This surface has three parts that sweep up and three down. This gives a saddle that has a place for two legs and a tail... The equation is: z = c (x^3 - 3 x y^2). The value c gives a vertical scale to the surface - the smaller the value of c, the flatter the surface will be (near the origin). */ #declare Monkey_Saddle = quartic {< 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0> } /* Parabolic Torus having major radius sqrt(40), minor radius sqrt(12). This figure is generated by sweeping a circle along the arms of a parabola. The equation is: x^4 + 2 x^2 y^2 - 2 x^2 z - 104 x^2 + y^4 - 2 y^2 z + 56 y^2 + z^2 + 104 z + 784 = 0. See the description for the torus below. */ #declare Parabolic_Torus_40_12 = quartic {< 1, 0, 0, 0, 2, 0, 0, 0, -2, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -2, 56, 0, 0, 0, 0, 0, 0, 1, 104, 784> } /* Piriform This figure looks like a hersheys kiss. It is formed by sweeping a Piriform about the x-axis. a basic form of the equation is: (x^4 - x^3) + y^2 + z^2 = 0. */ #declare Piriform = quartic {< 4, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0> } /* n-Roll Mill This curve in the plane looks like several hyperbolas with their bumps arranged about the origin. The general formula is: x^n - c(n,2) x^(n-2) y^2 + c(n,4) x^(n-4) y^4 - ... = a When rendering in 3-Space, the resulting figure looks like a cylinder with indented sides. */ /* Quartic parabola - a 4th degree polynomial (has two bumps at the bottom) that has been swept around the z axis. The equation is: 0.1 x^4 - x^2 - y^2 - z^2 + 0.9 = 0. */ #declare Quartic_Paraboloid = quartic {< 0.1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0.9> } /* Quartic Cylinder - a Space Needle? */ #declare Quartic_Cylinder = quartic {< 0, 0, 0, 0, 1, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, -0.01> } /* Steiners quartic surface */ #declare Steiner_Surface = quartic {< 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0> } /* Torus having major radius sqrt(40), minor radius sqrt(12) */ #declare Torus_40_12 = quartic {< 1, 0, 0, 0, 2, 0, 0, 2, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 56, 0, 0, 0, 0, 1, 0, -104, 0, 784> } /* Witch of Agnesi */ #declare Witch_Hat = quartic {< 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0.04, 0, 0, 0, 0, 0.04> } /* very rough approximation to the sin-wave surface z = sin(2 pi x y). In order to get an approximation good to 7 decimals at a distance of 1 from the origin would require a polynomial of degree around 60. This would require around 200k coefficients. For best results, scale by something like <1 1 0.2>. */ #declare Sinsurf = poly {6, < 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1116.226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18.8496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0> } /* Empty quartic equation. Ready to be filled with numbers... quartic {< 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0> } */ #version ShapesQ_Inc_Temp; #end // Persistence of Vision Ray Tracer version 3.5 Include File // File: skies.inc // Last updated: 2001.7.24 // Description: Sky textures, sky_spheres, and sky objects. #ifndef(Skies_Inc_Temp) #declare Skies_Inc_Temp = version; #version 3.5; #ifdef(View_POV_Include_Stack) #debug "including skies.inc\n" #end /* Persistence of Vision Raytracer Version 3.1 Contents: Pigments: (building blocks for the stuff below) P_Cloud1 pigment layer, contains clear regions. Use with background. P_Cloud2 pigment layer, contains clear regions. Use with background. P_Cloud3 pigment layer, contains clear regions. Use with background. SkySpheres: S_Cloud1 sky_sphere, uses P_Cloud2. S_Cloud2 sky_sphere uses P_Cloud2. S_Cloud3 sky_sphere uses P_Cloud3. S_Cloud4 sky_sphere uses P_Cloud3. S_Cloud5 sky_sphere. Opaque. Textures: T_Cloud1 2-layer texture using P_Cloud1 pigment, contains clear regions. T_Cloud2 1-layer texture, contains clear regions. T_Cloud3 2-layer texture, contains clear regions. Objects: O_Cloud1 sphere, radius 10000 with T_Cloud1 texture. O_Cloud2 union of 2 planes, with T_Cloud2 and T_Cloud3. */ #declare P_Cloud1 = pigment { bozo turbulence 0.65 octaves 6 omega 0.7 lambda 2 color_map { [0.0, 0.1 color red 0.85 green 0.85 blue 0.85 color red 0.75 green 0.75 blue 0.75] [0.1, 0.5 color red 0.75 green 0.75 blue 0.75 color Clear] [0.5, 1.001 color Clear color Clear] } scale <6, 1, 6> } #declare P_Cloud2 = pigment { wrinkles turbulence 0.65 octaves 6 omega 0.7 lambda 2 color_map { [0.0, 0.1 color red 0.85 green 0.85 blue 0.85 color red 0.75 green 0.75 blue 0.75] [0.1, 0.5 color red 0.75 green 0.75 blue 0.75 color rgb <0.258, 0.258, 0.435> ] [0.5, 1.001 color rgb <0.258, 0.258, 0.435> color rgb <0.258, 0.258, 0.435> ] } scale <6, 1, 6> } #declare P_Cloud3 = pigment { bozo color_map { [0.0, 0.1 color red 0.85 green 0.85 blue 0.85 color red 0.55 green 0.60 blue 0.65] [0.1, 0.5 color red 0.55 green 0.60 blue 0.65 color rgb <0.184, 0.184, 0.309> ] [0.5, 1.001 color rgb <0.184, 0.184, 0.309> color rgb <0.1, 0.1, 0.2>] } turbulence 0.65 octaves 6 omega 0.707 lambda 2 scale <6, 4, 6> } #declare P_Cloud4 = pigment { wrinkles turbulence 0.1 lambda 2.2 omega 0.707 color_map { [0.20 SkyBlue * 0.85 ] [0.50 White ] [1.00 Gray70 ] } scale <0.5, 0.15, 1> } #declare S_Cloud1 = sky_sphere { pigment { gradient y pigment_map { [0.01 rgb <0.847, 0.749, 0.847> ] // horizon [0.25 P_Cloud2 scale 0.25 rotate z*5] [0.60 P_Cloud3 scale <0.25, 0.15, 0.25> rotate z*10] } } } #declare S_Cloud2 = sky_sphere { pigment { gradient y pigment_map { [0.00 rgb <0.847, 0.749, 0.847> ] // horizon [0.10 SkyBlue ] // horizon [0.20 P_Cloud4 ] } } } #declare S_Cloud3 = sky_sphere { pigment { gradient y pigment_map { [0.10 rgb <0.258, 0.258, 0.435> ] [0.25 P_Cloud2 scale 0.15 ] } } } #declare S_Cloud4 = sky_sphere { pigment { gradient y pigment_map { [0.00 rgb <0.184, 0.184, 0.309> ] [0.15 P_Cloud3 scale <0.05, 0.40, 0.05> rotate z*30 ] [0.45 P_Cloud3 scale <0.25, 0.15, 0.50> ] } } } #declare S_Cloud5 = sky_sphere { pigment { rgb <0.258, 0.258, 0.435> } pigment { bozo turbulence 1.5 octaves 10 omega .5 lambda 2.5 color_map { [0.0, 0.5 color rgbt<.75, .75, .75, 0> color rgbt<.9, .9, .9, .9> ] [0.5, 0.7 color rgbt<.9, .9, .9, .9> color rgbt<1, 1, 1, 1> ] [0.7, 1.0 color rgbt<1, 1, 1, 1> color rgbt<1, 1, 1, 1> ] } scale <1, 0.3, 10> } pigment { bozo turbulence 0.6 octaves 10 omega .5 lambda 2.5 color_map { [0.0, 0.4 color rgbt<.75, .75, .75, 0> color rgbt<.9, .9, .9, .9> ] [0.4, 0.7 color rgbt<.9, .9, .9, .9> color rgbt<1, 1, 1, 1> ] [0.7, 1.0 color rgbt<1, 1, 1, 1> color rgbt<1, 1, 1, 1> ] } scale <1, 0.3, 10> } pigment { bozo turbulence 0.8 octaves 10 omega .5 lambda 2.5 color_map { [0.0, 0.4 color rgbt<.75, .75, .75, 0> color rgbt<.9, .9, .9, .9> ] [0.4, 0.6 color rgbt<.9, .9, .9, .9> color rgbt<1, 1, 1, 1> ] [0.6, 1.0 color rgbt<1, 1, 1, 1> color rgbt<1, 1, 1, 1> ] } scale <1, 0.3, 10> } } // *********************************** // Bill Pulver's FBM Clouds // A three-layer cloud texture. // *********************************** #declare T_Cloud1 = texture { // The upper part of the clouds pigment { P_Cloud1 } finish { ambient 1.0 diffuse 0 } } texture { // The darker underside of the clouds pigment { P_Cloud1 translate -0.15*y } finish { ambient 0.6 diffuse 0 } } // T_Cloud1 mapped onto a sphere #declare O_Cloud1 = sphere { <0,0,0>, 10000 texture { T_Cloud1 scale 1000 } } // *********************************** // Darin Dugger's "Kite" clouds // *********************************** #declare T_Cloud2 = texture { pigment { bozo turbulence 1.5 octaves 10 omega .5 lambda 2.5 color_map { [0.0, 0.5 color rgbt<.75, .75, .75, 0> color rgbt<.9, .9, .9, .9> ] [0.5, 0.7 color rgbt<.9, .9, .9, .9> color rgbt<1, 1, 1, 1> ] [0.7, 1.0 color rgbt<1, 1, 1, 1> color rgbt<1, 1, 1, 1> ] } } finish { ambient 0.9 diffuse 0.1 } } #declare T_Cloud3 = texture { pigment { bozo turbulence 0.8 //0.6 octaves 10 omega .5 lambda 2.5 color_map { [0.0, 0.4 color rgbt<.75, .75, .75, 0> color rgbt<.9, .9, .9, .9> ] [0.4, 0.7 color rgbt<.9, .9, .9, .9> color rgbt<1, 1, 1, 1> ] [0.7, 1.0 color rgbt<1, 1, 1, 1> color rgbt<1, 1, 1, 1> ] } } finish { ambient 1.0 diffuse 0.0 } } texture { pigment { bozo turbulence 0.8 //0.6 octaves 10 omega .5 lambda 2.5 color_map { [0.0, 0.4 color rgbt<.75, .75, .75, 0> color rgbt<.9, .9, .9, .9> ] [0.4, 0.6 color rgbt<.9, .9, .9, .9> color rgbt<1, 1, 1, 1> ] [0.6, 1.0 color rgbt<1, 1, 1, 1> color rgbt<1, 1, 1, 1> ] } } finish { ambient 0.95 diffuse 0.0 } scale .9 translate y*-0.15 } // Darin Dugger's DD_Cloud_Sky texture mapped onto a pair of planes // NOTE: Lowest plane is at y=500 #declare O_Cloud2 = union { plane { y, 500 texture { T_Cloud3 scale 600 } } plane { y, 3000 texture { T_Cloud2 scale <900,1,6000> translate x*3000 rotate -30*y } } } #version Skies_Inc_Temp; #end 22=UM5grkIIii5Mkg=UrrU=gkM5iiIIkrg5MU=/+FQ@NdbJLnvnQ9qwVk[Y`|gcpy+@JQV[`gpyƼ/QbnwűcFdv|YNn÷k9LqȾqL9kƼnNY|żvdFcwnbQ/ôypg`[VQJ@+ypcg|`Y[kVwq9QnvnLJbdN@QF+/#*49D/DQGM]Y>RgiZRnunTLs~pI:so3nl`hyþb9QYZTI3GŵfD]inpolhebabfmv̼mMgu~èvGRn˷yMRsr<Lsĸ`:n·n:`ûsLGD*aM/4br#e<h`ln3os:Ip~sLTnunRZigR>Y]MGQD/D94*#/+FQ@NdbJLnvnQ9qwVk[Y`|gcpy+@JQV[`gpyƼ/QbnwűcFdv|YNn÷k9LqȾqL9kƼnNY|żvdFcwnbQ/ôypg`[VQJ@+ypcg|`Y[kVwq9QnvnLJbdN@QF+/=UM5grkIIii5Mkg=UrrU=gkM5iiIIkrg5MU=// Persistence Of Vision Raytracer version 3.1 sample file. #include "colors.inc" #include "textures.inc" #include "shapes.inc" #declare Camera1= camera { location <0, 0, -60> direction <0, 0, 10> look_at <0, 0, 0> } camera { Camera1 } light_source { <1000, 1000, -2000> color White} plane { z, 1.01 pigment {checker color White color rgb <1,.8,.8>}hollow on } #ifndef(Stars_Inc_Temp) #declare Stars_Inc_Temp=version; #version 3.5; /* Persistence of Vision Raytracer Version 3.1 Here are some updated/additional Starfield textures which you can include in distribution with POVRAY 3.1. These textures use some of the new features in POVRAY 3.1. The starfields become more "dense" as you progress from Starfield1 to Starfield6 and add a little color since all stars are not white but light shades of white, blue, red, and yellow. Respectfully; Jeff Burton jburton@apex.net http://www.geocities.com/SoHo/2365 */ #declare Starfield1 = texture { pigment { granite color_map { [ 0.000 0.270 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.270 0.280 color rgb <.5,.5,.4> color rgb <.8,.8,.4> ] [ 0.280 0.470 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.470 0.480 color rgb <.4,.4,.5> color rgb <.4,.4,.8> ] [ 0.480 0.680 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.680 0.690 color rgb <.5,.4,.4> color rgb <.8,.4,.4> ] [ 0.690 0.880 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.880 0.890 color rgb <.5,.5,.5> color rgb < 1, 1, 1> ] [ 0.890 1.000 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] } turbulence 1 sine_wave scale .5 } finish { diffuse 0 ambient 1 } } #declare Starfield2 = texture { pigment { granite color_map { [ 0.000 0.270 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.270 0.285 color rgb <.5,.5,.4> color rgb <.8,.8,.4> ] [ 0.285 0.470 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.470 0.485 color rgb <.4,.4,.5> color rgb <.4,.4,.8> ] [ 0.485 0.680 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.680 0.695 color rgb <.5,.4,.4> color rgb <.8,.4,.4> ] [ 0.695 0.880 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.880 0.895 color rgb <.5,.5,.5> color rgb < 1, 1, 1> ] [ 0.895 1.000 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] } turbulence 1 sine_wave scale .5 } finish { diffuse 0 ambient 1 } } #declare Starfield3 = texture { pigment { granite color_map { [ 0.000 0.270 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.270 0.290 color rgb <.5,.5,.4> color rgb <.8,.8,.4> ] [ 0.290 0.470 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.470 0.490 color rgb <.4,.4,.5> color rgb <.4,.4,.8> ] [ 0.490 0.680 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.680 0.700 color rgb <.5,.4,.4> color rgb <.8,.4,.4> ] [ 0.700 0.880 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.880 0.900 color rgb <.5,.5,.5> color rgb < 1, 1, 1> ] [ 0.900 1.000 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] } turbulence 1 sine_wave scale .5 } finish { diffuse 0 ambient 1 } } #declare Starfield4 = texture { pigment { granite color_map { [ 0.000 0.270 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.270 0.300 color rgb <.5,.5,.4> color rgb <.8,.8,.4> ] [ 0.300 0.470 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.470 0.500 color rgb <.4,.4,.5> color rgb <.4,.4,.8> ] [ 0.500 0.670 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.670 0.700 color rgb <.5,.4,.4> color rgb <.8,.4,.4> ] [ 0.700 0.870 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.870 0.900 color rgb <.5,.5,.5> color rgb < 1, 1, 1> ] [ 0.900 1.000 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] } turbulence 1 sine_wave scale .5 } finish { diffuse 0 ambient 1 } } #declare Starfield5 = texture { pigment { granite color_map { [ 0.000 0.260 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.260 0.300 color rgb <.5,.5,.4> color rgb <.8,.8,.4> ] [ 0.300 0.460 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.460 0.500 color rgb <.4,.4,.5> color rgb <.4,.4,.8> ] [ 0.500 0.660 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.660 0.700 color rgb <.5,.4,.4> color rgb <.8,.4,.4> ] [ 0.700 0.860 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.860 0.900 color rgb <.5,.5,.5> color rgb < 1, 1, 1> ] [ 0.900 1.000 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] } turbulence 1 sine_wave scale .5 } finish { diffuse 0 ambient 1 } } #declare Starfield6 = texture { pigment { granite color_map { [ 0.000 0.250 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.250 0.300 color rgb <.5,.5,.4> color rgb <.8,.8,.4> ] [ 0.300 0.450 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.450 0.500 color rgb <.4,.4,.5> color rgb <.4,.4,.8> ] [ 0.500 0.650 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.650 0.700 color rgb <.5,.4,.4> color rgb <.8,.4,.4> ] [ 0.700 0.850 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] [ 0.850 0.900 color rgb <.5,.5,.5> color rgb < 1, 1, 1> ] [ 0.900 1.000 color rgb < 0, 0, 0> color rgb < 0, 0, 0> ] } turbulence 1 sine_wave scale .5 } finish { diffuse 0 ambient 1 } } #version Stars_Inc_Temp; #end // Persistence Of Vision raytracer version 3.1 sample file. camera { location <-2.0, 1.75, -5> right x*1.3333 angle 70 look_at <-0.75, -0.5, 0> } light_source { <20, 20, -25> rgb 1 } plane { y, 0 pigment { Plum }} // Persistence of Vision Ray Tracer version 3.5 Include File // File: stdinc.inc // Last updated: 2001.8.16 // Description: The most commonly used include files. #ifndef(STDINC_INC_TEMP) #declare STDINC_INC_TEMP = version; #version 3.5; #ifdef(View_POV_Include_Stack) #debug "including stdinc.inc\n" #end #include "colors.inc" #include "shapes.inc" #include "transforms.inc" #include "consts.inc" #include "functions.inc" #include "math.inc" #include "rand.inc" #version STDINC_INC_TEMP; #end//arrays.inc #ifndef(Stoneold_Inc_Temp) #declare Stoneold_Inc_Temp = version; #version 3.5; #ifdef(View_POV_Include_Stack) # debug "including stoneold.inc\n" #end /* Persistence of Vision Raytracer Version 3.1 Stone textures by Mike Miller 1992 Backwards-compatibility translation file. Translates old texture names to new texture names. Use stones1.inc in the future. */ #include "stones1.inc" #declare Grnt0 = texture { T_Grnt0 } #declare Grnt1 = texture { T_Grnt1 } #declare Grnt2 = texture { T_Grnt2 } #declare Grnt3 = texture { T_Grnt3 } #declare Grnt4 = texture { T_Grnt4 } #declare Grnt5 = texture { T_Grnt5 } #declare Grnt6 = texture { T_Grnt6 } #declare Grnt7 = texture { T_Grnt7 } #declare Grnt8 = texture { T_Grnt8 } #declare Grnt9 = texture { T_Grnt9 } #declare Grnt10 = texture { T_Grnt10 } #declare Grnt11 = texture { T_Grnt11 } #declare Grnt12 = texture { T_Grnt12 } #declare Grnt13 = texture { T_Grnt13 } #declare Grnt14 = texture { T_Grnt14 } #declare Grnt15 = texture { T_Grnt15 } #declare Grnt16 = texture { T_Grnt16 } #declare Grnt17 = texture { T_Grnt17 } #declare Grnt18 = texture { T_Grnt18 } #declare Grnt19 = texture { T_Grnt19 } #declare Grnt20 = texture { T_Grnt20 } #declare Grnt21 = texture { T_Grnt21 } #declare Grnt22 = texture { T_Grnt22 } #declare Grnt23 = texture { T_Grnt23 } #declare Grnt24 = texture { T_Grnt24 } #declare Grnt25 = texture { T_Grnt25 } #declare Grnt26 = texture { T_Grnt26 } #declare Grnt27 = texture { T_Grnt27 } #declare Grnt28 = texture { T_Grnt28 } #declare Grnt29 = texture { T_Grnt29 } #declare Grnt0a = texture { T_Grnt0a } #declare Grnt1a = texture { T_Grnt1a } #declare Grnt2a = texture { T_Grnt2a } #declare Crack1 = texture { T_Crack1 } #declare Crack2 = texture { T_Crack2 } #declare Crack3 = texture { T_Crack3 } #declare Crack4 = texture { T_Crack4 } #declare Stone1 = texture { T_Stone1 } #declare Stone2 = texture { T_Stone2 } #declare Stone3 = texture { T_Stone3 } #declare Stone4 = texture { T_Stone4 } #declare Stone5 = texture { T_Stone5 } #declare Stone6 = texture { T_Stone6 } #declare Stone7 = texture { T_Stone7 } #declare Stone8 = texture { T_Stone8 } #declare Stone9 = texture { T_Stone9 } #declare Stone10 = texture { T_Stone10 } #declare Stone11 = texture { T_Stone11 } #declare Stone12 = texture { T_Stone12 } #declare Stone13 = texture { T_Stone13 } #declare Stone14 = texture { T_Stone14 } #declare Stone15 = texture { T_Stone15 } #declare Stone16 = texture { T_Stone16 } #declare Stone17 = texture { T_Stone17 } #declare Stone18 = texture { T_Stone18 } #declare Stone19 = texture { T_Stone19 } #declare Stone20 = texture { T_Stone20 } #declare Stone21 = texture { T_Stone21 } #declare Stone22 = texture { T_Stone22 } #declare Stone23 = texture { T_Stone23 } #declare Stone24 = texture { T_Stone24 } #version Stoneold_Inc_Temp; #end #ifndef(Stones_Inc_Temp) #declare Stones_Inc_Temp = version; #version 3.5; #ifdef(View_POV_Include_Stack) # debug "including stones.inc\n" #end /* Persistence of Vision Raytracer Version 3.1 Combines stones1.inc and stones2.inc. Use only if needed, since it will take longer to parse. */ #include "stones1.inc" #include "stones2.inc" #version Stones_Inc_Temp; #end // Persistence of Vision Ray Tracer version 3.5 Include File // File: stones1.inc // Last updated: 2001.7.24 // Description: #ifndef(Stones1_Inc_Temp) #declare Stones1_Inc_Temp = version; #version 3.5; /* T_Stone1 through T_Stone24 created by Mike Miller, 1992 Contains declared texture statements defining a variety of stone granite & marble textures. Most use the granite texture. Turbulence has no effect on granite, but turbulence is stated before the color map for convenience of switching to marble, which does need a turbulence to swirl the color. I tried to avoid using a random dither, but I find it helps create a subtle grain & can spark lost colors in the map. On multi-layered texture, try a float of about 0.05 on the first texture. Final Note: I would not "INCLUDE" this whole data file into a scene file if only one or two of these textures were being used...There are too many declares being used. ----------------------------------------------------------------------- The textures T_Grnt0-T_Grnt29, T_Grnt0A-T_Grnt24A and Crack1-Crack4 are "building blocks" that are used to create the final "usable" textures, T_Stone1 - T_Stone24 (and other textures that *you* design, of course!) INDEX: T_Grnt0 - T_Grnt29 color maps (generally) contain no transmit values ------------------------------ T_Grnt0 - Gray/Tan with Rose. T_Grnt1 - Creamy Whites with Yellow & Light Gray. T_Grnt2 - Deep Cream with Light Rose, Yellow, Orchid, & Tan. T_Grnt3 - Warm tans olive & light rose with cream. T_Grnt4 - Orchid, Sand & Mauve. T_Grnt5 - Medium Mauve Med.Rose & Deep Cream. T_Grnt6 - Med. Orchid, Olive & Dark Tan "mud pie". T_Grnt7 - Dark Orchid, Olive & Dark Putty. T_Grnt8 - Rose & Light Cream Yellows T_Grnt9 - Light Steely Grays T_Grnt10 - Gray Creams & Lavender Tans T_Grnt11 - Creams & Grays Kahki T_Grnt12 - Tan Cream & Red Rose T_Grnt13 - Cream Rose Orange T_Grnt14 - Cream Rose & Light Moss w/Light Violet T_Grnt15 - Black with subtle chroma T_Grnt16 - White Cream & Peach T_Grnt17 - Bug Juice & Green T_Grnt18 - Rose & Creamy Yellow T_Grnt19 - Gray Marble with White feather Viens T_Grnt20 - White Marble with Gray feather Viens T_Grnt21 - Green Jade T_Grnt22 - Clear with White feather Viens (has some transparency) T_Grnt23 - Light Tan to Mauve T_Grnt24 - Light Grays T_Grnt25 - Moss Greens & Tan T_Grnt26 - Salmon with thin Green Viens T_Grnt27 - Dark Green & Browns T_Grnt28 - Red Swirl T_Grnt29 - White, Tan, w/ thin Red Viens T_Grnt0A - T_Grnt24A color maps containing transmit ------------------------------ T_Grnt0a - Translucent T_Grnt0 T_Grnt1a - Translucent T_Grnt1 T_Grnt2a - Translucent T_Grnt2 T_Grnt3a - Translucent T_Grnt3 T_Grnt4a - Translucent T_Grnt4 T_Grnt5a - Translucent T_Grnt5 T_Grnt6a - Translucent T_Grnt6 T_Grnt7a - Translucent T_Grnt7 T_Grnt8a - Aqua Tints T_Grnt9a - Transmit Creams With Cracks T_Grnt10a - Transmit Cream Rose & light yellow T_Grnt11a - Transmit Light Grays T_Grnt12a - Transmit Creams & Tans T_Grnt13a - Transmit Creams & Grays T_Grnt14a - Cream Rose & light moss T_Grnt15a - Transmit Sand & light Orange T_Grnt16a - Cream Rose & light moss (again?) T_Grnt17a - ??? T_Grnt18a - ??? T_Grnt19a - Gray Marble with White feather Viens with Transmit T_Grnt20a - White Feather Viens T_Grnt21a - Thin White Feather Viens T_Grnt22a - ??? T_Grnt23a - Transparent Green Moss T_Grnt24a - ??? T_Crack1 - T_Crack4 clear with an thin opaque band for T_Cracks ------------------------------ T_Crack1 - T_Crack & Red Overtint T_Crack2 - Translucent Dark T_Cracks T_Crack3 - Overtint Green w/ Black T_Cracks T_Crack4 - Overtint w/ White T_Crack OTHERS Stone1 - Stone24 complete texture statements - edit to your scene & lighting situations. ------------------------------ T_Stone1 - Deep Rose & Green Marble with large White Swirls T_Stone2 - Light Greenish Tan Marble with Agate style veining T_Stone3 - Rose & Yellow Marble with fog white veining T_Stone4 - Tan Marble with Rose patches T_Stone5 - White Cream Marble with Pink veining T_Stone6 - Rose & Yellow Cream Marble T_Stone7 - Light Coffee Marble with darker patches T_Stone8 - Gray Granite with white patches T_Stone9 - White & Light Blue Marble with light violets T_Stone10- Dark Brown & Tan swirl Granite with gray undertones T_Stone11- Rose & White Marble with dark tan swirl T_Stone12- White & Pinkish Tan Marble T_Stone13- Medium Gray Blue Marble T_Stone14- Tan & Olive Marble with gray white veins T_Stone15- Deep Gray Marble with white veining T_Stone16- Peach & Yellow Marble with white veining T_Stone17- White Marble with gray veining T_Stone18- Green Jade with white veining T_Stone19- Peach Granite with white patches & green trim T_Stone20- Brown & Olive Marble with white veining T_Stone21- Red Marble with gray & white veining T_Stone22- Dark Tan Marble with gray & white veining T_Stone23- Peach & Cream Marble with orange veining T_Stone24- Green & Tan Moss Marble ----------------------------------------------------------------------- This file was modified July 2001 to work as it should with POV-Ray 3.5, all filters being changed to transmits. */ #ifdef(View_POV_Include_Stack) #debug "including stones1.inc\n" #end //--------- Gray Tan with Rose #declare T_Grnt0 = texture { pigment {granite turbulence 0.4 color_map {[0.000, 0.153 color rgbt <0.729, 0.502, 0.451, 0.000> color rgbt <0.769, 0.686, 0.592, 0.000>] [0.153, 0.398 color rgbt <0.769, 0.686, 0.592, 0.000> color rgbt <0.843, 0.753, 0.718, 0.000>] [0.398, 0.559 color rgbt <0.843, 0.753, 0.718, 0.000> color rgbt <0.780, 0.667, 0.561, 0.000>] [0.559, 0.729 color rgbt <0.780, 0.667, 0.561, 0.000> color rgbt <0.741, 0.659, 0.576, 0.000>] [0.729, 1.001 color rgbt <0.741, 0.659, 0.576, 0.000> color rgbt <0.729, 0.502, 0.451, 0.000>] } } } //----- Creamy Whites with yellow & light gray #declare T_Grnt1 = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.212 color rgbt <0.898, 0.898, 0.851, 0.000> color rgbt <0.969, 0.980, 0.875, 0.000>] [0.212, 0.424 color rgbt <0.969, 0.980, 0.875, 0.000> color rgbt <0.859, 0.859, 0.859, 0.000>] [0.424, 0.627 color rgbt <0.859, 0.859, 0.859, 0.000> color rgbt <0.992, 0.922, 0.659, 0.000>] [0.627, 0.881 color rgbt <0.992, 0.922, 0.659, 0.000> color rgbt <0.937, 0.965, 0.902, 0.000>] [0.881, 1.001 color rgbt <0.937, 0.965, 0.902, 0.000> color rgbt <0.898, 0.898, 0.851, 0.000>] } } } //------- Deep Cream with light rose, yellow orchid & tan #declare T_Grnt2 = texture { pigment {granite turbulence 0.5 color_map {[0.000, 0.178 color rgbt <0.863, 0.757, 0.596, 0.000> color rgbt <0.925, 0.792, 0.714, 0.000>] [0.178, 0.356 color rgbt <0.925, 0.792, 0.714, 0.000> color rgbt <0.871, 0.702, 0.659, 0.000>] [0.356, 0.525 color rgbt <0.871, 0.702, 0.659, 0.000> color rgbt <0.992, 0.922, 0.659, 0.000>] [0.525, 0.729 color rgbt <0.992, 0.922, 0.659, 0.000> color rgbt <0.902, 0.812, 0.714, 0.000>] [0.729, 1.001 color rgbt <0.902, 0.812, 0.714, 0.000> color rgbt <0.863, 0.757, 0.596, 0.000>] } } } //------- Warm tans olive & light rose with cream #declare T_Grnt3 = texture { pigment {granite turbulence 0.5 color_map {[0.000, 0.178 color rgbt <0.831, 0.631, 0.569, 0.000> color rgbt <0.925, 0.831, 0.714, 0.000>] [0.178, 0.356 color rgbt <0.925, 0.831, 0.714, 0.000> color rgbt <0.871, 0.702, 0.659, 0.000>] [0.356, 0.525 color rgbt <0.871, 0.702, 0.659, 0.000> color rgbt <0.831, 0.631, 0.569, 0.000>] [0.525, 0.729 color rgbt <0.831, 0.631, 0.569, 0.000> color rgbt <0.937, 0.882, 0.820, 0.000>] [0.729, 1.001 color rgbt <0.937, 0.882, 0.820, 0.000> color rgbt <0.831, 0.631, 0.569, 0.000>] } } } //-------- Orchid sand & mouve #declare T_Grnt4 = texture { pigment {granite turbulence 0.5 color_map {[0.000, 0.178 color rgbt <0.804, 0.569, 0.494, 0.000> color rgbt <0.816, 0.725, 0.537, 0.000>] [0.178, 0.356 color rgbt <0.816, 0.725, 0.537, 0.000> color rgbt <0.820, 0.580, 0.522, 0.000>] [0.356, 0.525 color rgbt <0.820, 0.580, 0.522, 0.000> color rgbt <0.882, 0.725, 0.537, 0.000>] [0.525, 0.729 color rgbt <0.882, 0.725, 0.537, 0.000> color rgbt <0.855, 0.729, 0.584, 0.000>] [0.729, 1.001 color rgbt <0.855, 0.729, 0.584, 0.000> color rgbt <0.804, 0.569, 0.494, 0.000>] } } } //------- Medium Mauve Med.Rose & deep cream #declare T_Grnt5 = texture { pigment {granite turbulence 0.5 color_map {[0.000, 0.178 color rgbt <0.804, 0.569, 0.494, 0.000> color rgbt <0.855, 0.729, 0.584, 0.000>] [0.178, 0.356 color rgbt <0.855, 0.729, 0.584, 0.000> color rgbt <0.667, 0.502, 0.478, 0.000>] [0.356, 0.525 color rgbt <0.667, 0.502, 0.478, 0.000> color rgbt <0.859, 0.624, 0.545, 0.000>] [0.525, 0.729 color rgbt <0.859, 0.624, 0.545, 0.000> color rgbt <0.855, 0.729, 0.584, 0.000>] [0.729, 1.001 color rgbt <0.855, 0.729, 0.584, 0.000> color rgbt <0.804, 0.569, 0.494, 0.000>] } } } //--------- Med. Orchid Olive & Dark Tan "mud pie" #declare T_Grnt6 = texture { pigment {granite turbulence 0.5 color_map {[0.000, 0.153 color rgbt <0.545, 0.380, 0.345, 0.000> color rgbt <0.588, 0.475, 0.333, 0.000>] [0.153, 0.398 color rgbt <0.588, 0.475, 0.333, 0.000> color rgbt <0.675, 0.478, 0.404, 0.000>] [0.398, 0.559 color rgbt <0.675, 0.478, 0.404, 0.000> color rgbt <0.757, 0.635, 0.522, 0.000>] [0.559, 0.729 color rgbt <0.757, 0.635, 0.522, 0.000> color rgbt <0.659, 0.549, 0.443, 0.000>] [0.729, 1.001 color rgbt <0.659, 0.549, 0.443, 0.000> color rgbt <0.545, 0.380, 0.345, 0.000>] } } } //------- Dark Orchid Olive & Dark Putty #declare T_Grnt7 = texture { pigment {granite turbulence 0.5 color_map {[0.000, 0.153 color rgbt <0.439, 0.310, 0.282, 0.000> color rgbt <0.463, 0.369, 0.259, 0.000>] [0.153, 0.398 color rgbt <0.463, 0.369, 0.259, 0.000> color rgbt <0.541, 0.369, 0.298, 0.000>] [0.398, 0.559 color rgbt <0.541, 0.369, 0.298, 0.000> color rgbt <0.573, 0.424, 0.286, 0.000>] [0.559, 0.729 color rgbt <0.573, 0.424, 0.286, 0.000> color rgbt <0.494, 0.396, 0.306, 0.000>] [0.729, 1.001 color rgbt <0.494, 0.396, 0.306, 0.000> color rgbt <0.439, 0.310, 0.282, 0.000>] } } } //--------- Rose & Light cream Yellows #declare T_Grnt8 = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.179 color rgbt <0.843, 0.655, 0.655, 0.000> color rgbt <0.886, 0.769, 0.627, 0.000>] [0.179, 0.368 color rgbt <0.886, 0.769, 0.627, 0.000> color rgbt <0.906, 0.820, 0.714, 0.000>] [0.368, 0.538 color rgbt <0.906, 0.820, 0.714, 0.000> color rgbt <0.851, 0.671, 0.671, 0.000>] [0.538, 0.846 color rgbt <0.851, 0.671, 0.671, 0.000> color rgbt <0.890, 0.792, 0.675, 0.000>] [0.846, 0.983 color rgbt <0.890, 0.792, 0.675, 0.000> color rgbt <0.827, 0.612, 0.612, 0.000>] [0.983, 1.001 color rgbt <0.827, 0.612, 0.612, 0.000> color rgbt <0.843, 0.655, 0.655, 0.000>] } } } //--------- Light Steely Grays #declare T_Grnt9 = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.154 color rgbt <0.894, 0.886, 0.886, 0.000> color rgbt <0.745, 0.745, 0.753, 0.000>] [0.154, 0.308 color rgbt <0.745, 0.745, 0.753, 0.000> color rgbt <0.902, 0.902, 0.859, 0.000>] [0.308, 0.444 color rgbt <0.902, 0.902, 0.859, 0.000> color rgbt <0.729, 0.706, 0.694, 0.000>] [0.444, 0.615 color rgbt <0.729, 0.706, 0.694, 0.000> color rgbt <0.588, 0.592, 0.635, 0.000>] [0.615, 0.803 color rgbt <0.588, 0.592, 0.635, 0.000> color rgbt <0.608, 0.616, 0.659, 0.000>] [0.803, 1.001 color rgbt <0.608, 0.616, 0.659, 0.000> color rgbt <0.894, 0.886, 0.886, 0.000>] } } } //--------- Gray Creams & lavender tans #declare T_Grnt10 = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.154 color rgbt <0.890, 0.690, 0.690, 0.000> color rgbt <0.996, 0.835, 0.737, 0.000>] [0.154, 0.308 color rgbt <0.996, 0.835, 0.737, 0.000> color rgbt <0.745, 0.635, 0.651, 0.004>] [0.308, 0.444 color rgbt <0.745, 0.635, 0.651, 0.004> color rgbt <0.733, 0.596, 0.557, 0.004>] [0.444, 0.615 color rgbt <0.733, 0.596, 0.557, 0.004> color rgbt <0.996, 0.835, 0.737, 0.000>] [0.615, 0.803 color rgbt <0.996, 0.835, 0.737, 0.000> color rgbt <0.765, 0.616, 0.659, 0.000>] [0.803, 1.001 color rgbt <0.765, 0.616, 0.659, 0.000> color rgbt <0.890, 0.690, 0.690, 0.000>] } } } //--------- Creams & Grays Kakhi #declare T_Grnt11 = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.154 color rgbt <0.800, 0.651, 0.557, 0.000> color rgbt <0.996, 0.835, 0.737, 0.000>] [0.154, 0.308 color rgbt <0.996, 0.835, 0.737, 0.000> color rgbt <0.800, 0.651, 0.557, 0.000>] [0.308, 0.444 color rgbt <0.800, 0.651, 0.557, 0.000> color rgbt <0.694, 0.624, 0.604, 0.004>] [0.444, 0.615 color rgbt <0.694, 0.624, 0.604, 0.004> color rgbt <0.800, 0.651, 0.557, 0.000>] [0.615, 0.812 color rgbt <0.800, 0.651, 0.557, 0.000> color rgbt <0.725, 0.655, 0.651, 0.000>] [0.812, 1.001 color rgbt <0.725, 0.655, 0.651, 0.000> color rgbt <0.800, 0.651, 0.557, 0.000>] } } } //--------- Tan Cream & Red Rose #declare T_Grnt12 = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.154 color rgbt <0.996, 0.969, 0.800, 0.000> color rgbt <0.996, 0.682, 0.604, 0.000>] [0.154, 0.308 color rgbt <0.996, 0.682, 0.604, 0.000> color rgbt <0.906, 0.820, 0.714, 0.000>] [0.308, 0.444 color rgbt <0.906, 0.820, 0.714, 0.000> color rgbt <0.816, 0.631, 0.537, 0.000>] [0.444, 0.615 color rgbt <0.816, 0.631, 0.537, 0.000> color rgbt <0.890, 0.792, 0.675, 0.000>] [0.615, 0.812 color rgbt <0.890, 0.792, 0.675, 0.000> color rgbt <0.973, 0.627, 0.627, 0.000>] [0.812, 1.001 color rgbt <0.973, 0.627, 0.627, 0.000> color rgbt <0.996, 0.969, 0.800, 0.000>] } } } //--------- Cream Rose orange #declare T_Grnt13 = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.154 color rgbt <0.996, 0.824, 0.780, 0.000> color rgbt <0.996, 0.698, 0.624, 0.000>] [0.154, 0.308 color rgbt <0.996, 0.698, 0.624, 0.000> color rgbt <0.906, 0.675, 0.553, 0.000>] [0.308, 0.444 color rgbt <0.906, 0.675, 0.553, 0.000> color rgbt <0.996, 0.682, 0.604, 0.000>] [0.444, 0.615 color rgbt <0.996, 0.682, 0.604, 0.000> color rgbt <0.996, 0.824, 0.780, 0.000>] [0.615, 0.812 color rgbt <0.996, 0.824, 0.780, 0.000> color rgbt <0.973, 0.627, 0.627, 0.000>] [0.812, 1.001 color rgbt <0.973, 0.627, 0.627, 0.000> color rgbt <0.996, 0.824, 0.780, 0.000>] } } } //--------- Cream Rose & light moss & light Violet #declare T_Grnt14 = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.154 color rgbt <0.690, 0.612, 0.569, 0.000> color rgbt <0.737, 0.596, 0.522, 0.000>] [0.154, 0.368 color rgbt <0.737, 0.596, 0.522, 0.000> color rgbt <0.776, 0.702, 0.624, 0.000>] [0.368, 0.538 color rgbt <0.776, 0.702, 0.624, 0.000> color rgbt <0.796, 0.678, 0.643, 0.000>] [0.538, 0.846 color rgbt <0.796, 0.678, 0.643, 0.000> color rgbt <0.690, 0.612, 0.569, 0.000>] [0.846, 0.932 color rgbt <0.690, 0.612, 0.569, 0.000> color rgbt <0.773, 0.612, 0.569, 0.000>] [0.932, 1.001 color rgbt <0.773, 0.612, 0.569, 0.000> color rgbt <0.690, 0.612, 0.569, 0.000>] } } } //--------- Black with subtle chroma #declare T_Grnt15 = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.104 color rgbt <0.161, 0.133, 0.118, 0.000> color rgbt <0.110, 0.082, 0.071, 0.000>] [0.104, 0.252 color rgbt <0.110, 0.082, 0.071, 0.000> color rgbt <0.161, 0.133, 0.118, 0.000>] [0.252, 0.383 color rgbt <0.161, 0.133, 0.118, 0.000> color rgbt <0.000, 0.000, 0.000, 0.000>] [0.383, 0.643 color rgbt <0.000, 0.000, 0.000, 0.000> color rgbt <0.161, 0.133, 0.118, 0.000>] [0.643, 0.783 color rgbt <0.161, 0.133, 0.118, 0.000> color rgbt <0.220, 0.149, 0.137, 0.000>] [0.783, 0.922 color rgbt <0.220, 0.149, 0.137, 0.000> color rgbt <0.000, 0.000, 0.000, 0.000>] [0.922, 0.983 color rgbt <0.000, 0.000, 0.000, 0.000> color rgbt <0.220, 0.149, 0.137, 0.000>] [0.983, 1.001 color rgbt <0.220, 0.149, 0.137, 0.000> color rgbt <0.161, 0.133, 0.118, 0.000>] } } } //----- White Cream & Peach #declare T_Grnt16 = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.316 color rgbt <0.910, 0.788, 0.788, 0.000> color rgbt <0.922, 0.914, 0.871, 0.000>] [0.316, 0.453 color rgbt <0.922, 0.914, 0.871, 0.000> color rgbt <0.894, 0.867, 0.780, 0.000>] [0.453, 0.624 color rgbt <0.894, 0.867, 0.780, 0.000> color rgbt <0.784, 0.788, 0.788, 0.000>] [0.624, 0.726 color rgbt <0.784, 0.788, 0.788, 0.000> color rgbt <0.851, 0.812, 0.741, 0.000>] [0.726, 0.863 color rgbt <0.851, 0.812, 0.741, 0.000> color rgbt <0.647, 0.655, 0.655, 0.000>] [0.863, 1.001 color rgbt <0.647, 0.655, 0.655, 0.000> color rgbt <0.910, 0.788, 0.788, 0.000>] } } } //----- Bug Juice & Green #declare T_Grnt17 = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.303 color rgbt <0.000, 0.239, 0.000, 0.000> color rgbt <0.333, 0.294, 0.000, 0.000>] [0.303, 0.588 color rgbt <0.333, 0.294, 0.000, 0.000> color rgbt <0.000, 0.239, 0.341, 0.000>] [0.588, 0.790 color rgbt <0.000, 0.239, 0.341, 0.000> color rgbt <0.000, 0.020, 0.000, 0.000>] [0.790, 1.001 color rgbt <0.000, 0.020, 0.000, 0.000> color rgbt <0.000, 0.239, 0.000, 0.000>] } } } //------------ Rose & cream yellow #declare T_Grnt18 = texture { pigment {granite turbulence 0.4 color_map {[0.000, 0.202 color rgbt <1.000, 0.718, 0.541, 0.000> color rgbt <0.890, 0.651, 0.612, 0.000>] [0.202, 0.298 color rgbt <0.890, 0.651, 0.612, 0.000> color rgbt <1.000, 0.820, 0.675, 0.000>] [0.298, 0.377 color rgbt <1.000, 0.820, 0.675, 0.000> color rgbt <0.890, 0.643, 0.612, 0.000>] [0.377, 0.465 color rgbt <0.890, 0.643, 0.612, 0.000> color rgbt <0.937, 0.729, 0.561, 0.000>] [0.465, 0.544 color rgbt <0.937, 0.729, 0.561, 0.000> color rgbt <0.878, 0.604, 0.565, 0.000>] [0.544, 0.640 color rgbt <0.878, 0.604, 0.565, 0.000> color rgbt <0.984, 0.780, 0.655, 0.000>] [0.640, 0.860 color rgbt <0.984, 0.780, 0.655, 0.000> color rgbt <1.000, 0.863, 0.635, 0.000>] [0.860, 0.982 color rgbt <1.000, 0.863, 0.635, 0.000> color rgbt <1.000, 0.765, 0.620, 0.000>] [0.982, 1.001 color rgbt <1.000, 0.765, 0.620, 0.000> color rgbt <1.000, 0.718, 0.541, 0.000>] } } } //--------- Gray Marble with White feather Viens #declare T_Grnt19 = texture { pigment {granite turbulence 0.0 color_map {[0.0, 0.3 color White color DimGray] [0.3, 0.4 color DimGray color DimGray] [0.4, 0.6 color DimGray color DimGray] [0.6, 1.0 color DimGray color DimGray] } } finish { crand 0.02 } } //--------- White Marble with Gray feather Viens #declare T_Grnt20 = texture { pigment {granite turbulence 0.0 color_map {[0.0, 0.3 color Mica color White] [0.3, 0.4 color White color White] [0.4, 0.6 color White color White] [0.6, 1.0 color White color White] } } finish { crand 0.02 } } //-------- Declare Green Colors #declare g1 = color red 0.26 green 0.41 blue 0.31; //---Light Gray Green #declare g2 = color red 0.27 green 0.34 blue 0.26; //---Med Gray Green #declare g3 = color red 0.13 green 0.29 blue 0.28; //---Med Gray Aqua #declare g4 = color red 0.03 green 0.18 blue 0.08; //---Dark Green //--------- Green Jade #declare T_Grnt21 = texture { pigment {granite turbulence 0.0 color_map {[0.0, 0.1 color White transmit 0.3 color SeaGreen transmit 0.4] [0.1, 0.3 color SeaGreen transmit 0.4 color g2 transmit 0.7] [0.3, 0.5 color g2 transmit 0.7 color DarkGreen transmit 0.7] [0.5, 0.7 color DarkGreen transmit 0.7 color g4 transmit 0.7] [0.7, 0.8 color g4 transmit 0.7 color DarkGreen transmit 0.7] [0.8, 1.0 color DarkGreen transmit 0.7 color DarkGreen transmit 0.7] } } finish { crand 0.02 } } //--------- Clear with White feather Viens ----- This one does contain Transmit #declare T_Grnt22 = texture { pigment {granite turbulence 0.0 color_map {[0.0, 0.07 color White color White] [0.07, 0.2 color White color DimGray] [0.2, 0.3 color DimGray color Clear] [0.3, 0.7 color Clear color Clear] [0.7, 1.0 color Clear color DimGray] } } finish { crand 0.02 } } //---------- Light Tan to Mouve #declare T_Grnt23 = texture { pigment {marble turbulence 0.5 color_map {[0.000, 0.178 color rgbt <0.831, 0.631, 0.569, 0.000> color rgbt <0.925, 0.831, 0.714, 0.000>] [0.178, 0.356 color rgbt <0.925, 0.831, 0.714, 0.000> color rgbt <0.871, 0.702, 0.659, 0.000>] [0.356, 0.525 color rgbt <0.871, 0.702, 0.659, 0.000> color rgbt <0.831, 0.631, 0.569, 0.000>] [0.525, 0.729 color rgbt <0.831, 0.631, 0.569, 0.000> color rgbt <0.937, 0.882, 0.820, 0.000>] [0.729, 1.001 color rgbt <0.937, 0.882, 0.820, 0.000> color rgbt <0.831, 0.631, 0.569, 0.000>] } } } //--------- Light Grays #declare T_Grnt24 = texture { pigment {marble turbulence 0.6 color_map {[0.000, 0.154 color rgbt <0.894, 0.886, 0.886, 0.000> color rgbt <0.745, 0.745, 0.753, 0.000>] [0.154, 0.308 color rgbt <0.745, 0.745, 0.753, 0.000> color rgbt <0.902, 0.902, 0.859, 0.000>] [0.308, 0.444 color rgbt <0.902, 0.902, 0.859, 0.000> color rgbt <0.729, 0.706, 0.694, 0.000>] [0.444, 0.615 color rgbt <0.729, 0.706, 0.694, 0.000> color rgbt <0.588, 0.592, 0.635, 0.000>] [0.615, 0.803 color rgbt <0.588, 0.592, 0.635, 0.000> color rgbt <0.608, 0.616, 0.659, 0.000>] [0.803, 1.001 color rgbt <0.608, 0.616, 0.659, 0.000> color rgbt <0.894, 0.886, 0.886, 0.000>] } } } //------------ Moss Greens & Tan #declare T_Grnt25 = texture { pigment {marble turbulence 0.7 color_map {[0.000, 0.168 color rgbt <0.824, 0.725, 0.584, 0.000> color rgbt <0.514, 0.584, 0.533, 0.000>] [0.168, 0.301 color rgbt <0.514, 0.584, 0.533, 0.000> color rgbt <0.298, 0.376, 0.318, 0.000>] [0.301, 0.398 color rgbt <0.298, 0.376, 0.318, 0.000> color rgbt <0.263, 0.337, 0.282, 0.000>] [0.398, 0.558 color rgbt <0.263, 0.337, 0.282, 0.000> color rgbt <0.431, 0.506, 0.451, 0.000>] [0.558, 0.655 color rgbt <0.431, 0.506, 0.451, 0.000> color rgbt <0.529, 0.631, 0.471, 0.000>] [0.655, 0.735 color rgbt <0.529, 0.631, 0.471, 0.000> color rgbt <0.333, 0.376, 0.318, 0.000>] [0.735, 0.823 color rgbt <0.333, 0.376, 0.318, 0.000> color rgbt <0.298, 0.376, 0.318, 0.000>] [0.823, 0.876 color rgbt <0.298, 0.376, 0.318, 0.000> color rgbt <0.416, 0.376, 0.318, 0.000>] [0.876, 0.929 color rgbt <0.416, 0.376, 0.318, 0.000> color rgbt <0.416, 0.376, 0.318, 0.000>] [0.929, 1.001 color rgbt <0.416, 0.376, 0.318, 0.000> color rgbt <0.824, 0.725, 0.584, 0.000>] } } } //---------- Salmon with thin Green Viens #declare T_Grnt26 = texture { pigment {granite color_map {[0.000, 0.241 color rgbt <0.973, 0.973, 0.976, 0.000> color rgbt <0.973, 0.973, 0.976, 0.000>] [0.241, 0.284 color rgbt <0.973, 0.973, 0.976, 0.000> color rgbt <0.600, 0.741, 0.608, 0.000>] [0.284, 0.336 color rgbt <0.600, 0.741, 0.608, 0.000> color rgbt <0.820, 0.643, 0.537, 0.000>] [0.336, 0.474 color rgbt <0.820, 0.643, 0.537, 0.000> color rgbt <0.886, 0.780, 0.714, 0.000>] [0.474, 0.810 color rgbt <0.886, 0.780, 0.714, 0.000> color rgbt <0.996, 0.643, 0.537, 0.000>] [0.810, 0.836 color rgbt <0.996, 0.643, 0.537, 0.000> color rgbt <0.973, 0.973, 0.976, 0.000>] [0.836, 1.001 color rgbt <0.973, 0.973, 0.976, 0.000> color rgbt <0.973, 0.973, 0.976, 0.000>] } } finish { crand 0.02 } } //------ Dark Green & Browns #declare T_Grnt27 = texture { pigment {granite color_map {[0.000, 0.043 color rgbt <0.773, 0.647, 0.569, 0.000> color rgbt <0.431, 0.322, 0.227, 0.000>] [0.043, 0.113 color rgbt <0.431, 0.322, 0.227, 0.000> color rgbt <0.278, 0.282, 0.216, 0.000>] [0.113, 0.304 color rgbt <0.278, 0.282, 0.216, 0.000> color rgbt <0.278, 0.282, 0.216, 0.000>] [0.304, 0.426 color rgbt <0.278, 0.282, 0.216, 0.000> color rgbt <0.459, 0.341, 0.243, 0.000>] [0.426, 0.843 color rgbt <0.459, 0.341, 0.243, 0.000> color rgbt <0.459, 0.341, 0.243, 0.000>] [0.843, 0.878 color rgbt <0.459, 0.341, 0.243, 0.000> color rgbt <0.459, 0.341, 0.243, 0.000>] [0.878, 0.983 color rgbt <0.459, 0.341, 0.243, 0.000> color rgbt <0.278, 0.282, 0.216, 0.000>] [0.983, 1.001 color rgbt <0.278, 0.282, 0.216, 0.000> color rgbt <0.773, 0.647, 0.569, 0.000>] } } } //------- Red Swirl #declare T_Grnt28 = texture { pigment {marble turbulence 0.7 color_map {[0.000, 0.155 color rgbt <0.686, 0.235, 0.282, 0.000> color rgbt <0.686, 0.235, 0.282, 0.000>] [0.155, 0.328 color rgbt <0.686, 0.235, 0.282, 0.000> color rgbt <0.494, 0.243, 0.294, 0.000>] [0.328, 0.474 color rgbt <0.494, 0.243, 0.294, 0.000> color rgbt <0.769, 0.329, 0.373, 0.000>] [0.474, 0.647 color rgbt <0.769, 0.329, 0.373, 0.000> color rgbt <0.769, 0.329, 0.373, 0.000>] [0.647, 0.810 color rgbt <0.769, 0.329, 0.373, 0.000> color rgbt <0.686, 0.235, 0.282, 0.000>] [0.810, 0.922 color rgbt <0.686, 0.235, 0.282, 0.000> color rgbt <0.792, 0.388, 0.427, 0.000>] [0.922, 1.001 color rgbt <0.792, 0.388, 0.427, 0.000> color rgbt <0.686, 0.235, 0.282, 0.000>] } } finish { crand 0.03 } } //-------- White Tan & thin Reds #declare T_Grnt29 = texture { pigment {marble turbulence 0.5 color_map {[0.000, 0.053 color rgbt <0.784, 0.627, 0.522, 0.000> color rgbt <0.784, 0.627, 0.624, 0.000>] [0.053, 0.263 color rgbt <0.784, 0.627, 0.624, 0.000> color rgbt <0.824, 0.557, 0.376, 0.000>] [0.263, 0.281 color rgbt <0.824, 0.557, 0.376, 0.000> color rgbt <0.643, 0.380, 0.376, 0.000>] [0.281, 0.325 color rgbt <0.643, 0.380, 0.376, 0.000> color rgbt <0.839, 0.722, 0.722, 0.000>] [0.325, 0.711 color rgbt <0.839, 0.722, 0.722, 0.000> color rgbt <0.784, 0.627, 0.522, 0.000>] [0.711, 0.798 color rgbt <0.784, 0.627, 0.522, 0.000> color rgbt <0.769, 0.380, 0.376, 0.000>] [0.798, 0.895 color rgbt <0.769, 0.380, 0.376, 0.000> color rgbt <0.824, 0.557, 0.376, 0.000>] [0.895, 0.982 color rgbt <0.824, 0.557, 0.376, 0.000> color rgbt <0.784, 0.627, 0.522, 0.000>] [0.982, 1.001 color rgbt <0.784, 0.627, 0.522, 0.000> color rgbt <0.784, 0.627, 0.522, 0.000>] } } } //*************************************************************** //------------ start of textures with transmit //----- Translucent T_Grnt0 #declare T_Grnt0a = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.153 color rgbt <0.729, 0.502, 0.451, 0.306> color rgbt <0.769, 0.686, 0.592, 0.792>] [0.153, 0.398 color rgbt <0.769, 0.686, 0.592, 0.792> color rgbt <0.843, 0.753, 0.718, 0.396>] [0.398, 0.559 color rgbt <0.843, 0.753, 0.718, 0.396> color rgbt <0.780, 0.667, 0.561, 0.976>] [0.559, 0.729 color rgbt <0.780, 0.667, 0.561, 0.976> color rgbt <0.741, 0.659, 0.576, 0.820>] [0.729, 1.001 color rgbt <0.741, 0.659, 0.576, 0.820> color rgbt <0.729, 0.502, 0.451, 0.306>] } } } //----- Translucent T_Grnt1 #declare T_Grnt1a = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.212 color rgbt <0.898, 0.898, 0.851, 0.306> color rgbt <0.969, 0.980, 0.875, 0.792>] [0.212, 0.424 color rgbt <0.969, 0.980, 0.875, 0.792> color rgbt <0.859, 0.859, 0.859, 0.396>] [0.424, 0.627 color rgbt <0.859, 0.859, 0.859, 0.396> color rgbt <0.992, 0.922, 0.659, 0.976>] [0.627, 0.881 color rgbt <0.992, 0.922, 0.659, 0.976> color rgbt <0.937, 0.965, 0.902, 0.820>] [0.881, 1.001 color rgbt <0.937, 0.965, 0.902, 0.820> color rgbt <0.898, 0.898, 0.851, 0.306>] } } } //-----Translucent T_Grnt2 #declare T_Grnt2a = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.144 color rgbt <0.863, 0.757, 0.596, 0.596> color rgbt <0.925, 0.792, 0.714, 0.349>] [0.144, 0.288 color rgbt <0.925, 0.792, 0.714, 0.349> color rgbt <0.871, 0.702, 0.659, 0.784>] [0.288, 0.644 color rgbt <0.871, 0.702, 0.659, 0.784> color rgbt <0.992, 0.922, 0.659, 0.498>] [0.644, 0.983 color rgbt <0.992, 0.922, 0.659, 0.498> color rgbt <0.902, 0.812, 0.714, 0.722>] [0.983, 1.001 color rgbt <0.902, 0.812, 0.714, 0.722> color rgbt <0.863, 0.757, 0.596, 0.596>] } } } //-----Translucent T_Grnt3 #declare T_Grnt3a = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.153 color rgbt <0.831, 0.631, 0.569, 0.447> color rgbt <0.925, 0.831, 0.714, 0.678>] [0.153, 0.297 color rgbt <0.925, 0.831, 0.714, 0.678> color rgbt <0.871, 0.702, 0.659, 0.475>] [0.297, 0.441 color rgbt <0.871, 0.702, 0.659, 0.475> color rgbt <0.831, 0.631, 0.569, 0.918>] [0.441, 0.763 color rgbt <0.831, 0.631, 0.569, 0.918> color rgbt <0.937, 0.882, 0.820, 0.655>] [0.763, 1.001 color rgbt <0.937, 0.882, 0.820, 0.655> color rgbt <0.831, 0.631, 0.569, 0.447>] } } } //-----Translucent T_Grnt4 #declare T_Grnt4a = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.144 color rgbt <0.804, 0.569, 0.494, 0.569> color rgbt <0.816, 0.725, 0.537, 0.467>] [0.144, 0.449 color rgbt <0.816, 0.725, 0.537, 0.467> color rgbt <0.820, 0.580, 0.522, 0.584>] [0.449, 0.568 color rgbt <0.820, 0.580, 0.522, 0.584> color rgbt <0.882, 0.725, 0.537, 0.871>] [0.568, 0.754 color rgbt <0.882, 0.725, 0.537, 0.871> color rgbt <0.855, 0.729, 0.584, 0.816>] [0.754, 1.001 color rgbt <0.855, 0.729, 0.584, 0.816> color rgbt <0.804, 0.569, 0.494, 0.569>] } } } //-----Translucent T_Grnt5 #declare T_Grnt5a = texture { pigment {granite turbulence 0.5 color_map {[0.000, 0.178 color rgbt <0.804, 0.569, 0.494, 0.569> color rgbt <0.855, 0.729, 0.584, 0.467>] [0.178, 0.356 color rgbt <0.855, 0.729, 0.584, 0.467> color rgbt <0.667, 0.502, 0.478, 0.584>] [0.356, 0.525 color rgbt <0.667, 0.502, 0.478, 0.584> color rgbt <0.859, 0.624, 0.545, 0.871>] [0.525, 0.729 color rgbt <0.859, 0.624, 0.545, 0.871> color rgbt <0.855, 0.729, 0.584, 0.816>] [0.729, 1.001 color rgbt <0.855, 0.729, 0.584, 0.816> color rgbt <0.804, 0.569, 0.494, 0.569>] } } } //-----Translucent T_Grnt6 #declare T_Grnt6a = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.263 color rgbt <0.545, 0.380, 0.345, 0.733> color rgbt <0.588, 0.475, 0.333, 0.741>] [0.263, 0.432 color rgbt <0.588, 0.475, 0.333, 0.741> color rgbt <0.675, 0.478, 0.404, 0.545>] [0.432, 0.551 color rgbt <0.675, 0.478, 0.404, 0.545> color rgbt <0.757, 0.635, 0.522, 0.384>] [0.551, 0.720 color rgbt <0.757, 0.635, 0.522, 0.384> color rgbt <0.659, 0.549, 0.443, 0.675>] [0.720, 1.001 color rgbt <0.659, 0.549, 0.443, 0.675> color rgbt <0.545, 0.380, 0.345, 0.733>] } } } //-----Translucent T_Grnt7 #declare T_Grnt7a = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.119 color rgbt <0.439, 0.310, 0.282, 0.631> color rgbt <0.463, 0.369, 0.259, 0.847>] [0.119, 0.322 color rgbt <0.463, 0.369, 0.259, 0.847> color rgbt <0.541, 0.369, 0.298, 0.549>] [0.322, 0.449 color rgbt <0.541, 0.369, 0.298, 0.549> color rgbt <0.573, 0.424, 0.286, 0.965>] [0.449, 0.729 color rgbt <0.573, 0.424, 0.286, 0.965> color rgbt <0.494, 0.396, 0.306, 0.741>] [0.729, 1.001 color rgbt <0.494, 0.396, 0.306, 0.741> color rgbt <0.439, 0.310, 0.282, 0.631>] } } } //-----Aqua Tints #declare T_Grnt8a = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.119 color rgbt <0.310, 0.384, 0.420, 0.631> color rgbt <0.322, 0.369, 0.416, 0.847>] [0.119, 0.322 color rgbt <0.322, 0.369, 0.416, 0.847> color rgbt <0.424, 0.369, 0.420, 0.549>] [0.322, 0.449 color rgbt <0.424, 0.369, 0.420, 0.549> color rgbt <0.373, 0.424, 0.518, 0.965>] [0.449, 0.729 color rgbt <0.373, 0.424, 0.518, 0.965> color rgbt <0.482, 0.573, 0.533, 0.741>] [0.729, 1.001 color rgbt <0.482, 0.573, 0.533, 0.741> color rgbt <0.310, 0.384, 0.420, 0.631>] } } } //-----Transmit Creams With T_Cracks #declare T_Grnt9a = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.216 color rgbt <0.812, 0.812, 0.812, 0.835> color rgbt <0.745, 0.843, 0.835, 0.847>] [0.216, 0.241 color rgbt <0.745, 0.843, 0.835, 0.847> color rgbt <0.404, 0.337, 0.337, 0.463>] [0.241, 0.267 color rgbt <0.404, 0.337, 0.337, 0.463> color rgbt <0.773, 0.729, 0.745, 0.622>] [0.267, 0.759 color rgbt <0.773, 0.729, 0.745, 0.622> color rgbt <0.914, 0.843, 0.725, 0.651>] [0.759, 0.784 color rgbt <0.914, 0.843, 0.725, 0.651> color rgbt <0.153, 0.133, 0.208, 0.437>] [0.784, 0.810 color rgbt <0.153, 0.133, 0.208, 0.437> color rgbt <0.812, 0.812, 0.812, 0.835>] [0.810, 1.001 color rgbt <0.812, 0.812, 0.812, 0.835> color rgbt <0.812, 0.812, 0.812, 0.835>] } } } //--------- Transmit Cream Rose & light yellow #declare T_Grnt10a = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.179 color rgbt <0.843, 0.655, 0.655, 0.455> color rgbt <0.886, 0.769, 0.627, 0.608>] [0.179, 0.368 color rgbt <0.886, 0.769, 0.627, 0.608> color rgbt <0.906, 0.820, 0.714, 0.392>] [0.368, 0.538 color rgbt <0.906, 0.820, 0.714, 0.392> color rgbt <0.851, 0.671, 0.671, 0.659>] [0.538, 0.744 color rgbt <0.851, 0.671, 0.671, 0.659> color rgbt <0.890, 0.792, 0.675, 0.392>] [0.744, 0.983 color rgbt <0.890, 0.792, 0.675, 0.392> color rgbt <0.827, 0.612, 0.612, 0.706>] [0.983, 1.001 color rgbt <0.827, 0.612, 0.612, 0.706> color rgbt <0.843, 0.655, 0.655, 0.455>] } } } //--------- Transmit Light Grays #declare T_Grnt11a = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.154 color rgbt <0.894, 0.886, 0.886, 0.659> color rgbt <0.745, 0.745, 0.753, 0.584>] [0.154, 0.308 color rgbt <0.745, 0.745, 0.753, 0.584> color rgbt <0.902, 0.902, 0.859, 0.780>] [0.308, 0.444 color rgbt <0.902, 0.902, 0.859, 0.780> color rgbt <0.729, 0.706, 0.694, 0.686>] [0.444, 0.615 color rgbt <0.729, 0.706, 0.694, 0.686> color rgbt <0.588, 0.592, 0.635, 0.424>] [0.615, 0.803 color rgbt <0.588, 0.592, 0.635, 0.424> color rgbt <0.608, 0.616, 0.659, 0.761>] [0.803, 1.001 color rgbt <0.608, 0.616, 0.659, 0.761> color rgbt <0.894, 0.886, 0.886, 0.659>] } } } //--------- Transmit Creams & Tans #declare T_Grnt12a = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.154 color rgbt <0.890, 0.690, 0.690, 0.659> color rgbt <0.996, 0.835, 0.737, 0.659>] [0.154, 0.308 color rgbt <0.996, 0.835, 0.737, 0.659> color rgbt <0.745, 0.635, 0.651, 0.780>] [0.308, 0.444 color rgbt <0.745, 0.635, 0.651, 0.780> color rgbt <0.733, 0.596, 0.557, 0.686>] [0.444, 0.615 color rgbt <0.733, 0.596, 0.557, 0.686> color rgbt <0.996, 0.835, 0.737, 0.659>] [0.615, 0.803 color rgbt <0.996, 0.835, 0.737, 0.659> color rgbt <0.765, 0.616, 0.659, 0.761>] [0.803, 1.001 color rgbt <0.765, 0.616, 0.659, 0.761> color rgbt <0.890, 0.690, 0.690, 0.659>] } } } //--------- Transmit Creams & Grays #declare T_Grnt13a = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.154 color rgbt <0.800, 0.651, 0.557, 0.000> color rgbt <0.996, 0.835, 0.737, 0.608>] [0.154, 0.308 color rgbt <0.996, 0.835, 0.737, 0.608> color rgbt <0.800, 0.651, 0.557, 0.635>] [0.308, 0.444 color rgbt <0.800, 0.651, 0.557, 0.635> color rgbt <0.694, 0.624, 0.604, 0.294>] [0.444, 0.615 color rgbt <0.694, 0.624, 0.604, 0.294> color rgbt <0.800, 0.651, 0.557, 0.816>] [0.615, 0.812 color rgbt <0.800, 0.651, 0.557, 0.816> color rgbt <0.725, 0.655, 0.651, 0.957>] [0.812, 1.001 color rgbt <0.725, 0.655, 0.651, 0.957> color rgbt <0.800, 0.651, 0.557, 0.000>] } } } //--------- Cream Rose & light moss #declare T_Grnt14a = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.154 color rgbt <0.996, 0.969, 0.800, 0.373> color rgbt <0.996, 0.682, 0.604, 0.412>] [0.154, 0.308 color rgbt <0.996, 0.682, 0.604, 0.412> color rgbt <0.906, 0.820, 0.714, 0.616>] [0.308, 0.444 color rgbt <0.906, 0.820, 0.714, 0.616> color rgbt <0.816, 0.631, 0.537, 0.443>] [0.444, 0.615 color rgbt <0.816, 0.631, 0.537, 0.443> color rgbt <0.890, 0.792, 0.675, 0.745>] [0.615, 0.812 color rgbt <0.890, 0.792, 0.675, 0.745> color rgbt <0.973, 0.627, 0.627, 0.600>] [0.812, 1.001 color rgbt <0.973, 0.627, 0.627, 0.600> color rgbt <0.996, 0.969, 0.800, 0.373>] } } } //--------- Transmit Sand & light Orange #declare T_Grnt15a = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.154 color rgbt <0.996, 0.824, 0.780, 0.412> color rgbt <0.996, 0.698, 0.624, 0.412>] [0.154, 0.308 color rgbt <0.996, 0.698, 0.624, 0.412> color rgbt <0.906, 0.675, 0.553, 0.616>] [0.308, 0.444 color rgbt <0.906, 0.675, 0.553, 0.616> color rgbt <0.996, 0.682, 0.604, 0.412>] [0.444, 0.615 color rgbt <0.996, 0.682, 0.604, 0.412> color rgbt <0.996, 0.824, 0.780, 0.412>] [0.615, 0.812 color rgbt <0.996, 0.824, 0.780, 0.412> color rgbt <0.973, 0.627, 0.627, 0.600>] [0.812, 1.001 color rgbt <0.973, 0.627, 0.627, 0.600> color rgbt <0.996, 0.824, 0.780, 0.412>] } } } //--------- Cream Rose & light moss #declare T_Grnt16a = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.078 color rgbt <0.769, 0.722, 0.690, 0.180> color rgbt <0.745, 0.690, 0.655, 1.000>] [0.078, 0.96 color rgbt <0.745, 0.690, 0.655, 1.000> color rgbt <0.839, 0.804, 0.780, 1.000>] [0.96, 1.001 color rgbt <0.839, 0.804, 0.780, 0.278> color rgbt <0.769, 0.722, 0.690, 0.180>] } } } #declare T_Grnt17a = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.034 color rgbt <0.027, 0.012, 0.012, 0.000> color rgbt <0.851, 0.812, 0.741, 0.235>] [0.034, 0.342 color rgbt <0.851, 0.812, 0.741, 0.235> color rgbt <0.792, 0.694, 0.690, 0.839>] [0.342, 0.462 color rgbt <0.792, 0.694, 0.690, 0.839> color rgbt <0.631, 0.506, 0.471, 0.608>] [0.462, 0.632 color rgbt <0.631, 0.506, 0.471, 0.608> color rgbt <0.851, 0.812, 0.741, 0.922>] [0.632, 0.983 color rgbt <0.851, 0.812, 0.741, 0.922> color rgbt <0.647, 0.655, 0.655, 0.282>] [0.983, 1.001 color rgbt <0.647, 0.655, 0.655, 0.282> color rgbt <0.027, 0.012, 0.012, 0.000>] } } } #declare T_Grnt18a = texture { pigment {granite turbulence 0.6 color_map {[0.000, 0.128 color rgbt <0.820, 0.580, 0.580, 0.000> color rgbt <0.851, 0.812, 0.741, 0.235>] [0.128, 0.282 color rgbt <0.851, 0.812, 0.741, 0.235> color rgbt <0.792, 0.694, 0.690, 0.282>] [0.282, 0.393 color rgbt <0.792, 0.694, 0.690, 0.282> color rgbt <0.647, 0.655, 0.655, 0.133>] [0.393, 0.590 color rgbt <0.647, 0.655, 0.655, 0.133> color rgbt <0.851, 0.812, 0.741, 0.333>] [0.590, 0.983 color rgbt <0.851, 0.812, 0.741, 0.333> color rgbt <0.647, 0.655, 0.655, 0.282>] [0.983, 1.001 color rgbt <0.647, 0.655, 0.655, 0.282> color rgbt <0.820, 0.580, 0.580, 0.000>] } } } //--------- Gray Marble with White feather Viens with Transmit #declare T_Grnt19a = texture { pigment {granite turbulence 0.0 color_map {[0.0, 0.3 color White transmit 0.0 color DimGray transmit 0.5] [0.3, 0.4 color DimGray transmit 0.5 color DimGray transmit 0.8] [0.4, 1.0 color DimGray transmit 0.8 color DimGray transmit 0.9] } } finish { crand 0.02 } } //--------- White Feature Viens #declare T_Grnt20a = texture { pigment {granite turbulence 0.0 color_map {[0.0, 0.2 color White transmit 0.0 color White transmit 0.7] [0.2, 0.3 color White transmit 0.7 color Clear] [0.3, 1.0 color Clear color Clear] } } finish { crand 0.02 } } //--------- Thinner White Feature Viens #declare T_Grnt21a = texture { pigment {granite turbulence 0.0 color_map {[0.0, 0.2 color White transmit 0.4 color White transmit 0.8] [0.2, 0.3 color White transmit 0.8 color Clear] [0.3, 1.0 color Clear color Clear] } } finish { crand 0.02 } } #declare T_Grnt22a = texture { pigment {granite turbulence 0.5 color_map {[0.000, 0.175 color rgbt <1.000, 0.718, 0.541, 0.890> color rgbt <0.843, 0.678, 0.655, 0.753>] [0.175, 0.228 color rgbt <0.843, 0.678, 0.655, 0.753> color rgbt <0.906, 0.831, 0.773, 0.98>] [0.228, 0.386 color rgbt <0.906, 0.831, 0.773, 0.698> color rgbt <0.992, 0.718, 0.545, 0.794>] [0.386, 0.412 color rgbt <0.992, 0.718, 0.545, 0.794> color rgbt <0.333, 0.188, 0.067, 0.784>] [0.412, 0.439 color rgbt <0.333, 0.188, 0.067, 0.784> color rgbt <0.925, 0.557, 0.514, 0.778>] [0.439, 0.684 color rgbt <0.925, 0.557, 0.514, 0.678> color rgbt <0.984, 0.780, 0.655, 0.696>] [0.684, 0.781 color rgbt <0.984, 0.780, 0.655, 0.696> color rgbt <0.965, 0.847, 0.675, 0.880>] [0.781, 0.982 color rgbt <0.965, 0.847, 0.675, 0.880> color rgbt <1.000, 0.718, 0.541, 0.990>] [0.982, 1.001 color rgbt <1.000, 0.718, 0.541, 0.890> color rgbt <1.000, 0.718, 0.541, 0.890>] } } } //---------- Transparent Green Moss Colors #declare T_Grnt23a = texture { pigment {granite color_map {[0.000, 0.168 color rgbt <0.824, 0.725, 0.584, 0.600> color rgbt <0.514, 0.584, 0.533, 0.600>] [0.168, 0.301 color rgbt <0.514, 0.584, 0.533, 0.600> color rgbt <0.298, 0.376, 0.318, 0.600>] [0.301, 0.398 color rgbt <0.298, 0.376, 0.318, 0.600> color rgbt <0.263, 0.337, 0.282, 0.700>] [0.398, 0.558 color rgbt <0.263, 0.337, 0.282, 0.700> color rgbt <0.431, 0.506, 0.451, 0.600>] [0.558, 0.655 color rgbt <0.431, 0.506, 0.451, 0.600> color rgbt <0.529, 0.631, 0.471, 0.500>] [0.655, 0.735 color rgbt <0.529, 0.631, 0.471, 0.500> color rgbt <0.333, 0.376, 0.318, 0.700>] [0.735, 0.823 color rgbt <0.333, 0.376, 0.318, 0.700> color rgbt <0.298, 0.376, 0.318, 0.600>] [0.823, 0.876 color rgbt <0.298, 0.376, 0.318, 0.600> color rgbt <0.416, 0.376, 0.318, 0.500>] [0.876, 0.929 color rgbt <0.416, 0.376, 0.318, 0.500> color rgbt <0.416, 0.376, 0.318, 0.600>] [0.929, 1.001 color rgbt <0.416, 0.376, 0.318, 0.600> color rgbt <0.824, 0.725, 0.584, 0.700>] } } } #declare T_Grnt24a = texture { pigment {granite turbulence 0.5 color_map {[0.000, 0.053 color rgbt <0.784, 0.627, 0.522, 0.500> color rgbt <0.784, 0.627, 0.624, 0.500>] [0.053, 0.263 color rgbt <0.784, 0.627, 0.624, 0.500> color rgbt <0.824, 0.557, 0.376, 0.500>] [0.263, 0.281 color rgbt <0.824, 0.557, 0.376, 0.500> color rgbt <0.643, 0.380, 0.376, 0.500>] [0.281, 0.325 color rgbt <0.643, 0.380, 0.376, 0.500> color rgbt <0.839, 0.722, 0.722, 0.500>] [0.325, 0.711 color rgbt <0.839, 0.722, 0.722, 0.500> color rgbt <0.784, 0.627, 0.522, 0.500>] [0.711, 0.798 color rgbt <0.784, 0.627, 0.522, 0.500> color rgbt <0.769, 0.380, 0.376, 0.500>] [0.798, 0.895 color rgbt <0.769, 0.380, 0.376, 0.500> color rgbt <0.824, 0.557, 0.376, 0.500>] [0.895, 0.982 color rgbt <0.824, 0.557, 0.376, 0.500> color rgbt <0.784, 0.627, 0.522, 0.500>] [0.982, 1.001 color rgbt <0.784, 0.627, 0.522, 0.500> color rgbt <0.784, 0.627, 0.522, 0.500>] } } } /*--------------------T_Crack & OverTint /Red---------------------*/ #declare T_Crack1 = texture { pigment {marble turbulence 0.85 color_map {[0.0, 0.04 color Black transmit 0.6 color Black transmit 1.0] [0.04, 0.97 color Scarlet transmit 0.80 color DimGray transmit 0.90] [0.97, 1.001 color Black transmit 0.9 color Black transmit 1.0] } } } //-----Transmit Dark T_Cracks #declare T_Crack2 = texture { pigment {granite turbulence 0.8 color_map {[0.0, 0.5 color Clear color Clear] [0.5, 0.54 color Clear color Black] [0.54, 1.0 color Clear color Clear] } } } //---------- Overtint Green with Black T_Cracks #declare T_Crack3 = texture { pigment {marble turbulence 0.85 color_map {[0.0, 0.04 color Black transmit 0.6 color Black transmit 1.0] [0.04, 0.97 color DarkGreen transmit 0.80 color DarkGreen transmit 0.90] [0.97, 1.001 color Black transmit 0.9 color Black transmit 1.0] } } } //--------- Overtint with White T_Crack #declare T_Crack4 = texture { pigment {marble turbulence 0.85 color_map {[0.0, 0.03 color White transmit 0.3 color White transmit 1.0] [0.03, 0.97 color Black transmit 0.70 color DimGray transmit 0.90] [0.97, 1.001 color White transmit 0.9 color White transmit 1.0] } } } //----------------- complete texture statements // Scaled to cover nicely over a 2 unit Cube //------------- Deep Rose & Green Marble with large White Swirls #declare T_Stone1 = texture{T_Grnt7 scale <2, 3, 2> rotate <0, 0, 40>} texture{T_Grnt0a scale <2, 3, 2> rotate <0, 0,-30> finish{phong 1 phong_size 90} } //------------- Light Greenish Tan Marble with Agate style veining #declare T_Stone2 = texture{T_Grnt0 scale <2, 3, 2> rotate <0, 0, 40>} texture{T_Grnt7a scale <1.3, 2, 1.3> rotate <0, 0, -30> rotate <40, 0, 0> finish{phong 1.0 phong_size 90 ambient 0.2 } } //------------- Rose & Yellow Marble with fog white veining #declare T_Stone3 = texture{T_Grnt5 scale <2, 3, 2> rotate <0, 0, 40>} texture{T_Grnt0a scale <2, 3, 2> rotate <0, 0, -30> finish{phong 1.0 phong_size 90} } //------------- Tan Marble with Rose patches #declare T_Stone4 = texture{T_Grnt6 scale <1.5, 3, 2> rotate <0, 0, 40> finish{diffuse 0.5} } texture{T_Grnt10a scale <1, 3, 2> rotate <0, 0, -30> finish{phong 1.0 phong_size 90} } //------------- White Cream Marble with Pink veining #declare T_Stone5 = texture{T_Grnt12 scale <2, 3, 2> rotate <0, 0, 40>} texture{T_Grnt17a scale <2, 3, 2> rotate <0, 0, -30>} texture{T_Crack1 scale <1, 2, 1.4> rotate <10, 0, -20> finish{phong 1.0 phong_size 90 ambient 0.2} } //------------- Rose & Yellow Cream Marble #declare T_Stone6 = texture{T_Grnt18 scale <1.5, 3, 3> rotate <0, 0, 40>} texture{T_Grnt19 scale <2, 4, 1.3> rotate <0, 0, 30> finish{phong 1.0 phong_size 90} } texture{T_Crack1 scale <1, 2, 1.4> rotate <10, 0, -20> finish{phong 1.0 phong_size 90 ambient 0.2} } //------------- Light Coffee Marble with darker patches #declare T_Stone7 = texture{pigment{color Salmon}} texture{T_Grnt6a scale <1, 3, 2> rotate <0, 0, 40>} texture{T_Grnt9a scale <3.5, 5, 4> rotate <0, 0, 60> finish{phong 1.0 phong_size 90} } //------------- Gray Granite with white patches #declare T_Stone8 = texture{pigment{color White} finish{ambient 0.4 crand 0.06 diffuse 0.7} } texture{T_Grnt0a scale <2, 3, 2> rotate <0, 0, -30>} texture{T_Grnt9a scale <5, 3, 4> rotate <0, 0, 40> finish{phong 1.0 ambient 0.2 diffuse 0.5 phong_size 90} } //------------- White & Light Blue Marble with light violets #declare T_Stone9 = texture{T_Grnt9 scale <1.2, 2.4, 1.2> rotate <0, 0, -30> rotate <40, 0, 0>} texture{T_Crack1 scale <1, 2, 1.4> rotate <10, 0, -20> finish{phong 1.0 phong_size 90 ambient 0.2} } //------------- Dark Brown & Tan swirl Granite with gray undertones #declare T_Stone10 = texture{pigment{color Black}} texture{T_Grnt17a scale <3, 6, 2> rotate <0, 0, 50>} texture{T_Grnt3a scale <1, 2, 1> rotate <0, 0, -50> finish{phong 1.0 phong_size 90} } //------------- Rose & White Marble with dark tan swirl #declare T_Stone11 = texture{pigment{color Black}} texture{T_Grnt15a scale <1.2, 3, 1.5> rotate <70, 0, 30> finish{crand 0.03} } texture{T_Grnt2a scale <3, 3, 4> rotate <0, 0, 40>} texture{T_Crack1 scale <1, 2, 1.4> rotate <10, 0, -20> finish{phong 1.0 phong_size 90} } //------------- White & Pinkish Tan Marble #declare T_Stone12 = texture{T_Grnt23 scale <1, 5, 1> rotate <0, 0, 50> finish{ambient 0.2 crand 0.03} } texture{T_Grnt0a scale <1, 3, 2> rotate <0, 0, -30> finish{phong 1.0 phong_size 90} } //------------- Medium Gray Blue Marble #declare T_Stone13 = texture{T_Grnt24 scale <2, 5, 2> rotate <0, 0, 50> finish{ambient 0.2 crand 0.03} } texture{T_Grnt8a scale <1, 3, 2> rotate <0, 0, -30> finish{phong 1.0 phong_size 90} } //------------- Tan & Olive Marble with gray white veins #declare T_Stone14 = texture{T_Grnt6 scale <2, 3, 2> rotate <0, 0, -30> finish{ambient 0.2 diffuse 0.9 crand 0.03} } texture{T_Grnt19a scale <1, 3, 1> rotate <0, 0, 40> finish{phong 1.0 phong_size 90} } //------------- Deep Gray Marble with white veining #declare T_Stone15 = texture{T_Grnt20 scale <1, 2, 2> rotate <0, 0, -30> finish{ambient 0.2 diffuse 0.9 crand 0.03} } texture{T_Grnt8a scale <1, 2, 1> rotate <0, 0, 40> finish{phong 1.0 phong_size 90} } //------------- Peach & Yellow Marble with white veining #declare T_Stone16 = texture{T_Grnt18 scale <1.3, 2, 2> rotate <0, 0, -30> finish{ambient 0.2 diffuse 0.9 crand 0.03} } texture{T_Grnt19 scale <2, 4, 2> rotate <0, 0, -30> finish{ambient 0.2 diffuse 0.9 crand 0.03} } texture{T_Grnt20a scale <1, 2, 1> rotate <0, 0, 40> finish{phong 1.0 phong_size 90} } //------------- White Marble with gray veining #declare T_Stone17 = texture{T_Grnt20 scale <1, 2, 2> rotate <0, 0, -30> finish{ambient 0.2 diffuse 0.9 crand 0.03} } //texture{T_Grnt8a scale <2.5, 4.5, 3.5> rotate <0, 0, 40> // finish{phong 1.0 phong_size 90} //} texture{T_Crack3 scale <1, 2, 1.4> rotate <10, 0, -20> finish{phong 1.0 phong_size 90} } //------------- Green Jade with white veining #declare T_Stone18 = texture{pigment{color SeaGreen} finish{ambient 0.3 diffuse 0.6 crand 0.03} } texture{T_Grnt22 scale <1.5, 0.7, 0.5> rotate <0, 0, 40>} texture{T_Grnt20a scale <2.5, 2, 0.5> rotate <0, 0, -50>} texture{T_Crack4 scale <0.7, 1, 1> rotate <10, 0, -20> finish{phong 1.0 phong_size 90} } //------------- Peach Granite with white patches & green trim #declare T_Stone19 = texture{T_Grnt26 scale <1, 0.7, 0.5> rotate <0, 0, 40>} texture{T_Grnt20a scale <2, 3, 1> rotate <10, 0, -20> finish{phong 1.0 phong_size 90} } //------------- Brown & Olive Marble with white veining #declare T_Stone20 = texture{T_Grnt27 scale <0.7, 0.99, 0.7> rotate <0, 0, 40>} texture{T_Grnt12a scale <1, 1.3, 2> rotate <0, 0, 40>} texture{T_Grnt20a scale <1.9, 3, 0.5> rotate <0, 0, -50>} texture{T_Crack1 scale <1, 0.6, 1> rotate <10, 0, -20> finish{phong 1.0 phong_size 90} } //------------- Red Marble with gray & white veining #declare T_Stone21 = texture{T_Grnt28 scale <1.3, 2.5, 1.7> rotate <0, 0, 40>} texture{T_Grnt22 scale <1, 2, 2> rotate <0, 0, 40>} texture{T_Crack4 scale <1, 0.6, 1> rotate <10, 0, -20> finish{phong 1.0 phong_size 90} } //------------- Dark Tan Marble with gray & white veining #declare T_Stone22 = texture{pigment{color Feldspar}} texture{T_Grnt8a scale <1, 2, 2> rotate <0, 0, 40>} texture{T_Grnt22 scale <2, 4, 1.5> rotate <0, 0, -50>} texture{T_Crack4 scale <1, 1, 1> rotate <10, 0, -40> finish{phong 1.0 phong_size 90} } //------------- Peach & Cream Marble with orange veining #declare T_Stone23 = texture{T_Grnt29 scale <1, 1, 2> rotate <40, 0, 0> rotate <0, 0, 30>} texture{T_Grnt24a scale <2, 1, 2> rotate <40, 0, 0> rotate <0, 0, 30>} texture{T_Crack1 scale <1, 2, 1.5> rotate <0, 0, 40>} texture{pigment{color Yellow transmit 0.9} finish{phong 1.0 phong_size 90} // tint to liking } //------------- Green & Tan Moss Marble #declare T_Stone24 = texture{T_Grnt25 scale <1, 1, 2> rotate <0, 0, 50> rotate <20, 0, 30>} texture{T_Grnt23a scale <2, 1, 2> rotate <40, 0, 0> rotate <0, 0, -30>} texture{pigment{color Gray transmit 0.8} finish{phong 1.0 phong_size 90} // tint to liking } #version Stones1_Inc_Temp; #end // Persistence of Vision Ray Tracer version 3.5 Include File // File: stones2.inc // Last updated: 2001.7.24 // Description: Stone textures. #ifndef(Stones2_Inc_Temp) #declare Stones2_Inc_Temp = version; #version 3.5; #ifdef(View_POV_Include_Stack) #debug "including stones2.inc\n" #end /* This file was modified July 2001 to work as it should with POV-Ray 3.5, all filters being changed to transmits*/ /* Persistence of Vision Raytracer Version 3.1 T_Stone25 through T_Stone35 created by Dan Farmer, 1995 T_Stone36 through T_Stone43 created by Paul Novak, 1995 T_Stone44 by Dan Farmer 1995 */ #declare T_Stone25 = texture { pigment { crackle turbulence 0.3 lambda 2.5 omega 0.75 octaves 5 scale 0.45 rotate <0, 5, 60> color_map { [0.02 color rgbt <0.30, 0.60, 0.45, 0.0> ] [0.06 color rgbt <0.35, 0.55, 0.40, 0.0> ] [0.10 color rgbt <0.25, 0.25, 0.20, 0.0> ] [1.00 color rgbt <0.75, 0.75, 0.60, 0.0> ] } } } texture { pigment { crackle turbulence 0.2 lambda 2.5 omega 0.75 octaves 5 scale 0.65 rotate <0, 45, 60> color_map { [0.02 color rgbt <0.30, 0.60, 0.45, 0.95> ] [0.06 color rgbt <0.35, 0.55, 0.40, 0.75> ] [0.10 color rgbt <0.25, 0.25, 0.20, 0.65> ] [1.00 color rgbt <0.75, 0.75, 0.60, 0.60> ] } } } texture { pigment { crackle turbulence 0.2 lambda 2.5 omega 0.75 octaves 5 scale 0.15 rotate <30, 30, 30> color_map { [0.00 color rgbt <0.95, 0.95, 0.95, 0.30> ] [0.03 color rgbt <0.85, 0.85, 0.85, 0.60> ] [0.06 color rgbt <0.50, 0.50, 0.50, 0.90> ] [0.10 color rgbt <1.00, 1.00, 1.00, 1.00> ] } } } #declare T_Stone26 = texture { pigment { granite rotate y*90 color_map { [0.02 color rgbt <0.25, 0.45, 0.60, 0.0> ] [0.06 color rgbt <0.20, 0.40, 0.55, 0.0> ] [0.10 color rgbt <0.15, 0.20, 0.25, 0.0> ] [1.00 color rgbt <0.40, 0.60, 0.75, 0.0> ] } frequency 6 rotate <0, 10, 0> turbulence <0.05, 0.05, 0.05> octaves 6 omega 0.7 lambda 2 } } texture { pigment { gradient x color_map { [0.00 color Clear ] [0.10 color rgbt <1.00, 1.00, 1.00, 0.75> ] [0.15 color rgbt <0.15, 0.25, 0.40, 0.50> ] [0.20 color rgbt <0.00, 0.05, 0.10, 0.25> ] [0.25 color rgbt <0.15, 0.25, 0.40, 0.25> ] [0.30 color rgbt <0.35, 0.55, 0.40, 0.50> ] [0.35 color rgbt <0.25, 0.25, 0.20, 0.75> ] [0.35 color Clear ] } frequency 3 rotate <1, 10, 45> rotate x*60 turbulence <0.30, 0.30, 0.30> octaves 6 omega 0.7 lambda 2.2 } } texture { pigment { agate color_map { [0.00 color Clear ] [0.10 color rgbt <1.00, 1.00, 1.00, 0.75> ] [0.15 color rgbt <0.35, 0.55, 0.40, 0.50> ] [0.20 color rgbt <0.25, 0.25, 0.20, 0.25> ] [0.25 color rgbt <0.30, 0.60, 0.45, 0.25> ] [0.30 color rgbt <0.35, 0.55, 0.40, 0.50> ] [0.35 color rgbt <0.25, 0.25, 0.20, 0.75> ] [0.35 color Clear ] } frequency 3 rotate <2, 10, 75> rotate x*120 turbulence <0.05, 0.05, 0.05> octaves 6 omega 0.7 lambda 2 } } #declare T_Stone27 = texture { pigment { crackle turbulence 0.35 lambda 2.5 omega 0.75 octaves 5 scale 0.5 frequency 3 rotate <0, -45, 30> color_map { [0.02 color rgbt <0.25, 0.45, 0.60, 0.0> ] [0.06 color rgbt <0.20, 0.40, 0.55, 0.0> ] [0.10 color rgbt <0.05, 0.10, 0.15, 0.0> ] [1.00 color rgbt <0.40, 0.60, 0.75, 0.0> ] } } } texture { pigment { crackle turbulence 0.1 lambda 2.5 omega 0.75 octaves 5 scale 0.45 frequency 1 phase 0.25 rotate <0, 45, 60> color_map { [0.00 color Clear ] [0.20 color rgbt <1.00, 1.00, 1.00, 0.75> ] [0.25 color rgbt <0.25, 0.45, 0.40, 0.50> ] [0.30 color rgbt <0.00, 0.00, 0.00, 0.00> ] [0.35 color rgbt <0.15, 0.75, 0.60, 0.50> ] [0.40 color rgbt <0.35, 0.85, 0.40, 0.60> ] [0.45 color rgbt <0.35, 0.45, 0.20, 0.75> ] [0.65 color Clear ] } } } texture { pigment { crackle turbulence 0.35 lambda 2.5 omega 0.75 octaves 5 scale 2 frequency 2 rotate <0, 90, 0> color_map { [0.00 color Clear ] [0.20 color rgbt <1.00, 1.00, 1.00, 0.75> ] [0.25 color rgbt <0.35, 0.55, 0.40, 0.50> ] [0.30 color rgbt <0.00, 0.00, 0.00, 0.00> ] [0.45 color rgbt <0.30, 0.60, 0.45, 0.25> ] [0.50 color rgbt <0.35, 0.55, 0.40, 0.50> ] [0.65 color rgbt <0.25, 0.25, 0.20, 0.75> ] [0.65 color Clear ] } } } #declare T_Stone28 = texture { pigment { agate agate_turb 0.75 frequency 6 scale 0.5 rotate <0, -45, 5> color_map { [0.02 color rgbt <0.65, 0.45, 0.25, 0.0> ] [0.06 color rgbt <0.55, 0.40, 0.20, 0.0> ] [0.10 color rgbt <0.15, 0.10, 0.05, 0.0> ] [1.00 color rgbt <0.75, 0.60, 0.40, 0.0> ] } } } texture { pigment { crackle turbulence 0.1 lambda 2.5 omega 0.75 octaves 5 scale 0.75 frequency 1 phase 0.25 rotate <0, 45, 60> color_map { [0.00 color Clear ] [0.25 color rgbt <0.40, 0.25, 0.15, 0.50> ] [0.30 color rgbt <0.00, 0.00, 0.00, 0.00> ] [0.35 color rgbt <0.40, 0.25, 0.15, 0.50> ] [0.40 color rgbt <0.45, 0.55, 0.35, 0.60> ] [0.65 color Clear ] } } } texture { pigment { crackle turbulence 0.1 lambda 2.5 omega 0.75 octaves 5 scale 0.45 frequency 2 phase 0.25 rotate <0, 5, 60> color_map { [0.00 color Clear ] [0.25 color rgbt <0.65, 0.25, 0.40, 0.50> ] [0.30 color rgbt <0.00, 0.00, 0.00, 0.00> ] [0.45 color rgbt <0.50, 0.60, 0.35, 0.25> ] [0.50 color rgbt <0.65, 0.25, 0.40, 0.50> ] [0.65 color Clear ] } } } #declare T_Stone29 = texture { pigment { gradient x turbulence 0.75 frequency 6 scale 0.5 rotate <0, -45, 30> color_map { [0.02 color rgb <0.65, 0.35, 0.25> ] [0.06 color rgb <0.55, 0.25, 0.10> ] [0.10 color rgb <0.45, 0.30, 0.25> ] [1.00 color rgb <0.65, 0.35, 0.25> ] } } } texture { pigment { crackle turbulence 0.6 lambda 1.75 omega 0.55 octaves 4 scale 0.45 rotate <0, 5, 60> color_map { [0.01 color rgbt <0.00, 0.00, 0.00, 0.00> ] [0.02 color rgbt <0.40, 0.25, 0.15, 0.20> ] [0.05 color rgbt <0.40, 0.35, 0.20, 0.40> ] [0.10 color rgbt <0.45, 0.55, 0.25, 0.60> ] [0.65 color Clear ] } } } texture { pigment { granite turbulence 0.1 lambda 2.5 omega 0.75 octaves 5 scale 0.75 frequency 1 phase 0.25 rotate <0, 45, 60> color_map { [0.15 color rgbt <0.40, 0.25, 0.15, 0.40> ] [0.20 color rgbt <0.20, 0.10, 0.00, 0.00> ] [0.25 color rgbt <0.20, 0.15, 0.15, 0.40> ] [0.30 color rgbt <0.40, 0.25, 0.15, 0.70> ] [0.65 color Clear ] } } } #declare T_Stone30 = texture { pigment { gradient x turbulence 0.75 frequency 6 scale 0.5 rotate <0, -45, 30> color_map { [0.02 color rgbt <0.85, 0.85, 0.45, 0.0> ] [0.06 color rgbt <0.65, 0.65, 0.40, 0.0> ] [0.10 color rgbt <0.90, 0.90, 0.65, 0.0> ] [1.00 color rgbt <0.85, 0.85, 0.45, 0.0> ] } } } texture { pigment { crackle turbulence 0.3 lambda 2.5 omega 0.75 octaves 5 scale 0.45 frequency 2 phase 0.25 rotate <0, 5, 60> color_map { [0.00 color Clear ] [0.25 color rgbt <0.40, 0.40, 0.15, 0.50> ] [0.30 color rgbt <0.00, 0.00, 0.00, 0.00> ] [0.35 color rgbt <0.40, 0.40, 0.20, 0.50> ] [0.40 color rgbt <0.65, 0.65, 0.30, 0.60> ] [0.65 color Clear ] } } } texture { pigment { crackle turbulence 0.1 lambda 2.5 omega 0.75 octaves 5 scale 0.75 frequency 1 phase 0.25 rotate <0, 45, 60> color_map { [0.00 color Clear ] [0.15 color rgbt <0.40, 0.15, 0.45, 0.60> ] [0.18 color rgbt <0.20, 0.10, 0.00, 0.00> ] [0.25 color rgbt <0.20, 0.15, 0.45, 0.60> ] [0.30 color rgbt <0.40, 0.15, 0.45, 0.80> ] [0.65 color Clear ] } } } #declare T_Stone31 = texture { pigment { crackle turbulence 0.3 lambda 2.5 omega 0.75 octaves 5 scale 0.45 rotate <0, 5, 60> color_map { [0.00 color Gray90 ] [0.02 color rgb <0.95, 0.90, 0.85> ] [0.03 color rgb <0.75, 0.85, 0.80> ] [0.04 color rgb <0.45, 0.40, 0.50> ] [0.10 color Gray15 ] } } } texture { pigment { crackle turbulence 0.2 lambda 2.5 omega 0.75 octaves 5 scale 0.65 rotate <0, 45, 60> color_map { [0.00 color Clear ] [0.02 color rgb <0.95, 0.90, 0.85> ] [0.03 color rgb <0.75, 0.85, 0.80> ] [0.04 color rgb <0.45, 0.40, 0.50> ] [0.10 color Clear ] } } } #declare T_Stone32 = texture { pigment { crackle turbulence 0.3 lambda 2.5 omega 0.75 octaves 5 scale 0.45 rotate <0, 5, 60> color_map { [0, 1 color rgb <0.9, 0.75, 0.75> color rgb <0.6, 0.6, 0.6> ] } } } texture { pigment { crackle turbulence 0.2 lambda 2.5 omega 0.75 octaves 5 scale 0.65 rotate <0, 45, 60> color_map { [0.0, 0.9 color rgbt <0.52, 0.39, 0.39, 1.0> color rgbt <0.52, 0.39, 0.39, 0.5>] [0.9, 1.0 color rgbt <0.42, 0.14, 0.55, 0.0> color rgbt <0.42, 0.14, 0.55, 0.0>] } } } texture { pigment { crackle turbulence 0.2 lambda 2.5 omega 0.75 octaves 5 scale 0.15 rotate <30, 30, 30> color_map { [0.00 color rgbt <0.95, 0.95, 0.95, 0.30> ] [0.03 color rgbt <0.85, 0.85, 0.85, 0.60> ] [0.06 color rgbt <0.50, 0.50, 0.50, 0.90> ] [0.10 color rgbt <1.00, 1.00, 1.00, 1.00> ] } } } #declare T_Stone33 = texture { pigment { crackle turbulence 0.3 lambda 2.5 omega 0.75 octaves 5 scale 0.45 rotate <0, 5, 60> color_map { [0.0, 0.1 color rgb <0.0, 0.0, 0.0> color rgb <0.9, 0.7, 0.6>] [0.1, 0.3 color rgb <0.9, 0.7, 0.6> color rgb <0.9, 0.7, 0.4>] [0.3, 1.0 color rgb <0.9, 0.7, 0.4> color rgb <0.7, 0.4, 0.2>] } } } texture { pigment { crackle turbulence 0.2 lambda 2.5 omega 0.75 octaves 5 scale 0.65 rotate <0, 45, 60> color_map { [0.0, 0.2 color rgbt <0.7, 0.4, 0.2, 0.20> color rgbt <0.9, 0.7, 0.6, 0.30>] [0.2, 0.3 color rgbt <0.9, 0.7, 0.6, 0.50> color rgbt <0.9, 0.7, 0.4, 0.70>] [0.3, 1.0 color rgbt <0.9, 0.7, 0.4, 0.80> color rgbt <0.7, 0.4, 0.2, 0.80>] } } } #declare T_Stone34 = texture { pigment { gradient x turbulence 0.75 frequency 6 scale 0.5 rotate <0, -45, 30> color_map { [0.02 color rgbt <0.85, 0.85, 0.85, 0.0> ] [0.10 color rgbt <1.00, 1.00, 1.00, 0.0> ] [1.00 color rgbt <0.85, 0.85, 0.85, 0.0> ] } } } texture { pigment { crackle turbulence 0.3 lambda 2.5 omega 0.75 octaves 5 scale 0.45 frequency 2 phase 0.25 rotate <0, 5, 60> color_map { [0.00 color Clear ] [0.15 color rgbt <0.40, 0.30, 0.30, 0.50> ] [0.30 color rgbt <0.15, 0.08, 0.02, 0.00> ] [0.35 color rgbt <0.60, 0.40, 0.35, 0.50> ] [0.45 color rgbt <0.40, 0.35, 0.30, 0.60> ] [0.65 color Clear ] } } } // White marble #declare T_Stone35 = texture { pigment { gradient x turbulence 0.75 frequency 6 scale 0.5 rotate <0, -45, 30> color_map { [0.02 color rgbt <0.85, 0.85, 0.85, 0.0> ] [0.10 color rgbt <1.00, 1.00, 1.00, 0.0> ] [1.00 color rgbt <0.85, 0.85, 0.85, 0.0> ] } } } texture { pigment { crackle turbulence 0.3 lambda 2.5 omega 0.75 octaves 5 scale 0.45 frequency 2 phase 0.25 rotate <0, 5, 60> color_map { [0.00 color Clear ] [0.15 color rgbt <0.40, 0.30, 0.30, 0.50> ] [0.30 color rgbt <0.15, 0.08, 0.02, 0.00> ] [0.35 color rgbt <0.60, 0.40, 0.35, 0.50> ] [0.45 color rgbt <0.40, 0.35, 0.30, 0.60> ] [0.65 color Clear ] } } } // Creamy coffee w/greenish-grey veins & faint avacado swirls #declare T_Stone36 = texture { pigment { granite turbulence 0.815 colour_map { [0.10 colour rgbt <0.43529, 0.49804, 0.32941,0.0>] [0.20 colour rgbt <0.19608, 0.27843, 0.19608,0.0>] [0.35 colour rgbt <0.43529, 0.49804, 0.32941,0.0>] [0.55 colour rgbt <0.45490, 0.44706, 0.20784,0.0>] [0.75 colour rgbt <0.43529, 0.49804, 0.32941,0.0>] [0.90 colour rgbt <0.19608, 0.22745, 0.00000,0.0>] [1.00 colour rgbt <0.43529, 0.49804, 0.32941,0.0>] } scale <0.85, 1.5, 0.5> rotate <10, 0, 40> } finish { brilliance 1.825 } } texture { pigment { granite turbulence 0.825 colour_map { [0.18 colour rgbt <0.20784, 0.13333, 0.00000, 0.427>] [0.35 colour rgbt <0.20784, 0.13333, 0.00000, 0.735>] [0.45 colour rgbt <0.27059, 0.11373, 0.00000, 0.625>] [0.90 colour rgbt <0.27059, 0.11373, 0.00000, 0.875>] [1.00 colour rgbt <0.20784, 0.13333, 0.00000, 0.890>] } scale <0.65, 1.18, 0.34> rotate <5, 10, -55> } finish { ambient 0.275 diffuse 0.775 crand 0.01975 } } // Olive greens w/lighter swirls & hints of salmon #declare T_Stone37 = texture { pigment { granite turbulence 0.9 colour_map { [0.18 colour rgbt <0.29020, 0.24706, 0.00000,0>] [0.35 colour rgbt <0.29020, 0.24706, 0.00000,0>] [0.45 colour rgbt <0.16471, 0.15294, 0.00000,0>] [0.90 colour rgbt <0.16471, 0.15294, 0.00000,0>] [1.00 colour rgbt <0.32941, 0.25882, 0.00000,0>] } scale <0.825, 1.7, 0.25> rotate <10,5,40> } finish { brilliance 2.5 } } texture { pigment { granite turbulence 0.85 colour_map { [0.05 colour rgbt <0.86275, 0.65490, 0.40392, 0.6250>] [0.35 colour rgbt <0.48627, 0.16471, 0.00000, 0.8250>] [0.60 colour rgbt <0.86275, 0.65490, 0.40392, 0.7150>] [0.85 colour rgbt <0.48627, 0.16471, 0.00000, 0.5450>] [1.00 colour rgbt <0.52941, 0.34118, 0.17647, 0.8975>] } scale <0.85, 1.6, 0.45> rotate <0,5,-50> } finish { ambient 0.275 diffuse 0.6925 crand 0.01975} } // Deep rich coffee w/darker veins & lots of creamy swirl #declare T_Stone38 = texture { pigment { granite turbulence 1.25 colour_map { [0.15 colour rgbt<0.72549, 0.73725, 0.54118, 0.0>] [0.25 colour rgbt<0.22745, 0.14510, 0.00000, 0.0>] [0.45 colour rgbt<0.72549, 0.73725, 0.54118, 0.0>] [0.60 colour rgbt<0.22745, 0.14510, 0.00000, 0.0>] [0.80 colour rgbt<0.22745, 0.14510, 0.00000, 0.0>] [1.00 colour rgbt<0.60392, 0.61176, 0.46667, 0.0>] } scale <0.95, 1.7, 0.39> rotate <10, 5, 40> } finish { brilliance 2.125 } } texture { pigment { granite turbulence 0.825 colour_map { [0.35 colour rgbt <0.56078, 0.54902, 0.42353,0.65>] [0.65 colour rgbt <0.10196, 0.05882, 0.00000,0.85>] [1.00 colour rgbt <0.56078, 0.54902, 0.42353,0.90>] } scale <0.76, 1.4, 0.4> rotate <0, 10, -55> } finish { ambient 0.4 diffuse 0.575 crand 0.021 } } // Light mauve w/large plum swirls #declare T_Stone39 = texture { pigment { granite turbulence 0.825 colour_map { [0.12 colour rgbt <0.78039, 0.54902, 0.46667, 0.0>] [0.35 colour rgbt <0.78039, 0.54902, 0.46667, 0.0>] [0.65 colour rgbt <0.49804, 0.30980, 0.30196, 0.0>] [0.90 colour rgbt <0.49804, 0.30980, 0.30196, 0.0>] [1.00 colour rgbt <0.35294, 0.09020, 0.00000, 0.0>] } } scale <0.78,1.45, 0.4> rotate <5,10,-55> finish { brilliance 1.9275 ambient .3 diffuse .575 crand .0215} } // Creamy aqua w/green hi-lites & subtle hints of grey #declare T_Stone40 = texture { pigment { agate agate_turb 1.1 colour_map { [0.10 colour rgbt <0.56078, 0.67451, 0.62353, 0.0>] [0.35 colour rgbt <0.27843, 0.41569, 0.30196, 0.0>] [0.55 colour rgbt <0.56078, 0.67451, 0.62353, 0.0>] [0.85 colour rgbt <0.56078, 0.67451, 0.62353, 0.0>] [0.95 colour rgbt <0.27843, 0.41569, 0.30196, 0.0>] [1.00 colour rgbt <0.54118, 0.58039, 0.56078, 0.0>] } scale <0.97, 0.97, 0.5> rotate <0, 5, 40> } finish {brilliance 1.25} } texture { pigment { granite turbulence 1.25 colour_map { [0.15 colour rgbt <0.46667, 0.59216, 0.54118, 0.005>] [0.65 colour rgbt <0.35294, 0.67451, 0.54902, 0.750>] [0.80 colour rgbt <0.46667, 0.59216, 0.54118, 0.660>] [1.00 colour rgbt <0.35294, 0.67451, 0.54902, 0.879>] } scale <0.85, 1.5, 0.5> rotate <10, 5, -75> } finish { ambient 0.175 diffuse 0.6975 crand 0.025 } } // Dark powder blue w/steel blue & grey swirls #declare T_Stone41 = texture { pigment { marble turbulence 1.5 omega 0.6235 lambda 2.25 colour_map { [0.15 colour rgbt <0.03922, 0.20784, 0.52941, 0.0>] [0.45 colour rgbt <0.03922, 0.20784, 0.52941, 0.0>] [0.55 colour rgbt <0.22745, 0.23922, 0.42353, 0.0>] [0.75 colour rgbt <0.20784, 0.30980, 0.54118, 0.0>] [1.00 colour rgbt <0.20784, 0.30980, 0.54118, 0.0>] } rotate <0, 0, 85> scale <0.75, 1.33, 0.35> rotate <10, 5, 45> } finish { brilliance 1.825 } } texture { pigment { granite turbulence 1.15 colour_map { [0.25 colour rgbt <0.30196, 0.35294, 0.48627, 0.600>] [0.45 colour rgbt <0.30196, 0.35294, 0.48627, 0.475>] [0.85 colour rgbt <0.17647, 0.24706, 0.39216, 0.715>] [1.00 colour rgbt <0.17647, 0.24706, 0.39216, 0.750>] } rotate <0,0,45> scale <0.78, 1.0, 0.4> rotate <5, 10, -55> } finish { ambient 0.225 diffuse 0.75 crand 0.01975} } //Brick red w/yellow-green swirls #declare T_Stone42 = texture { pigment { onion turbulence 2.1 omega 0.575 colour_map { [0.15 colour rgbt<0.29020, 0.08235, 0.00000, 0.0>] [0.35 colour rgbt<0.34118, 0.29020, 0.09020, 0.0>] [0.65 colour rgbt<0.29020, 0.08235, 0.00000, 0.0>] [0.85 colour rgbt<0.34118, 0.29020, 0.09020, 0.0>] [1.00 colour rgbt<0.29020, 0.08235, 0.00000, 0.0>] } scale <0.9, 1.6, .45> rotate <10, 5, 45> } finish { brilliance 1.825 } } texture { pigment { granite turbulence 0.925 colour_map { [0.25 colour rgbt<0.42353, 0.37255, 0.05882, 0.45>] [0.50 colour rgbt<0.18431, 0.01569, 0.00000, 0.55>] [0.72 colour rgbt<0.42353, 0.37255, 0.05882, 0.55>] [1.00 colour rgbt<0.18431, 0.01569, 0.00000, 0.65>] } rotate <5, 15, 90> scale <0.78, 1.05, 0.4> rotate <5, 10, -55> } finish { ambient 0.225 diffuse 0.75 crand 0.01975 } } // Rusty red w/cream swirls and duck overtones #declare T_Stone43 = texture { pigment { granite turbulence 0.815 colour_map { [0.15 colour rgbt<0.86275, 0.75686, 0.61176, 0.0>] [0.45 colour rgbt<0.49804, 0.21569, 0.03922, 0.0>] [0.65 colour rgbt<0.84314, 0.72157, 0.63529, 0.0>] [0.85 colour rgbt<0.46667, 0.23922, 0.05098, 0.0>] [1.00 colour rgbt<0.87059, 0.73725, 0.62745, 0.0>] } scale <0.87, 1.235, 0.47> rotate <15, 25, 45> } finish {brilliance 2.585} } texture { pigment { agate agate_turb 1.275 colour_map { [0.35 colour rgbt<0.42353, 0.12157, 0.01176, 0.650>] [0.65 colour rgbt<0.50196, 0.35294, 0.21176, 0.750>] [1.00 colour rgbt<0.41569, 0.20784, 0.02745, 0.550>] } scale <0.69,1.27, 0.35> rotate <10, 5, -60> } finish { ambient 0.225 diffuse 0.6975 crand 0.02175 } } // This one is quite different from the rest. // Its a dark, dull, bumpy rock texture. #declare T_Stone44 = texture { pigment { granite color_map { [0.0 rgb 0.3 ] [1.0 rgb 0.7 ] } scale 0.075 } normal { granite 0.75 scale 0.075 } } texture { pigment { wrinkles turbulence 0.3 scale 0.3 color_map { [0.0 rgbt< 0.50, 0.25, 0.10, 0.85>] [1.0 rgbt< 0.65, 0.40, 0.00, 0.65>] } } } #version Stones2_Inc_Temp; #end // Persistence of Vision Ray Tracer version 3.5 Include File // File: strings.inc // Last updated: 2001.8.9 // Description: This file contains various macros for manipulating strings. #ifndef(STRINGS_INC_TEMP) #declare STRINGS_INC_TEMP = version; #version 3.5; #ifdef(View_POV_Include_Stack) #debug "including strings.inc\n" #end //converts a color to a string, with filter and transmit #macro CRGBFTStr(C, MinLen, Padding) concat( "color rgbft < ", str(C.red, MinLen, Padding), ", ", str(C.green, MinLen, Padding), ", ", str(C.blue, MinLen, Padding), ", ", str(C.filter, MinLen, Padding), ", ", str(C.transmit, MinLen, Padding), ">") #end //converts a color to a string, without filter and transmit #macro CRGBStr(C, MinLen, Padding) concat( "color rgb < ", str(C.red, MinLen, Padding), ", ", str(C.green, MinLen, Padding), ", ", str(C.blue, MinLen, Padding), ">") #end #macro Parse_String(String) #fopen FOut "parse_string.tmp" write #write(FOut,String) #fclose FOut #include "parse_string.tmp" #end //just a shortcut for using str() with system-defined precision and length. #macro Str(A) str(A, 0,-1) #end //just a shortcut for using vstr() //"Str" is with capitalized "S" to match the Str() macro //above which also has system-defined precision and length. #macro VStr2D(V) concat("<", vstr(2, V, ",", 0,-1), ">") #end #macro VStr(V) concat("<", vstr(3, V, ",", 0,-1), ">") #end //Another shortcut for using vstr(), //this one with user specified precision and length. //"str" is with non-capitalized "s" to match the str() function //in POV-Ray which also has user-specified precision and length. #macro Vstr2D(V,L,P) concat("<", vstr(2, V, ",", L,P), ">") #end #macro Vstr(V,L,P) concat("<", vstr(3, V, ",", L,P), ">") #end //Macros used to generate strings with mesh syntax. //Can be used with the IO features to write a mesh to an external file. #macro Triangle_Str(A, B, C) concat("triangle {<", vstr(3, A, ",", 0,-1), ">,<", vstr(3, B, ",", 0,-1), ">,<", vstr(3, C, ",", 0,-1), ">}") #end #macro Smooth_Triangle_Str(A, NA, B, NB, C, NC) concat("smooth_triangle {<", vstr(3, A, ",", 0,-1), ">,<", vstr(3, NA, ",", 0,-1), ">,<", vstr(3, B, ",", 0,-1), ">,<", vstr(3, NB, ",", 0,-1), ">,<", vstr(3, C, ",", 0,-1), ">,<", vstr(3, NC, ",", 0,-1), ">}") #end #version STRINGS_INC_TEMP; #end//strings.inc // Persistence of Vision Ray Tracer Scene Include File // File: sunpos.inc // Desc: This macro returns the suns position, // on a given date, time, and location on earth. // Date: 15-09-1998 // Updated : 2001-07-27 // Auth: Ingo Janssen // #ifndef(SunPos_Inc_Temp) #declare SunPos_Inc_Temp=version; #version 3.5; // // ====================================================== // // Assumption: in the scene north is in the +Z direction, south is -Z. // // Invoke in your scene: // light_source { // SunPos(Year, Month, Day, Hour, Minute, Lstm, LAT, LONG) // rgb 1 // } // // Greenwich, noon on the longest day of 2000 (no daylight saving): // SunPos(2000, 6, 21, 12, 2, 0, 51.4667, 0.00) // // Year: in four digits // Month: number // Dat: number // Time: in 24 hour format // Lstm: Meridian of your local timezone (+1 hour = +15 deg) // in degrees (east = positive, west = negative) // Location on earth: // LAT: Lattitude in degrees.decimal, northern hemisphere = positive, southern = negative // LONG: Longitude in degrees.decimal, east = positive, west is negative // // The macro returns the position of the sun, but also declares it as the vector SolarPosition. // Also the found Azimuth (Az) and Altitude (Al) are declared, this can be usefull for // aligning an object with the sunlight: cylinder{ // <-2,0,0>,<2,0,0>,0.1 // rotate <0, Az-90, Al> // texture {.. LightRay ..} // } // // ====================================================== // // Find your local position at http://gnpswww.nima.mil/geonames/GNS/ (Gazetteer search) // // Local time(zone) at http://www.hilink.com.au/times/ // // Equations used here can be found at http://hotel04.ausys.se/pausch/english.htm (Computing rise/set times) // not only for the sun but also for the moon, planets and other stuff up there. // // ====================================================== // #macro SunPos(Year, Month, Day, Hour, Minute, Lstm, LAT, LONG) #if (abs(LONG-Lstm)>30) #debug "\nREMARK: \nLongitude differs by more than 30 degrees from timezone meridian.\n" #debug concat("Local timezone meridian is:",str(Lstm,5,0),"\n") #debug concat("Longitude is:",str(LONG,5,0),"\n") #end // Calculate universal time (UT) #local T= Hour+(Minute/60); #local UT= T-Lstm/15; #if (0>UT) #local Day= Day-1; #local UT= 24+UT; #end #if (UT>24) #local Day= Day+1; #local UT= UT-24; #end // Amount of days to, or from, the year 2000 #local d= 367*Year-int((7*int((Year+int((Month+9))/12)))/4)+int((275*Month)/9)+Day-730530+UT/24; // Longitude of perihelion (w), eccentricity (e) #local w= 282.9404+4.70935E-5*d; #local e= 0.016709-1.151E-9*d; // Mean anomaly (M), sun's mean longitude (L) #local M= 356.0470+0.9856002585*d; #if (0,<-Al,Az,0>); (SolarPosition) #end #version SunPos_Inc_Temp; #end #declare Teak_Inc_Temp=version; /* Persistence of Vision Raytracer Version 3.1 Teakwood color_map */ #declare M_Teak = color_map { [0.000000 rgb <0.172549, 0.078431, 0.062745>] [0.003922 rgb <0.172549, 0.094118, 0.047059>] [0.007843 rgb <0.172549, 0.094118, 0.062745>] [0.011765 rgb <0.188235, 0.094118, 0.047059>] [0.015686 rgb <0.188235, 0.094118, 0.062745>] [0.019608 rgb <0.188235, 0.109804, 0.047059>] [0.023529 rgb <0.188235, 0.109804, 0.062745>] [0.027451 rgb <0.188235, 0.109804, 0.078431>] [0.031373 rgb <0.203922, 0.094118, 0.031373>] [0.035294 rgb <0.203922, 0.094118, 0.047059>] [0.039216 rgb <0.203922, 0.094118, 0.062745>] [0.043137 rgb <0.203922, 0.094118, 0.078431>] [0.047059 rgb <0.203922, 0.109804, 0.047059>] [0.050980 rgb <0.203922, 0.109804, 0.062745>] [0.054902 rgb <0.203922, 0.109804, 0.078431>] [0.058824 rgb <0.203922, 0.125490, 0.047059>] [0.062745 rgb <0.203922, 0.125490, 0.062745>] [0.066667 rgb <0.203922, 0.125490, 0.078431>] [0.070588 rgb <0.219608, 0.094118, 0.031373>] [0.074510 rgb <0.219608, 0.094118, 0.047059>] [0.078431 rgb <0.219608, 0.094118, 0.062745>] [0.082353 rgb <0.219608, 0.109804, 0.047059>] [0.086275 rgb <0.219608, 0.109804, 0.062745>] [0.090196 rgb <0.219608, 0.109804, 0.078431>] [0.094118 rgb <0.219608, 0.125490, 0.047059>] [0.098039 rgb <0.219608, 0.125490, 0.062745>] [0.101961 rgb <0.219608, 0.125490, 0.078431>] [0.105882 rgb <0.219608, 0.125490, 0.094118>] [0.109804 rgb <0.219608, 0.141176, 0.078431>] [0.113725 rgb <0.219608, 0.141176, 0.094118>] [0.117647 rgb <0.219608, 0.141176, 0.109804>] [0.121569 rgb <0.219608, 0.156863, 0.141176>] [0.125490 rgb <0.219608, 0.172549, 0.141176>] [0.129412 rgb <0.219608, 0.172549, 0.156863>] [0.133333 rgb <0.219608, 0.188235, 0.156863>] [0.137255 rgb <0.235294, 0.094118, 0.047059>] [0.141176 rgb <0.235294, 0.109804, 0.031373>] [0.145098 rgb <0.235294, 0.109804, 0.047059>] [0.149020 rgb <0.235294, 0.109804, 0.062745>] [0.152941 rgb <0.235294, 0.109804, 0.078431>] [0.156863 rgb <0.235294, 0.109804, 0.094118>] [0.160784 rgb <0.235294, 0.125490, 0.047059>] [0.164706 rgb <0.235294, 0.125490, 0.062745>] [0.168627 rgb <0.235294, 0.125490, 0.078431>] [0.172549 rgb <0.235294, 0.125490, 0.094118>] [0.176471 rgb <0.235294, 0.141176, 0.062745>] [0.180392 rgb <0.235294, 0.141176, 0.078431>] [0.184314 rgb <0.235294, 0.141176, 0.094118>] [0.188235 rgb <0.235294, 0.141176, 0.109804>] [0.192157 rgb <0.235294, 0.172549, 0.156863>] [0.196078 rgb <0.250980, 0.109804, 0.031373>] [0.200000 rgb <0.250980, 0.109804, 0.047059>] [0.203922 rgb <0.250980, 0.109804, 0.062745>] [0.207843 rgb <0.250980, 0.109804, 0.078431>] [0.211765 rgb <0.250980, 0.125490, 0.031373>] [0.215686 rgb <0.250980, 0.125490, 0.047059>] [0.219608 rgb <0.250980, 0.125490, 0.062745>] [0.223529 rgb <0.250980, 0.125490, 0.078431>] [0.227451 rgb <0.250980, 0.125490, 0.094118>] [0.231373 rgb <0.250980, 0.141176, 0.047059>] [0.235294 rgb <0.250980, 0.141176, 0.062745>] [0.239216 rgb <0.250980, 0.141176, 0.078431>] [0.243137 rgb <0.250980, 0.141176, 0.094118>] [0.247059 rgb <0.250980, 0.141176, 0.109804>] [0.250980 rgb <0.250980, 0.156863, 0.062745>] [0.254902 rgb <0.250980, 0.156863, 0.078431>] [0.258824 rgb <0.250980, 0.156863, 0.094118>] [0.262745 rgb <0.250980, 0.172549, 0.141176>] [0.266667 rgb <0.250980, 0.188235, 0.172549>] [0.270588 rgb <0.266667, 0.109804, 0.047059>] [0.274510 rgb <0.266667, 0.109804, 0.062745>] [0.278431 rgb <0.266667, 0.109804, 0.078431>] [0.282353 rgb <0.266667, 0.125490, 0.031373>] [0.286275 rgb <0.266667, 0.125490, 0.047059>] [0.290196 rgb <0.266667, 0.125490, 0.062745>] [0.294118 rgb <0.266667, 0.125490, 0.078431>] [0.298039 rgb <0.266667, 0.125490, 0.094118>] [0.301961 rgb <0.266667, 0.141176, 0.047059>] [0.305882 rgb <0.266667, 0.141176, 0.062745>] [0.309804 rgb <0.266667, 0.141176, 0.078431>] [0.313726 rgb <0.266667, 0.141176, 0.094118>] [0.317647 rgb <0.266667, 0.141176, 0.109804>] [0.321569 rgb <0.266667, 0.156863, 0.062745>] [0.325490 rgb <0.266667, 0.156863, 0.078431>] [0.329412 rgb <0.266667, 0.156863, 0.094118>] [0.333333 rgb <0.266667, 0.156863, 0.109804>] [0.337255 rgb <0.266667, 0.156863, 0.125490>] [0.341176 rgb <0.266667, 0.172549, 0.078431>] [0.345098 rgb <0.266667, 0.172549, 0.094118>] [0.349020 rgb <0.266667, 0.188235, 0.141176>] [0.352941 rgb <0.266667, 0.188235, 0.156863>] [0.356863 rgb <0.282353, 0.125490, 0.047059>] [0.360784 rgb <0.282353, 0.125490, 0.062745>] [0.364706 rgb <0.282353, 0.125490, 0.078431>] [0.368627 rgb <0.282353, 0.125490, 0.094118>] [0.372549 rgb <0.282353, 0.125490, 0.109804>] [0.376471 rgb <0.282353, 0.141176, 0.047059>] [0.380392 rgb <0.282353, 0.141176, 0.062745>] [0.384314 rgb <0.282353, 0.141176, 0.078431>] [0.388235 rgb <0.282353, 0.141176, 0.094118>] [0.392157 rgb <0.282353, 0.141176, 0.109804>] [0.396078 rgb <0.282353, 0.141176, 0.141176>] [0.400000 rgb <0.282353, 0.156863, 0.062745>] [0.403922 rgb <0.282353, 0.156863, 0.078431>] [0.407843 rgb <0.282353, 0.156863, 0.094118>] [0.411765 rgb <0.282353, 0.156863, 0.109804>] [0.415686 rgb <0.282353, 0.156863, 0.125490>] [0.419608 rgb <0.282353, 0.172549, 0.062745>] [0.423529 rgb <0.282353, 0.172549, 0.078431>] [0.427451 rgb <0.282353, 0.172549, 0.094118>] [0.431373 rgb <0.282353, 0.172549, 0.109804>] [0.435294 rgb <0.282353, 0.172549, 0.125490>] [0.439216 rgb <0.282353, 0.188235, 0.125490>] [0.443137 rgb <0.282353, 0.188235, 0.141176>] [0.447059 rgb <0.282353, 0.188235, 0.156863>] [0.450980 rgb <0.298039, 0.125490, 0.047059>] [0.454902 rgb <0.298039, 0.125490, 0.062745>] [0.458824 rgb <0.298039, 0.125490, 0.078431>] [0.462745 rgb <0.298039, 0.141176, 0.047059>] [0.466667 rgb <0.298039, 0.141176, 0.062745>] [0.470588 rgb <0.298039, 0.141176, 0.078431>] [0.474510 rgb <0.298039, 0.141176, 0.094118>] [0.478431 rgb <0.298039, 0.141176, 0.109804>] [0.482353 rgb <0.298039, 0.141176, 0.125490>] [0.486275 rgb <0.298039, 0.141176, 0.141176>] [0.490196 rgb <0.298039, 0.156863, 0.062745>] [0.494118 rgb <0.298039, 0.156863, 0.078431>] [0.498039 rgb <0.298039, 0.156863, 0.094118>] [0.501961 rgb <0.298039, 0.156863, 0.109804>] [0.505882 rgb <0.298039, 0.156863, 0.125490>] [0.509804 rgb <0.298039, 0.172549, 0.062745>] [0.513726 rgb <0.298039, 0.172549, 0.078431>] [0.517647 rgb <0.298039, 0.172549, 0.094118>] [0.521569 rgb <0.298039, 0.172549, 0.109804>] [0.525490 rgb <0.298039, 0.172549, 0.125490>] [0.529412 rgb <0.298039, 0.188235, 0.094118>] [0.533333 rgb <0.298039, 0.188235, 0.109804>] [0.537255 rgb <0.298039, 0.188235, 0.125490>] [0.541176 rgb <0.298039, 0.188235, 0.141176>] [0.545098 rgb <0.298039, 0.203922, 0.141176>] [0.549020 rgb <0.298039, 0.203922, 0.156863>] [0.552941 rgb <0.313726, 0.141176, 0.047059>] [0.556863 rgb <0.313726, 0.141176, 0.062745>] [0.560784 rgb <0.313726, 0.141176, 0.078431>] [0.564706 rgb <0.313726, 0.141176, 0.094118>] [0.568627 rgb <0.313726, 0.156863, 0.047059>] [0.572549 rgb <0.313726, 0.156863, 0.062745>] [0.576471 rgb <0.313726, 0.156863, 0.078431>] [0.580392 rgb <0.313726, 0.156863, 0.094118>] [0.584314 rgb <0.313726, 0.156863, 0.109804>] [0.588235 rgb <0.313726, 0.156863, 0.125490>] [0.592157 rgb <0.313726, 0.156863, 0.141176>] [0.596078 rgb <0.313726, 0.172549, 0.062745>] [0.600000 rgb <0.313726, 0.172549, 0.078431>] [0.603922 rgb <0.313726, 0.172549, 0.094118>] [0.607843 rgb <0.313726, 0.172549, 0.109804>] [0.611765 rgb <0.313726, 0.172549, 0.141176>] [0.615686 rgb <0.313726, 0.188235, 0.062745>] [0.619608 rgb <0.313726, 0.188235, 0.094118>] [0.623529 rgb <0.313726, 0.188235, 0.125490>] [0.627451 rgb <0.313726, 0.203922, 0.141176>] [0.631373 rgb <0.329412, 0.141176, 0.062745>] [0.635294 rgb <0.329412, 0.156863, 0.078431>] [0.639216 rgb <0.329412, 0.156863, 0.109804>] [0.643137 rgb <0.329412, 0.172549, 0.062745>] [0.647059 rgb <0.329412, 0.172549, 0.094118>] [0.650980 rgb <0.329412, 0.172549, 0.125490>] [0.654902 rgb <0.329412, 0.188235, 0.078431>] [0.658824 rgb <0.329412, 0.188235, 0.109804>] [0.662745 rgb <0.329412, 0.188235, 0.141176>] [0.666667 rgb <0.329412, 0.203922, 0.094118>] [0.670588 rgb <0.329412, 0.203922, 0.125490>] [0.674510 rgb <0.329412, 0.203922, 0.156863>] [0.678431 rgb <0.329412, 0.219608, 0.141176>] [0.682353 rgb <0.345098, 0.156863, 0.062745>] [0.686275 rgb <0.345098, 0.156863, 0.094118>] [0.690196 rgb <0.345098, 0.172549, 0.078431>] [0.694118 rgb <0.345098, 0.172549, 0.109804>] [0.698039 rgb <0.345098, 0.172549, 0.141176>] [0.701961 rgb <0.345098, 0.188235, 0.094118>] [0.705882 rgb <0.345098, 0.188235, 0.125490>] [0.709804 rgb <0.345098, 0.203922, 0.078431>] [0.713726 rgb <0.345098, 0.203922, 0.109804>] [0.717647 rgb <0.345098, 0.203922, 0.141176>] [0.721569 rgb <0.345098, 0.219608, 0.094118>] [0.725490 rgb <0.345098, 0.219608, 0.156863>] [0.729412 rgb <0.345098, 0.235294, 0.172549>] [0.733333 rgb <0.360784, 0.156863, 0.078431>] [0.737255 rgb <0.360784, 0.172549, 0.062745>] [0.741176 rgb <0.360784, 0.172549, 0.094118>] [0.745098 rgb <0.360784, 0.172549, 0.125490>] [0.749020 rgb <0.360784, 0.172549, 0.156863>] [0.752941 rgb <0.360784, 0.188235, 0.078431>] [0.756863 rgb <0.360784, 0.188235, 0.109804>] [0.760784 rgb <0.360784, 0.188235, 0.141176>] [0.764706 rgb <0.360784, 0.203922, 0.094118>] [0.768627 rgb <0.360784, 0.203922, 0.125490>] [0.772549 rgb <0.360784, 0.219608, 0.109804>] [0.776471 rgb <0.360784, 0.219608, 0.141176>] [0.780392 rgb <0.360784, 0.235294, 0.156863>] [0.784314 rgb <0.376471, 0.172549, 0.078431>] [0.788235 rgb <0.376471, 0.172549, 0.109804>] [0.792157 rgb <0.376471, 0.172549, 0.141176>] [0.796078 rgb <0.376471, 0.188235, 0.094118>] [0.800000 rgb <0.376471, 0.188235, 0.125490>] [0.803922 rgb <0.376471, 0.203922, 0.078431>] [0.807843 rgb <0.376471, 0.203922, 0.109804>] [0.811765 rgb <0.376471, 0.203922, 0.141176>] [0.815686 rgb <0.376471, 0.219608, 0.094118>] [0.819608 rgb <0.376471, 0.219608, 0.125490>] [0.823529 rgb <0.376471, 0.219608, 0.156863>] [0.827451 rgb <0.376471, 0.235294, 0.141176>] [0.831373 rgb <0.392157, 0.172549, 0.062745>] [0.835294 rgb <0.392157, 0.172549, 0.094118>] [0.839216 rgb <0.392157, 0.188235, 0.078431>] [0.843137 rgb <0.392157, 0.188235, 0.109804>] [0.847059 rgb <0.392157, 0.203922, 0.094118>] [0.850980 rgb <0.392157, 0.203922, 0.125490>] [0.854902 rgb <0.392157, 0.203922, 0.156863>] [0.858824 rgb <0.392157, 0.219608, 0.109804>] [0.862745 rgb <0.392157, 0.219608, 0.141176>] [0.866667 rgb <0.392157, 0.235294, 0.125490>] [0.870588 rgb <0.392157, 0.235294, 0.156863>] [0.874510 rgb <0.407843, 0.188235, 0.094118>] [0.878431 rgb <0.407843, 0.188235, 0.125490>] [0.882353 rgb <0.407843, 0.203922, 0.109804>] [0.886275 rgb <0.407843, 0.219608, 0.094118>] [0.890196 rgb <0.407843, 0.219608, 0.125490>] [0.894118 rgb <0.407843, 0.235294, 0.109804>] [0.898039 rgb <0.407843, 0.235294, 0.141176>] [0.901961 rgb <0.407843, 0.250980, 0.125490>] [0.905882 rgb <0.407843, 0.250980, 0.156863>] [0.909804 rgb <0.423529, 0.203922, 0.094118>] [0.913725 rgb <0.423529, 0.203922, 0.125490>] [0.917647 rgb <0.423529, 0.219608, 0.109804>] [0.921569 rgb <0.423529, 0.219608, 0.141176>] [0.925490 rgb <0.423529, 0.235294, 0.125490>] [0.929412 rgb <0.423529, 0.235294, 0.156863>] [0.933333 rgb <0.423529, 0.250980, 0.141176>] [0.937255 rgb <0.423529, 0.298039, 0.203922>] [0.941176 rgb <0.439216, 0.219608, 0.094118>] [0.945098 rgb <0.439216, 0.219608, 0.125490>] [0.949020 rgb <0.439216, 0.235294, 0.109804>] [0.952941 rgb <0.439216, 0.235294, 0.141176>] [0.956863 rgb <0.439216, 0.250980, 0.125490>] [0.960784 rgb <0.439216, 0.250980, 0.156863>] [0.964706 rgb <0.439216, 0.266667, 0.172549>] [0.968627 rgb <0.454902, 0.235294, 0.125490>] [0.972549 rgb <0.454902, 0.250980, 0.141176>] [0.976471 rgb <0.454902, 0.282353, 0.156863>] [0.980392 rgb <0.470588, 0.235294, 0.141176>] [0.984314 rgb <0.470588, 0.250980, 0.125490>] [0.988235 rgb <0.470588, 0.266667, 0.141176>] [0.992157 rgb <0.470588, 0.282353, 0.172549>] [0.996078 rgb <0.486275, 0.282353, 0.203922>] } #version Teak_Inc_Temp; PNG  IHDR@k*%0PLTEUUUUUUUUUUUUUUUXPIDATxmr<pM&=@'O/'0N~Wy ./YMg 2 iA풶*PZ[[|TCZ=X6tP6lk( c`+F lD`cp8}U!tُƏ*=~ /2*0ȓ$ 8rH/"D_@x Rq F!&I`kc vcMdG`o R;Q`Ɇ&`ɇ[~1@Nm ou #|XhS@3> H}8 ,jԇ #(7Cv_3bR;?<00^l̦>3̥>ES@->"_dʩ!7CM}Ro͐SSlnT T(@ U>꒕\͐OTW?RE;a^3WT=Q@=dS <$W ^Hp{"}f ~"} Y 9ڗ*/gʗ*&WT1p wR{]&+_r٩Cn6ğM߿Fwp8xxymG>م B]U?&Ɠ@8ƞ\ـA%GȑOA8`wBaZkV o<u'Qy8iBF|<kerZEA˹:w㡳25p8`{2I%뭮ǁЁ@`|UA6}?a#4w;_f:p-U }Z{r NXߛW1 <*j,{=t8 0KD7sMwf躐A:fqr h (pG"toL.]x1 @|sK87ߤg^7+Rhxl su nx\6A#8W++N[Imzt_go4qXY'tԸi7_7~O"L ,`19| 6R2GQz9 IRȓ'$53Ia1HqЇ 4BD7`QH=840c52bd8HtFh(cO0P{F{m#iaU IF&xa <b >ԎσqXMkV`M*UFXXk 1W`Ȥ./Eڢ@*pH =Ԑ0SQ 3`/< jY nu<&A~429n8 $a LEjH(y y5 5u (PSB Ì>45M}`Hԇ>8*# qiC V IENDB`// Persistence of Vision Ray Tracer version 3.5 Include File // File: textures.inc // Last updated: 2001.7.25 // Description: #ifndef(Textures_Inc_Temp) #declare Textures_Inc_Temp = version; #version 3.5; /* Standard textures include file Contents: =========================== DMFWood6 NBglass (Norm Bowler) NBoldglass (Norm Bowler) NBwinebottle (Norm Bowler) NBbeerbottle (Norm Bowler) Ruby_Glass (after Norm Bowler) Dark_Green_Glass (after Norm Bowler) Yellow_Glass (after Norm Bowler) Orange_Glass (after Norm Bowler) Vicks_Bottle_Glass (after Norm Bowler) Soft_Silver (Dan Farmer) New_Penny (Dan Farmer) Tinny_Brass (Dan Farmer) Gold_Nugget (Dan Farmer) Aluminum (Dan Farmer) Bright_Bronze (Dan Farmer) Lightening1 (Dan Farmer) Lightening2 (Dan Farmer) Brushed_Aluminum (Dan Farmer) Starfield (Jeff Burton ) Shadow_Clouds (Bill Pulver) */ #include "finish.inc" #ifdef(View_POV_Include_Stack) #debug "including textures.inc\n" #end //***************************************************************************** // STONE PIGMENTS //***************************************************************************** #declare Jade_Map = color_map { [0.0 rgb <0.1, 0.6, 0.1>] [0.8 rgb <0.0, 0.3, 0.0>] [0.8 rgb <0.1, 0.6, 0.1>] [1.0 rgb <0.0, 0.2, 0.0>] } // Drew Wells' superb Jade. Color map works nicely with other textures, too. #declare Jade = pigment { marble turbulence 1.8 color_map { Jade_Map } } #declare Red_Marble_Map = color_map { [0.0 rgb <0.8, 0.8, 0.6>] [0.8 rgb <0.8, 0.4, 0.4>] [1.0 rgb <0.8, 0.2, 0.2>] } // Classic white marble with red veins. Over-worked, like checkers. #declare Red_Marble = pigment { marble color_map { Red_Marble_Map } turbulence 1 } #declare White_Marble_Map = color_map { [0.0 rgb <0.9, 0.9, 0.9>] [0.8 rgb <0.5, 0.5, 0.5>] [1.0 rgb <0.2, 0.2, 0.2>] } // White marble with black veins. #declare White_Marble = pigment { marble turbulence 1 color_map { White_Marble_Map } } // Light blue and black marble with a thin red vein // Try changing LBlue and Vein below to modify the marble. //#declare LBlue = rgb <0.0, 0.6, 0.6>; //#declare Vein = rgb <0.6, 0.0, 0.0>; //These variables commented out to avoid possibility of name clashes #declare Blood_Marble_Map = color_map { [0.0 color 0] [0.8 color rgb <0.0, 0.6, 0.6>] [0.9 color rgb <0.6, 0.0, 0.0>] // [0.8 color LBlue] // [0.9 color Vein] [1.0 color 0] } #declare Blood_Marble = pigment { marble color_map { Blood_Marble_Map } turbulence 2.3 } #declare Blue_Agate_Map = color_map { [0.5 rgb <0.30, 0.30, 0.50>] [0.55 rgb <0.20, 0.20, 0.30>] [0.6 rgb <0.25, 0.25, 0.35>] [0.7 rgb <0.15, 0.15, 0.26>] [0.8 rgb <0.10, 0.10, 0.20>] [0.9 rgb <0.30, 0.30, 0.50>] [1.0 rgb <0.10, 0.10, 0.20>] } // a grey blue agate -- kind of purplish. #declare Blue_Agate = pigment { agate color_map { Blue_Agate_Map } } #declare Sapphire_Agate_Map = color_map { [0.0 rgb <0.0, 0.0, 0.9>] [0.3 rgb <0.0, 0.0, 0.8>] [1.0 rgb <0.0, 0.0, 0.4>] } // Deep blue agate -- almost glows. #declare Sapphire_Agate = pigment { agate color_map { Sapphire_Agate_Map } } #declare Brown_Agate_Map = color_map { [0.0 rgb 0] [0.5 rgb <0.9, 0.7, 0.6>] [0.6 rgb <0.9, 0.7, 0.4>] [1.0 rgb <0.7, 0.4, 0.2>] } // Brown and white agate -- very pretty. #declare Brown_Agate = pigment { agate color_map { Brown_Agate_Map } } #declare Pink_Granite_Map = color_map { [0.4 rgb 0] [0.4 rgb <0.85, 0.85, 0.95>] [0.45 rgb <0.85, 0.85, 0.95>] [0.5 rgb <0.75, 0.75, 0.75>] [0.55 rgb <0.82, 0.57, 0.46>] [0.8 rgb <0.82, 0.57, 0.46>] [1.0 rgb <1.00, 0.50, 0.00>] } #declare Pink_Granite = pigment { granite color_map { Pink_Granite_Map } } //***************************************************************************** // STONE TEXTURES //***************************************************************************** // Gray-pink alabaster or marble. Layers are scaled for a unit object // and relative to each other. // NOTE: This texture has very tiny dark blue specks that are often // mistaken for rendering errors. They are not errors. Just a // strange texture design. #declare PinkAlabaster = // Underlying surface is very subtly mottled with bozo texture { pigment { bozo turbulence 0.25 color_map { [0 rgb <0.9, 0.75, 0.75>] [1 rgb <0.6, 0.6, 0.6 >] } scale 0.4 } finish{ ambient 0.25 } } // Second layer texture has some transmit values, yet a fair amount of color // Viening is kept quite thin in color map and by the largish scale. texture { pigment { granite color_map { [0.0 rgbt <0.52, 0.39, 0.39, 1.0>] [0.9 rgbt <0.52, 0.39, 0.39, 0.5>] [0.9 rgbt <0.42, 0.14, 0.55, 0.0>] } scale 2 } finish { specular 1 roughness 0.0001 phong 0.25 phong_size 75 brilliance 4 } } //***************************************************************************** // SKY PIGMENTS //***************************************************************************** #declare Blue_Sky_Map = color_map { [0.5 rgb <0.25, 0.25, 0.5>] [0.6 rgb 0.7] [1.0 rgb 0.3] } // Basic Blue Sky w/ clouds. #declare Blue_Sky = pigment { bozo color_map { Blue_Sky_Map } turbulence 0.3 } // Bright Blue Sky w/ very white clouds. #declare Bright_Blue_Sky = pigment { bozo turbulence 0.56 color_map { [0.5 rgb <0.5, 0.5, 1.0>] [0.6 rgb 1.0] [1.0 rgb 0.5] } } // Another sky #declare Blue_Sky2 = pigment { agate color_map { [0.3 rgb <0, 0, 1>] [1.0 rgb 1] } scale .75 } // Small puffs of white clouds #declare Blue_Sky3 = pigment { granite turbulence 0.1 color_map { [0.3 rgb <0, 0, 1>] [1.0 rgb 1] } scale .75 } // Red sky w/ yellow clouds -- very surreal. #declare Blood_Sky = pigment { bozo turbulence 0.5 color_map { [0.0 rgb <0.9, 0.700, 0.0>] [0.5 rgb <0.3, 0.200, 0.0>] [0.5 rgb <0.6, 0.025, 0.0>] [0.6 rgb <0.9, 0.700, 0.0>] [0.6 rgb <0.6, 0.025, 0.0>] } } // Black sky with red and purple clouds // Try adding turbulence values from 0.1 - 5.0 -- CdW #declare Apocalypse = pigment { bozo color_map { [0.0 rgb <0.8, 0.0, 0.0>] [0.4 rgb <0.4, 0.0, 0.4>] [0.6 rgb <0.0, 0.0, 0.2>] [1.0 rgb 0.0] } } // White clouds w/ transparent sky. #declare Clouds = pigment { bozo color_map { [0.1 rgbt <0.8, 0.8, 0.8, 0.0>] [0.5 rgbt <1.0, 1.0, 1.0, 1.0>] } } #declare FBM_Clouds = pigment { bozo turbulence 0.65 octaves 6 omega 0.7 lambda 2 color_map { [0.0 rgb 0.85] [0.1 rgb 0.75] [0.5 rgbt 1] } scale <6, 1, 6> } #declare Shadow_Clouds = texture { // The blue sky background for the clouds pigment { rgb <0.196078, 0.6, 0.8> } finish { ambient 0.7 diffuse 0 } } texture { // The upper part of the clouds pigment { FBM_Clouds } finish { ambient 1.0 diffuse 0 } } texture { // The darker underside of the clouds pigment { FBM_Clouds translate -0.15*y } finish { ambient 0.6 diffuse 0 } } //***************************************************************************** // WOODEN PIGMENTS //***************************************************************************** // Several wooden pigments by Tom Price: // A light reddish wood. #declare Cherry_Wood = pigment { wood turbulence 0.3 color_map { [0.8 rgb <0.66, 0.31, 0.20>] [0.8 rgb <0.40, 0.13, 0.06>] [1.0 rgb <0.20, 0.06, 0.03>] } } // A light tan wood with,ish rings. #declare Pine_Wood = pigment { wood turbulence 0.2 color_map { [0.8 rgb <1.0, 0.72, 0.25>] [0.8 rgb <0.5, 0.50, 0.06>] [1.0 rgb <0.4, 0.40, 0.03>] } } // Dark wood with a,ish hue to it. #declare Dark_Wood = pigment { wood turbulence 0.2 color_map { [0.8 rgb <0.43, 0.24, 0.05>] [0.8 rgb <0.40, 0.33, 0.06>] [1.0 rgb <0.20, 0.03, 0.03>] } } // Light tan wood with brown rings. #declare Tan_Wood = pigment { wood turbulence 0.1 color_map { [0.8 rgb <0.88, 0.60, 0.30>] [0.8 rgb <0.60, 0.40, 0.20>] [1.0 rgb <0.40, 0.30, 0.20>] } } // A very pale wood with tan rings -- kind of balsa-ish. #declare White_Wood = pigment { wood turbulence 0.6 color_map { [0.0 rgb <0.93, 0.71, 0.53>] [0.8 rgb <0.98, 0.81, 0.60>] [0.8 rgb <0.60, 0.33, 0.27>] [1.0 rgb <0.70, 0.60, 0.23>] } } // Brown wood - looks stained. #declare Tom_Wood = pigment { wood turbulence 0.31 color_map { [0.8 rgb < 0.7, 0.3, 0.0>] [0.8 rgb < 0.5, 0.2, 0.0>] [1.0 rgb < 0.4, 0.1, 0.0>] } } // The scaling in these definitions is relative to a unit-sized object // (radius 1). Note that woods are functionally equivilent to a log lying // along the z axis. For best results, think like a woodcutter trying to // extract the nicest board out of that log. A little tilt along the x axis // will give elliptical rings of grain like you'd expect to find on most // boards. Experiment. // (The first five came from DODEC2.POV in the POV Scenefile Library.) #declare DMFWood1 = pigment { wood turbulence 0.04 octaves 3 scale <0.05, .05, 1> color_map { [0.1 rgb <0.60, 0.30, 0.18>] [0.9 rgb <0.30, 0.15, 0.09>] } } #declare DMFWood2 = pigment { wood turbulence 0.03 octaves 4 scale <0.05, .05, 1> color_map { [0.1 rgb <0.52, 0.37, 0.26>] [0.9 rgb <0.42, 0.26, 0.15>] } } #declare DMFWood3 = pigment { wood turbulence 0.05 octaves 2 scale <0.05, .05, 1> color_map { [0.1 rgb <0.4, 0.133, 0.066>] [0.9 rgb <0.2, 0.065, 0.033>] } } #declare DMFWood4 = pigment { wood turbulence 0.04 octaves 3 scale <0.05, .05, 1> color_map { [0.1 rgb <0.888, 0.600, 0.3>] [0.9 rgb <0.600, 0.400, 0.2>] } } #declare DMFWood5 = pigment { wood turbulence 0.05 octaves 6 scale <0.075, .075, 1> color_map { [0.1 rgb <0.30, 0.10, 0.050>] [0.9 rgb <0.25, 0.07, 0.038>] } } // This is a three-layer wood texture. Renders rather slowly because of // the transparent layers and the two layers of turbulence, but it looks // great. Try other colors of "varnish" for simple variations. #declare DMFWood6 = texture { pigment { wood turbulence 0.04 octaves 3 scale <0.05, .05, 1> color_map { [0.1 rgb <0.88, 0.60, 0.4>] [0.9 rgb <0.60, 0.40, 0.3>] } } finish { specular 0.25 roughness 0.05 ambient 0.45 diffuse 0.33 reflection 0.15 } } texture { pigment { wood turbulence <0.1, 0.5, 1> octaves 5 lambda 3.25 scale <0.15, .5, 1> color_map { [0.0 rgbt <0.7, 0.6, 0.4, 0.100>] [0.1 rgbt <0.8, 0.6, 0.3, 0.500>] [0.1 rgbt <0.8, 0.6, 0.3, 0.650>] [0.9 rgbt <0.6, 0.4, 0.2, 0.975>] [1.0 rgbt <0.6, 0.4, 0.2, 1.000>] } rotate <5, 10, 5> translate -x*2 } finish { specular 0.25 roughness 0.0005 ambient .1 diffuse 0.33 } } // A "coat of varnish" to modify the overall color of the wood texture { pigment { rgbt <0.75, 0.15, 0.0, 0.95> } finish { specular 0.25 roughness 0.01 ambient 0 diffuse 0.33 } } // Is this really oak? I dunno. Quite light, maybe more like spruce. #declare DMFLightOak = pigment { wood turbulence 0.05 // For best results, keep this low! scale <0.2, 0.2, 1> // Scaled for a unit object color_map { [0.1 rgb <0.42, 0.26, 0.15>] [0.9 rgb <0.52, 0.37, 0.26>] } } // Looks like old desk oak if used correctly. #declare DMFDarkOak = pigment { wood turbulence 0.04 // For best results, keep this low! octaves 3 scale <0.2, 0.2, 1> // Scaled for a unit object color_map { [0.1 rgb <0.60, 0.30, 0.18>] [0.9 rgb <0.30, 0.15, 0.09>] } } // Wood by Eric Barish #declare EMBWood1 = texture { /* Bottom wood-grain layer */ pigment { wood turbulence 0.05 color_map { [0.00 rgb <0.58, 0.45, 0.23>] [0.34 rgb <0.65, 0.45, 0.25>] [0.40 rgb <0.33, 0.23, 0.13>] [0.47 rgb <0.60, 0.40, 0.20>] [1.00 rgb <0.25, 0.15, 0.05>] } } finish { crand 0.02 ambient 0.32 diffuse 0.63 phong 0.2 phong_size 10 } normal { bumps 0.05 } } texture { /* top layer, adds small dark spots */ pigment { bozo color_map { [0.0 rgbt <1.00, 1.00, 1.00, 1.00>] [0.8 rgbt <1.00, 0.90, 0.80, 0.80>] [1.0 rgbt <0.30, 0.20, 0.10, 0.40>] } scale 0.25 } } // Doug Otwell woods // Yellow pine, close grained // #declare Yellow_Pine = texture { pigment { wood turbulence 0.02 color_map { [0.222 rgb <0.808, 0.671, 0.251>] [0.342 rgb <0.600, 0.349, 0.043>] [0.393 rgb <0.808, 0.671, 0.251>] [0.709 rgb <0.808, 0.671, 0.251>] [0.821 rgb <0.533, 0.298, 0.027>] [1.000 rgb <0.808, 0.671, 0.251>] } scale 0.1 translate <10, 0, 0> } } // Yellow_Pine layer 2 texture { pigment { wood turbulence 0.01 color_map { [0.000 rgbt <1.000, 1.000, 1.000, 1.000>] [0.120 rgbt <0.702, 0.467, 0.118, 0.608>] [0.496 rgbt <1.000, 1.000, 1.000, 1.000>] [0.701 rgbt <1.000, 1.000, 1.000, 1.000>] [0.829 rgbt <0.702, 0.467, 0.118, 0.608>] [1.000 rgbt <1.000, 1.000, 1.000, 1.000>] } scale 0.5 translate <10, 0, 0> } } // // Rosewood // #declare Rosewood = texture { pigment { bozo turbulence 0.04 color_map { [0.000 rgb <0.204, 0.110, 0.078>] [0.256 rgb <0.231, 0.125, 0.090>] [0.393 rgb <0.247, 0.133, 0.090>] [0.581 rgb <0.204, 0.110, 0.075>] [0.726 rgb <0.259, 0.122, 0.102>] [0.983 rgb <0.231, 0.125, 0.086>] [1.000 rgb <0.204, 0.110, 0.078>] } scale <0.5, 0.5, 1> translate <10, 0, 0> } finish { ambient 0.5 diffuse 0.8 } } // Rosewood layer 2 texture { pigment { wood turbulence 0.04 color_map { [0.000 rgbt <0.545, 0.349, 0.247, 1.000>] [0.139 rgbt <0.000, 0.000, 0.000, 0.004>] [0.148 rgbt <0.000, 0.000, 0.000, 0.004>] [0.287 rgbt <0.545, 0.349, 0.247, 1.000>] [0.443 rgbt <0.545, 0.349, 0.247, 1.000>] [0.626 rgbt <0.000, 0.000, 0.000, 0.004>] [0.635 rgbt <0.000, 0.000, 0.000, 0.004>] [0.843 rgbt <0.545, 0.349, 0.247, 1.000>] } scale <0.5, 0.5, 1> translate <10, 0, 0> } finish { ambient 0.5 diffuse 0.8 } } // // Sandalwood ( makes a great burled maple, too) // #declare Sandalwood = texture { pigment { bozo turbulence 0.2 color_map { [0.000 rgb <0.725, 0.659, 0.455>] [0.171 rgb <0.682, 0.549, 0.420>] [0.274 rgb <0.557, 0.451, 0.322>] [0.393 rgb <0.725, 0.659, 0.455>] [0.564 rgb <0.682, 0.549, 0.420>] [0.701 rgb <0.482, 0.392, 0.278>] [1.000 rgb <0.725, 0.659, 0.455>] } scale <0.2, 0.2, 1> scale 2 } } // Sandalwood layer 2 texture { pigment { bozo turbulence 0.8 color_map { [0.000 rgbt <0.682, 0.604, 0.380, 1.000>] [0.087 rgbt <0.761, 0.694, 0.600, 0.020>] [0.226 rgbt <0.635, 0.553, 0.325, 1.000>] [0.348 rgbt <0.761, 0.694, 0.600, 0.020>] [0.496 rgbt <0.682, 0.604, 0.380, 1.000>] [0.565 rgbt <0.761, 0.694, 0.600, 0.020>] [0.661 rgbt <0.682, 0.604, 0.380, 1.000>] [0.835 rgbt <0.761, 0.694, 0.600, 0.020>] [1.000 rgbt <0.682, 0.604, 0.380, 1.000>] } scale 0.4 } } //***************************************************************************** // GLASS TEXTURES //***************************************************************************** /* Note: New in POV-Ray 3.1, the "ior" keyword is supposed to be specified in the new "interior{...}" statement. Under POV-Ray 3.0x and prior, the "refraction" keyword served two puropses. 1) Turn on refraction: this is no longer necessary. Any use of the "ior" keyword with a value other than 1.0 will turn on refraction. 2) Attenuate transparency: Values of "refraction" that are between 0.0 and 1.0 would attenuate or darken the amount of light passing through. The same effect can be obtained by adjusting the filter value. A more realistic effect can be obtained using the new "fade_power" and "fade_distance" keywords in the "interior" statement. These textures and finishes should still work under POV-Ray 3.1 but any new textures you create should make use of the new syntax. */ /*Modified for POV 3.5, added glass materials More realistic results can be obtained if a perfectly clear pigment is used, and either absorbing media or fade_color are used to color the glass.*/ #declare Glass_Finish= finish { specular 1 roughness 0.001 ambient 0 diffuse 0 reflection 0.1 #if (version<3.1) ior 1.5 #end } #declare Glass_Interior = interior {ior 1.5} #declare Glass = texture { pigment { rgbf<1.0, 1.0, 1.0, 0.7> } finish { Glass_Finish } } #declare M_Glass = material {texture {Glass} interior {Glass_Interior}} // Probably more of a "Plexiglas" than glass #declare Glass2 = texture { pigment { rgbf <1,1,1,1> } finish { ambient 0 diffuse 0 reflection 0.5 phong 0.3 phong_size 60 } } #declare M_Glass2 = material {texture {Glass2} interior {Glass_Interior}} // An excellent lead crystal glass! #declare Glass3 = texture { pigment { rgbf <0.98, 0.98, 0.98, 0.9> } finish { ambient 0.1 diffuse 0.1 reflection 0.1 specular 0.8 roughness 0.0003 phong 1 phong_size 400 } } #declare M_Glass3 = material {texture {Glass3} interior {Glass_Interior}} #declare Green_Glass = texture { Glass3 pigment { rgbf <0.8, 1, 0.95, 0.9> } } #declare M_Green_Glass = material {texture {Green_Glass} interior {Glass_Interior}} // Glass textures contributed by Norm Bowler, of Richland WA #declare NBglass = texture { pigment { rgbf <0.98, 1.0, 0.99, 0.75> } finish { ambient 0.1 diffuse 0.1 reflection .25 specular 1 roughness .001 #if (version<3.1) ior 1.5 #end } } #declare M_NB_Glass = material {texture {NBglass} interior {Glass_Interior}} #declare NBoldglass= texture { NBglass pigment { rgbf <0.8, 0.9, 0.85, 0.85> } } #declare M_NB_Old_Glass = material {texture {NBoldglass} interior {Glass_Interior}} #declare NBwinebottle= texture { NBglass pigment { rgbf <0.4, 0.72, 0.4, 0.6> } } #declare M_NB_Winebottle_Glass = material {texture {NBwinebottle} interior {Glass_Interior}} #declare NBbeerbottle= texture { NBglass pigment { rgbf <0.7, 0.5, 0.1, 0.6> } } #declare M_NB_Beerbottle_Glass = material {texture {NBbeerbottle} interior {Glass_Interior}} // A few color variations on Norm's glass // Ruby glass #declare Ruby_Glass = texture { NBglass pigment { rgbf <0.9, 0.1, 0.2, 0.8> } } #declare M_Ruby_Glass = material {texture {Ruby_Glass} interior {Glass_Interior}} // Dark, green glass #declare Dark_Green_Glass= texture { NBglass pigment { rgbf <0.1, 0.7, 0.8, 0.8> } } #declare M_Dark_Green_Glass = material {texture {Dark_Green_Glass} interior {Glass_Interior}} // Yellow glass #declare Yellow_Glass= texture { NBglass pigment { rgbf <0.8, 0.8, 0.2, 0.8> } } #declare M_Yellow_Glass = material {texture {Yellow_Glass} interior {Glass_Interior}} // Orange/Amber glass #declare Orange_Glass= texture { NBglass pigment { rgbf <1.0, 0.5, 0.0, 0.8> } } #declare M_Orange_Glass = material {texture {Orange_Glass} interior {Glass_Interior}} // Vicks bottle, glass #declare Vicks_Bottle_Glass= texture { NBglass pigment { rgbf <0.1, 0.15, 0.5, 0.9> } } #declare M_Vicks_Bottle_Glass = material {texture {Vicks_Bottle_Glass} interior {Glass_Interior}} //***************************************************************************** // METAL FINISHES //***************************************************************************** #declare Metal = finish { metallic ambient 0.2 diffuse 0.7 brilliance 6 reflection 0.25 phong 0.75 phong_size 80 } //***************************************************************************** // METAL TEXTURES //***************************************************************************** // Good looking "metal" textures #declare Chrome_Texture = texture { pigment { rgb <0.658824, 0.658824, 0.658824> } finish { ambient 0.3 diffuse 0.7 reflection 0.15 brilliance 8 specular 0.8 roughness 0.1 } } // A series of metallic textures using the Metal finish: #declare Brass_Texture = texture { pigment{ rgb <0.71, 0.65, 0.26>} finish{ Metal }} #declare Gold_Texture = texture { pigment{ rgb <0.85, 0.85, 0.10>} finish{ Metal }} #declare Bronze_Texture = texture { pigment{ rgb <0.55, 0.47, 0.14>} finish{ Metal }} #declare Copper_Texture = texture { pigment{ rgb <0.72, 0.45, 0.20>} finish{ Metal }} #declare Silver_Texture = texture { pigment{ rgb <0.90, 0.91, 0.98>} finish{ Metal }} // In the future, please refer to Chrome_Texture by this name. I'd like // to scrap the old name someday. Ditto with other "_Texture" names! #declare Chrome_Metal = texture { Chrome_Texture } #declare Brass_Metal = texture { Brass_Texture } #declare Bronze_Metal = texture { Bronze_Texture } #declare Gold_Metal = texture { Gold_Texture } #declare Silver_Metal = texture { Silver_Texture } #declare Copper_Metal = texture { Copper_Texture } // A couple highly reflective metal textures. #declare Polished_Chrome = texture { pigment { rgb <0.2, 0.2, 0.2> } finish { ambient 0.1 diffuse 0.7 brilliance 6.0 reflection 0.6 phong 0.8 phong_size 120 } } #declare Polished_Brass = texture { pigment { rgb <0.578, 0.422, 0.195> } finish { metallic ambient 0.1 diffuse 0.8 brilliance 6.0 reflection 0.4 phong 0.8 phong_size 120 } } // Beautiful military brass texture! #declare New_Brass = texture { pigment { rgb <0.70, 0.56, 0.37> } finish { ambient 0.35 diffuse 1.0 brilliance 15 phong 0.41 phong_size 5 } } // Spun Brass texture for cymbals & such #declare Spun_Brass = texture { New_Brass normal { waves 0.35 frequency 2 scale 0.01 } } // Brushed aluminum (brushed along X axis) #declare Brushed_Aluminum = texture { Chrome_Metal normal { bumps -0.5 scale <1, 0.001, 0.001> } } #declare SilverFinish = finish { metallic ambient 0.25 diffuse 0.65 reflection 0.45 brilliance 6 phong 1 phong_size 100 } // Each of these looks good. Slightly,r as you go down #declare Silver1_Colour = color rgb <0.94, 0.93, 0.83>; #declare Silver2_Colour = color rgb <0.94, 0.93, 0.86>; #declare Silver3_Colour = color rgb <0.94, 0.93, 0.90>; #declare Silver1 = texture { pigment { Silver1_Colour } finish { SilverFinish } } #declare Silver2 = texture { pigment { Silver2_Colour } finish { SilverFinish } } #declare Silver3 = texture { pigment { Silver3_Colour } finish { SilverFinish } } // Interesting texture -- Give it a try. // Sort of a "rgb <0.0, 0.0, 0.0> Hills Gold", black, white, and orange specks or splotches. #declare Brass_Valley = texture { pigment { granite color_map { [0.3 rgb <0.82, 0.57, 0.46>] [0.3 rgb <0.00, 0.00, 0.00>] [0.6 rgb <0.85, 0.85, 0.95>] [0.6 rgb <0.82, 0.57, 0.46>] [1.0 rgb <0.85, 0.85, 0.95>] } } finish { metallic brilliance 6.0 reflection 0.75 phong 0.75 } } #declare Rust = texture { pigment { granite color_map { [0.0 rgb <0.89, 0.51, 0.28>] [0.4 rgb <0.70, 0.13, 0.00>] [0.5 rgb <0.69, 0.41, 0.08>] [0.6 rgb <0.49, 0.31, 0.28>] [1.0 rgb <0.89, 0.51, 0.28>] } } finish { ambient 0.2 diffuse 0.4 } } #declare Rusty_Iron = texture { pigment { granite color_map { [0.0 rgb <0.42, 0.20, 0.20>] [0.5 rgb <0.50, 0.50, 0.02>] [0.6 rgb <0.60, 0.20, 0.20>] [0.6 rgb <0.30, 0.20, 0.20>] } } finish { ambient 0.2 diffuse 0.6 } normal { wrinkles 1 scale 0.1 } } #declare Soft_Silver = texture { pigment { Silver1_Colour } finish { metallic ambient 0.2 diffuse 0.35 specular 0.85 roughness 0.01 reflection 0.45 brilliance 1.5 } } #declare Metallic_Finish = finish { metallic ambient 0.1 diffuse 0.65 specular 0.85 roughness 0.01 reflection 0.45 brilliance 1.5 } #declare New_Penny = texture { pigment { rgb <0.6, 0.45, 0.4> } finish { Metallic_Finish } } #declare Tinny_Brass = texture { pigment { rgb <0.70, 0.56, 0.37> } finish { Metallic_Finish } } #declare Gold_Nugget = texture { pigment { rgb <0.5, 0.35, 0.25> } finish { Metallic_Finish } } #declare Aluminum = texture { pigment { rgb <0.55, 0.5, 0.45> } finish { Metallic_Finish } } #declare Bright_Bronze = texture { pigment { rgb <0.36, 0.28, 0.20> } finish { Metallic_Finish } } //***************************************************************************** // SPECIAL EFFECTS //***************************************************************************** // Red & white stripes - Looks best on a y axis Cylinder // It "spirals" because it's gradient on two axis #declare Candy_Cane = pigment { gradient x+y color_map { [0.25 rgb <1,0,0>] [0.25 rgb <1,1,1>] [0.75 rgb <1,1,1>] [0.75 rgb <1,0,0>] } } // Orange and Clear stripes spiral around the texture // to make an object look like it was "Peeled" // Now, you too can be M.C. Escher #declare Peel = pigment { gradient x+y color_map { [0.25 rgbf <1.0, 0.5, 0.0, 0.0>] [0.25 rgbf <1.0, 1.0, 1.0, 1.0>] [0.75 rgbf <1.0, 1.0, 1.0, 1.0>] [0.75 rgbf <1.0, 0.5, 0.0, 0.0>] } } #declare Y_Gradient = pigment { gradient y color_map { [0.00 rgb <1,0,0>] [0.33 rgb <0,0,1>] [0.66 rgb <0,1,0>] [1.00 rgb <1,0,0>] } } #declare X_Gradient = pigment { gradient x color_map { [0.00 rgb <1,0,0>] [0.33 rgb <0,0,1>] [0.66 rgb <1,1,1>] } } // Wavy water // Requires a sub-plane, and may require scaling to fit your scene. //A far better water texture can be done using a perfectly clear pigment //and fade_color or absorbing media in the interior. #declare Water = texture { pigment{ rgbf <0.0, 0.0, 1.0, 0.9> } normal { ripples 0.75 frequency 10 } finish { reflection {0.3, 1 fresnel} conserve_energy } } #declare Water_Int = interior { ior 1.33 } #declare M_Water = material { texture {Water} interior {Water_Int} } #declare Cork = texture { pigment { granite color_map { [0.00 rgb <0.93, 0.71, 0.532>] [0.60 rgb <0.98, 0.81, 0.60>] [0.60 rgb <0.50, 0.30, 0.20>] [0.65 rgb <0.50, 0.30, 0.20>] [0.65 rgb <0.80, 0.53, 0.46>] [1.00 rgb <0.85, 0.75, 0.35>] } } finish{ specular 0.1 roughness 0.5 } scale 0.25 // Generally looks best scaled longer on one axis } //The correct spelling is "Lightning", not "Lightening" #declare Lightning_CMap1 = color_map { [0.00 rgbf <1,1,1,0>] [0.15 rgbf <0.94, 0.81, 0.99, 0.65>] [0.25 rgbf <0.94, 0.81, 0.99, 0.65>] [0.30 rgbf <0.87, 0.58, 0.98, 0.85>] [0.40 rgbf <0.87, 0.58, 0.98, 0.85>] [0.45 rgbf <0.73, 0.16, 0.96, 0.95>] } #declare Lightning1 = texture { pigment { marble color_map { Lightning_CMap1 } turbulence 0.5 } finish { ambient 1 } } #declare Lightning_CMap2 = color_map { [0.00 rgbf <1,1,1,0>] [0.10 rgbf <0.94, 0.81, 0.99, 0.65>] [0.20 rgbf <0.94, 0.81, 0.99, 0.65>] [0.30 rgbf <0.87, 0.58, 0.98, 0.85>] [0.45 rgbf <0.87, 0.58, 0.98, 0.85>] [0.65 rgbf <0.73, 0.16, 0.96, 0.95>] } #declare Lightning2 = texture { pigment { granite color_map { Lightning_CMap2 } turbulence 0.5 } finish { ambient 1 } } // Starfield, by Jeff Burton #declare Starfield = texture { pigment { granite color_map { [0.72 rgb 0.00 ] // No Stars in this area [0.72 rgb 0.20 ] // Very Very Faint Stars [0.75 rgb 0.40 ] // Very Very Faint Stars [0.78 rgb 0.60 ] // Very Faint Stars [0.81 rgb 0.80 ] // Faint Stars [0.85 rgb 0.95 ] // Medium White Stars [0.91 rgb 1.00 ] // White Stars [0.91 rgb 0.00 ] // No Stars in this area } scale .015 } finish { ambient 1 } } // Irregular_Bricks_Ptrn() authors: Ron Parker and Rune S. Johansen /* Irregular_Bricks_Ptrn( Mortar Thickness, X-scaling, Variation, Roundness ) This function pattern creates a pattern of bricks of varying lengths on the x-y plane. This can be useful in building walls that don't look like they were built by a computer. Note that mortar thickness between bricks can vary somewhat, too. Mortar Thickness: How thick the mortar should be (0-1) X-scaling: The scaling of the bricks (but not the mortar) in the x direction Variation: The amount by which brick lengths will vary (0=none, 1=100%) Roundness: The roundness of the bricks (0.01=almost rectangular, 1.0=very round) Sample code: plane {-z, 0 texture { pigment { Irregular_Bricks_Ptrn (0.1, 1, 0.5, 0.5) color_map { [0.01, rgb 0.9] [0.01, rgb 0.6] } } normal { Irregular_Bricks_Ptrn (0.1, 1, 0.5, 0.5) 2 } } }*/ #macro Irregular_Bricks_Ptrn (T, S, V, R) #local FunctionXGrad = function { pattern { gradient x triangle_wave warp {turbulence V*x octaves 1} warp {planar z 0} warp {repeat z offset< 0.5, 5, 0>} rotate -90*x } } #local FunctionYGrad = function { pattern { gradient y triangle_wave translate 0.5*y } } function { pow (1-min(1, ( +pow(FunctionXGrad(x/S,y,z)*(1+T/S),1/R*2) +pow(FunctionYGrad(x/S,y,z)*(1+T ),1/R*2) ) ),R/2) } #end // Hex_Tiles_Ptrn() authors: Ron Parker and Juha Nieminen #macro Hex_Tiles_Ptrn() #local G = pigment {gradient x color_map {[0 rgb 1][1 rgb 0]} scale sqrt(3)/2+.001 } #local B = pigment {radial pigment_map { #local I = 0; #while(I<6) [I/6 G rotate(30+60*I)*y] [(I+1)/6 G rotate(30+60*I)*y] #local I = I + 1; #end } } pigment_pattern { #local T2 = sqrt(3)/2; radial pigment_map { [0 B translate < 0.5,0,-T2>] [1/3 B translate < 0.5,0,-T2>] [1/3 B translate <-1.0,0, 0>] [2/3 B translate <-1.0,0, 0>] [2/3 B translate < 0.5,0, T2>] [1 B translate < 0.5,0, T2>] } translate x warp {repeat 1.5*x flip x} warp {repeat.5*sqrt(3)*z flip z} } #end // Tiles_Ptrn() author: Rune S. Johansen #macro Tiles_Ptrn() boxed scale 0.5 translate <0.5,0.5,0> warp {repeat x} warp {repeat y} warp {planar z, 0} #end // Star_Ptrn() author: Ron Parker /* Star pattern This macro creates a pattern that resembles a star. It can be used together with color_maps, pigment_maps, texture_maps etc. The pattern is in the X-Z plane, centered around the origin. Star_Ptrn( Radius, Points, Skip ) Radius: the radius of a circle drawn through the points of the star Points: the number of points on the star. Skip: the number of points to skip when drawing lines between points to form the star. A normal 5-pointed star skips 2 points. A Star of David also skips 2 points. Skip must be less than /2 and greater than 0. Integers are preferred but not required. Skipping 1 point makes a regular polygon with sides. Example usage: (This creates a five-pointed star as on a US flag) pigment { Star_Ptrn(1,5,2) color_map {[0,rgb 1][1,blue 0.5]} }*/ #macro Star_Ptrn(SR, NP, SP) #local P = pigment {radial #local PA = 0.5-(SP/NP); pigment_map { [.5-PA/2 rgb 0] [.5-PA/2 rgb 1] [.5+PA/2 rgb 1] [.5+PA/2 rgb 0] } translate SR*x } pigment_pattern {radial pigment_map { #local I=0; #while(IlocaYDA$maxp nameϴmpost FF=prepp  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~" ~    " & 0 :!""     & 0 9!"""    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_stuvwxyz{|}~afpnoij`klbdemcghrq , "$%&(,.0678:<=?@BDEHIKLhhhhhhhhhhhhhhhhhhhhhhhhhhhh  &'(39=?MP""""""')*+,./268:<=>@EFHJLMPRTUZ\^dfhlpux  $9GX,++ZXC fa#BCCfa#BC QXC PX+C_SX+YYC`PX+C_SX+YYY+ +CCUXCVXYCC`bh Cb `C#DaC#DYY-,ECCaad Q-,E`Q-,CCab RX! Y #BCC`bh C`C#D CaC#D-, C`#ED ` C`#ED C` #B`#B E#B`E#B- ,#p-,#BCX+CCEDCCEC@caD+Y-,#B-,+XEhCCafY @PX!@Y@b#B- ,C fa QXYC fa SXYCCfa@ba``#B-, EhD ` EFvhE`D-, `EE`h %`EFvha%#D#`#D- ,bCECEacCE`#D>- ,bC`ECEacCE`#D>- , `//-(j>/<2</<2< ?<</<<103!%!!(V~j(&xU///<<Y<</<< ] < < ?<<<<? < <107#&&&&546322#"&546r  &" !!!!8tql0%,,%0lqt   !N/<< V < </<<V<<? < <<<<<<<10#&&&&54632#&&&&54632Z    &=7777=&&=7777=g/ < <<<<<<</<<<< < < <<<</<<<<?<<<103733733#3##7##7537#337343332Ya$040041Y`$$$&&'(-4;}/ <<<#<$<.V?<@< ?<<<<9,"-*J7 4D%'MIE "22f/<<N<BJIA#Z/< <@<< ? <<<<#?<< </?<@<A<<(/)<*<D<</<<6E7<8< ?<<;<<=<%?<<+,<-<102#"&&&5467&&&&546666654&#"32654&'*G3)3(<'6H),H5I>"00A@(2=5/<&/",$!-3I()8!0.' 995%B1-=$AW)-,.!;,#Q5(8>%.)%Y%^#4&:(G!/^)/*<+< T<</<<V /E<<6UVFU] .C[U,E2 @l7#\K7F# XD'C1#FN7B&2=/\A#77#! /<( < <</<<<V<<<<x<B&2=/7##77# 4/<<V<<&/'<(< ^ < <p<w<! ?"<#<<<+?<,<-<4<<</<<<< ?<10#&&#"32754!"#"&&&54666323267vh\4b"""*Ha8O5'8 '7@L1M^5:aH->* Tq1.-}EHqN*/1$%0 7^HKc9+ /!<"<#<*V<<<<+< / < < <V<<<<<x<<<*%x<<&< x<<< 'x<<(<?<<<<< ?<&<'<10!3!52654!"!54!"3!5265,44,,4(4,7+5(5++55+P7##77##77##707##7(l/<<< V < < < x<<<x<<< ?< <<<?<<<<1074!"3!526w+5(5++55+l7##707##y/<<< V < < < x<x< < ?<<<<?<<<< <<1074!"#"&56632326+5(5+iU%<# S7##7vt&($%11/<<<(V < < <)<*<1x<,<-</<</<.J"F_o8I`77`I;r`D "C6" FuT//TuFFxW1(/<<<V<<<</ < <"Y<#<$<x<<<x< ?<<<<<<<<?<<</ < ?<10#&&#"#"&'&&#"#533266654&&&&&546663232653 _R- 7S`S7;T6#2 %9H&.$6P^P66J-#!\k &$822:H0(G5  .H1)*;2.9I4'C1   8/<<V< < x< x < ? < <<<?<<<<<<<<<10!#&&##3!5265#"#( =CJ,44,JC= >B7##7B>)/< J29*w4363Q:84/t /!<</ <<)/*<+,</<<* ?<<+<,?<< <<<<<<"<103#5266677'&!"765&3!566'h,+% E1?7k| =(:!2.7*" %.-)&1"*#72("/<<V<< / < <m<x</"}< / < ?<<<<?< <<< < <<C/<<<<G<?<<?<<103#3)z.. ?<?<10#3// >C/<<<<G<?<<?<<10#53#53.. H ?<10#3#H< ?Hp$n&/<<10!!&d. ?<<103# ~5 -9/<<3I4<5<-/<<<I <<<<.,%?U0/R3,#:G!-:-'$=" 8K*9cK+FuZ"<,! $f/<<I<< / <<V<<$ ?<<<< ? < <<< <<10"&&&5466632#"&54&#"3267)H5";O-GZ#*9@&6!;>c $>S/4\D'?.  +]A,O;#G1Wa "5u/ < <-Q./>.#K%/<<<$<%< I <<<<< h <o< ? < << <?<"E#=.'* 3#,1BN/<<<<:1;<<</<<4G5<6+*'5&/GY 7-P`3+" ;F."<-B,/5B/D[G5>V+/<<<<I< < <"/#<$<%<I<<<< h <"h<h</ < ?<<< < <<<< +>(&, +HT, !-'$= 3*/+<,<-<II < DhE<-3h4<"h#<61h2<% h!#2WA%.=#2XB&>%2%/<<<&I < <<<<'<(<,/-<.<Q<<"h#<% h!<!?"<#< <$< ?< <<2.B>/$;W'$=g$";N-9`G'o1());dQfd- >0/<<I<<<<<</ < <(M)<*<h<h<?<<<< ?<<<<#<$<%< ?<<-.S/3 ?-. ,/$",&:W4";O-6`G)"1() 1B%)G4&Y#w#/<<<I < <<< h!<#h<#<< ? %0 D.%,&8C8&RN)61%(&%4'7I 3H$%%3';P if/<< I<< < < h<v < ?<< << /<< << ?<10#526733#32673#"&5PH0G oo>4*(bF" /<;0$/<<I < <<</<<I $    ***++***    $>,wC/D(1n/< /?<@0>/<<<5<<<?<<?<<107##q000G#9<,vO_L/M"  Ja88aJJ`88`JCwW33WwCCwY32Wx )0< /!<"<&='<(</<<6B7<8<0/<<<1B<<<2<1[</ < < <<<9<:<;<+?,<-<<<10667#"&'#"&5466674&&&#"#"&54666325326  &9 *%7?  %+'.I& Y %*! !i2 * ?<<< ? ?<< < ?10!#'73#'73F5-/<3< ?<<<10!#5!5,΢ /<</<<103#<!.BV8/9<:,- <G,:A'7>n%N4<@(:+>6/=71 LD.d/<<:<<+/,<-<7<<(/)<*<<< ?<<<<./<<1052654&#"'6632#"&&&5463232654&a#: ( =+# $0; **F'% $* * -#"0 )/% ?<<10#75,/./F*Y .-H:&$<AO#$&%0B2>`/<1</<1<X< < <?<<<<<?<<<10###"&&&5463!&b&4X?#np^,H4[fAp ,/<<Y < </<< <<102#"&546y!!!!   ANP/<<><<<\< <]</<<<< ?<10526554&#"'733K#  k#N"-2%V / < <B<</<<%B<<"/#<$<<<?<<<<10#"&&&54666324&&&#"326F*8 8)*:#!6'I $ !*#7*&6"9*(6?60"!52$<2 * ?<< < ? ?<< < ?1037'3#7'3倀< "&/<< < ><< <#</<<><<<\<<!]"<_ << ?<<< <"/< <<<<\< <]<5 ?,- <G,:A'7>n%N"-j/H4<@(:+>6/=71 L.2=A+/,<-<7<</<<:<<9/3<:<=<4>/<5<>;_<<q<967<3 ?4<./<<5/6<<<=< ?<#)# !!!! 9ZTX8LV&9( %  AB6NM\   _<|>>|"(&I(P.# It.FX*A"As!2A%<!AAX%X*X%-< q( Vt @ 0:N n 0)-  &     $ %    X2"NeN_&A ApAHJ2*A*AAA^*d  J2&; _A<@ 2]"a %X*d+  A,A\26<)<7 :2d"+5789:G"$"("0"2"5"6"7E"8":w"D"E"F"P"R"V"W"X"Z"""H"U#"#6#7#8#:##Z#V# $"$9$$$ $8%"%7%:%9%% % &W&X&Z'"'B'F'J'P'Z'' ''''('0'2'E'H'R'W'X("(4(7(8(:(W)Z)W)X+"+F+P+V++ ,$,0,F,P,Z,,2,B,V-0-5-7u-8g-:Y-Z--%-2-6-V-W-X-1/B/P/V/W0"050708090:00 0+061"1F1B1P1T11 11718161:1E2"262728292:22 35383:3$3(3036373F3P3U3V3W3X454647484:44 5"505$5B5D5F5P5T5X5Z55 555545E5H5W5V5Y5S6"6062646H6E6P6B6F6T66 7"j707B7F7J7P7S7V7Z77 7777(7$727R8"w808B8F8J8P8S8V8Z88 8888(82848$8E8H8N909$992:0:"g:$:B:F:J:P:V:: ::::4:(:2:E:R:WA"YA+BXDXDWFZFXG}GGUH"PXPWSS T U VWWW WHWPWDWEWFXX XPXFXHXBXDXEYFZZ ZFZPZBZDZEZW33I~Mi^<_  X m 6 ! / 6b !sk)AVmzl]+*5| Z !U!""#m#$=$% %&'&u&&'D''(b()_)**,3,L,,-r-.7.M.c.///0|1D12|23t4<455-5I6;6X677T778n889199:^;;?@BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a      asciicircumquotesinglbase afii10100FLW136 quilsinglleftendashemdashFLW152quilsinglright afii10062 afii10110 afii10057 afii10050 afii10053FLW173 afii10056 afii10055 afii10103 afii10098 afii61352 afii10101 afii10105 afii10054 afii10102 afii10104zK ` ` ` `S#BJv? `? >9 FD>9FD>9FD>9FD>9FD ++++++ +++++ + spiral.df3H0Ӿ0ӾʙPʙ0 stage1.incI0Ӿ0ӾʙPʙ} stars.incJRRʙPʙ stdcam.incK0Ӿ0ӾʙPʙ stdinc.incL0Ӿ0ӾʙPʙ stoneold.incMVVʙPʙ  stones.incN\\ʙPʙ stones1.incObbʙPʙKp\H6" stones2.incPffʙPʙ\! strings.incQ0Ӿ0ӾʙPʙ  sunpos.incRjjʙPʙteak.mapS0Ӿ0ӾʙPʙ2test.pngT0Ӿ0ӾʙPʙ textures.incUllʙPʙF   timrom.ttfV0Ӿ0ӾʙPʙH  &tone_mapping.incW``ʙPʙB"transforms.incX0Ӿ0ӾʙPʙ ttffonts.catY0Ӿ0ӾʙPʙ whiteash.mapZ0Ӿ0ӾʙPʙ2 woodmaps.inc[ppʙPʙH woods.inc\ttʙPʙG .DS_Store arrays.incash.map benediti.map bubinga.map bumpmap_.png cedar.map  chars.inc! colors.inc" consts.inc^:zT0   n^N:$ plasma2.png:0Ӿ0ӾʙPʙ. plasma3.png;0Ӿ0ӾʙPʙ'@ povlogo.ttf<0Ӿ0ӾʙPʙ povmap.png=0Ӿ0ӾʙPʙC pprocess.inc>Ȣ־ȢʙPʙd! rad_def.inc?<<ʙPʙrand.inc@ΖΖʙPʙ#h rdgranit.mapA0Ӿ0ӾʙPʙ2 screen.incB@@ʙPʙ shapes.incC0Ӿ0ӾʙPʙp shapes2.incDDDʙPʙ"shapes_old.incEFFʙPʙ8 shapesq.incFJJʙPʙ+ skies.incGNNʙPʙ<*  |dP:$Icon , ʙOʙlogo.inc-ʙOʙ rB marbteal.map.0Ӽ0ӼʙOʙ2Cmath.inc/3Y3YʙOʙ?G mechsim.inc0Ȣ־ȢʙOʙK metals.inc188ʙOʙ1h  mp_consts.inc2Ȣ־ȢʙOʙl&mp_functions.inc3Ȣ־ȢʙOʙm mp_types.inc4Ȣ־ȢʙOʙ#n mtmand.pot50Ӿ0ӾʙOʙ q  mtmandj.png60Ӿ0ӾʙOʙ | orngwood.map70Ӿ0ӾʙOʙ2~ physics.inc8ʙʙʙOʙ" pinkmarb.map90Ӿ0ӾʙOʙ2<$  zfP@( bumpmap_.png0Ӻ0ӺʙOʙ 8 cedar.map0Ӻ0ӺʙOʙ) chars.inc ʙOʙ; colors.inc!ʙOʙ,9 consts.inc"ʙOʙ " crystal.ttf#0Ӽ0ӼʙOʙ?\# cyrvetic.ttf$0Ӽ0ӼʙOʙ|' debug.inc%0Ӽ0ӼʙOʙ@/ finish.inc&ʙOʙX0 fract003.png'0Ӽ0ӼʙOʙ &1  functions.inc(ʙOʙa4 glass.inc)ʙOʙ$u;  glass_old.inc* ʙOʙ > golds.inc+ʙOʙ!?6$ r^J8&TincludeDʙʙʙPʙKA Insert Menu%]n3Un3UʙSʙKA MegaPOV.appzzʙ\ʙKA povlegal.docȽ9Ƚ9ʙ\ʙWDBNMSWDp3Q!scenes"1313ʙ\ʙKA!!!!!ReadMe..rtf .DS_Storedistribution-license.txtinclude .DS_StoreȽ6Ƚ6ʙOʙ@ arrays.inc0Ӻ0ӺʙOʙash.map0Ӻ0ӺʙOʙ2 benediti.map0Ӻ0ӺʙOʙ2  bubinga.map0Ӻ0ӺʙOʙ2 : \ J (  Bh|Y Megapov_osxTinclude bumpmap_.pngIcon  plasma2.png spiral.df3 stones2.inc#] 90 - Cameras(D]J0 - Pattern-Texture attributes <^20 - Orthographic scene.txt h $q'glass.inc'.txt r :90 - max_intersections.txt*Math Operators.txt(ifdef example.txt470 - Global photons.txt0Camera definition.txt.panoramic camera.bmp parallel.txtblob.bmp8height_field+imagemap.bmp plane.bmp sphere.bmptext.bmp;L hollow.txt"Ydifference.txt f material.txt!Jn"triangle texture interpolation.txt" average.txt# crackle.txt$ gradient.txt%& radial.bmp' waves.bmp)>20 - frequency attribute.bmp*280 - mapping warps.bmp+ scale.txt, alpha.icns-cut.pngS prefs.pngR5  important.gif. 0 b_delete.jpg/ ge_pts.jpg1 m_menu.jpg2(wd_gen_vector.jpg40wd_pref_histogr_d.jpg30A\6"_internals.htmlE_ objects.htmlF8_tutorials_simulation.htmlCh caution.png7 h important.tif8hup.gif9 con_vk.png:.formula004_print.png; macro03e.png= macro10d.png>0rad_internal_300a.png?  tut_hdr_1.png@$tut_nappe03.jpg<BD"tutorial07.povI>applicationLocalized.stringsG.functionTemplate.nibO(mediaTemplate.nibMH&keyedobjects.nibJ/ classes.nibK&>keyedobjects.nibLQinfo.nibNdP&tkeyedobjects.nibQinfo.nibWU glowlits.povY pat_proj.povV.camera_view_desk.povX"hysteresis.povZ R F  z N B & r > j 4 Z8`2rX8`T0xP0$pL@ V&bnJ0// Persistence of Vision Ray Tracer version 3.5 Include File // // This include file is part of MegaPOV #ifdef(Tone_Mapping_Inc_Temp) // do nothing #else #declare Tone_Mapping_Inc_Temp = version; #ifdef(View_POV_Include_Stack) # debug "including tone_mapping.inc\n" #end #version unofficial megapov 1.2; // ======================================================================================= // Clip_Colors() // // generates a user defined function for use in the MegaPOV // tone mapping patch that applies a hard clipping at 1.0 // // with antialiasing this results in POV-Ray 3.5 behaviour. // // ======================================================================================= #macro Clip_Colors() tone_mapping { function { min(1, x) } } #end // ======================================================================================= // Film_Exposure() // // generates a user defined function for use in the MegaPOV // tone mapping patch. This function is the same as used in the // film exposure simulation patch // // Parameters: // Exposure - exponent for the exposure curve // Exposure_Gain - gain for the exposure curve // // ======================================================================================= #macro Film_Exposure(Exposure, Exposure_Gain) tone_mapping { function { Exposure_Gain - exp( -Exposure * x ) * Exposure_Gain } } #end // ======================================================================================= // Film_Exposure_Invert() // // like Film_Exposure() but also generates an inversion function. // this results in linear output like without tone mapping but applies // the antialiasing for the used exposure settings. // // Parameters: // Exposure - exponent for the exposure curve // Exposure_Gain - gain for the exposure curve // // ======================================================================================= #macro Film_Exposure_Invert(Exposure, Exposure_Gain) tone_mapping { function { Exposure_Gain - exp( -Exposure * x ) * Exposure_Gain } inverse function { - ln(1 -min(0.9999, x/Exposure_Gain)) / Exposure } } #end // ======================================================================================= // Gamma_Correct() // // generates a user defined function for use in the MegaPOV // tone mapping patch. This function applies a gamma correction. // // NOTE: it is not a good idea to use this as a replacement for // the internal gamma correction to do actual gamma correction. // It may however be useful for scenes that are designed for being // rendered without gamma correction (like for example certain // older POV-Ray sample scenes). // // Parameters: // Gamma - gamma correction factor // // ======================================================================================= #macro Gamma_Correct(Gamma) tone_mapping { function { pow ( x, Gamma ) } } #end // ======================================================================================= // Brightness_Contrast() // // generates a user defined function for use in the MegaPOV // tone mapping patch. This function applies brightness and contrast // adjustments. These are linear operations so they won't affect the // antialiasing quality. // // Parameters: // Brightness - brightness adjustment // Contrast - contrast adjustment // // ======================================================================================= #macro Brightness_Contrast(Brightness, Contrast) tone_mapping { function { (x-0.5)*Contrast+0.5+Brightness } } #end #end//tone_mapping.inc // Persistence of Vision Ray Tracer version 3.5 Include File // File: transforms.inc // Last updated: 2001.8.9 // Description: Macros for dealing with transforms #ifndef(TRANSFORMS_INC_TEMP) #declare TRANSFORMS_INC_TEMP = version; #version 3.5; #ifdef(View_POV_Include_Stack) #debug "including transforms.inc\n" #end #include "math.inc" // -------------------- // Transformation macros: // -------------------- // Reorients and deforms object so original x axis points along A, original y along B, // and original z along C. #macro Shear_Trans(A, B, C) transform { matrix < A.x, A.y, A.z, B.x, B.y, B.z, C.x, C.y, C.z, 0, 0, 0> } #end #macro Matrix_Trans(A, B, C, D) transform { matrix < A.x, A.y, A.z, B.x, B.y, B.z, C.x, C.y, C.z, D.x, D.y, D.z> } #end // "stretch" along a specific axis #macro Axial_Scale_Trans(Axis, Amt) transform { transform {Point_At_Trans(Axis) inverse} scale <1,Amt,1> Point_At_Trans(Axis) } #end // rotate around a specific axis // Author: Rune S. Johansen #macro Axis_Rotate_Trans(Axis, Angle) #local vX = vaxis_rotate(x,Axis,Angle); #local vY = vaxis_rotate(y,Axis,Angle); #local vZ = vaxis_rotate(z,Axis,Angle); transform { matrix < vX.x,vX.y,vX.z, vY.x,vY.y,vY.z, vZ.x,vZ.y,vZ.z, 0,0,0 > } #end // Rotate around a specific point #macro Rotate_Around_Trans(Rotation, Point) transform { translate -Point rotate Rotation translate Point } #end // based on original Reorient() macro by John VanSickle #macro Reorient_Trans(Axis1, Axis2) #local vX1 = vnormalize(Axis1); #local vX2 = vnormalize(Axis2); #local Y = vcross(vX1, vX2); #if(vlength(Y) > 0) #local vY = vnormalize(Y); #local vZ1 = vnormalize(vcross(vX1, vY)); #local vZ2 = vnormalize(vcross(vX2, vY)); transform { matrix < vX1.x, vY.x,vZ1.x, vX1.y,vY.y,vZ1.y, vX1.z,vY.z, vZ1.z, 0,0,0 > matrix < vX2.x,vX2.y,vX2.z, vY.x,vY.y, vY.z, vZ2.x,vZ2.y,vZ2.z, 0,0,0 > } #else #if (vlength(vX1-vX2)=0) transform {} #else #local vZ = VPerp_To_Vector(vX2); transform { Axis_Rotate_Trans(vZ,180) } #end #end #end // Similar to Reorient_Trans(), points y axis along Axis. #macro Point_At_Trans(YAxis) #local Y = vnormalize(YAxis); #local X = VPerp_To_Vector(Y); #local Z = vcross(X, Y); Shear_Trans(X, Y, Z) #end // Calculates a transformation which will center the bounding box of Object // along specified axis Axis // Usage: // object {MyObj // Center_Trans(MyObj, x) center along x axis // You can also center along multiple axis: // Center_Trans(MyObj, x+y) center along x and y axis #macro Center_Trans(Object, Axis) #local Mn = min_extent(Object); #local Mx = max_extent(Object); transform {translate -Axis*((Mx - Mn)/2 + Mn)} #end // Calculates a transformation which will align the bounding box // of an object to a point. Negative values on Axis will align to // the sides facing the negative ends of the coordinate system, // positive values will align to the opposite sides, 0 means // not to do any alignment on that axis. // Usage: // object {MyObj // Align_Trans(MyObj, x, Pt) // Align right side of object to be coplanar with Pt // Align_Trans(MyObj, -y, Pt) // Align bottom of object to be coplanar with Pt #macro Align_Trans(Object, Axis, Pt) #local Mn = min_extent(Object); #local Mx = max_extent(Object); transform { #if(Axis.x < -0.5) translate x*(Pt - Mn.x) #else #if(Axis.x > 0.5) translate x*(Pt - Mx.x) #end #end #if(Axis.y < -0.5) translate y*(Pt - Mn.y) #else #if(Axis.y > 0.5) translate y*(Pt - Mx.y) #end #end #if(Axis.z < -0.5) translate z*(Pt - Mn.z) #else #if(Axis.z > 0.5) translate z*(Pt - Mx.z) #end #end } #end // Aligns an object to a spline for a given time value. // The Z axis of the object will point in the forward direction // of the spline and the Y axis of the object will point upwards. // // usage: object {MyObj Spline_Trans(MySpline, clock, y, 0.1, 0.5)} // // Spline: The spline that the object is aligned to. // // Time: The time value to feed to the spline, for example clock. // // Sky: The vector that is upwards in your scene, usually y. // // Foresight: How much in advance the object will turn and bank. // Values close to 0 will give precise results, while higher // values give smoother results. It will not affect parsing // speed, so just find the value that looks best. // // Banking: How much the object tilts when turning. Note that the amount // of tilting is equally much controlled by the ForeSight value. // // Author: Rune S. Johansen #macro Spline_Trans (Spline, Time, Sky, Foresight, Banking) #local Location = <0,0,0>+Spline(Time); #local LocationNext = <0,0,0>+Spline(Time+Foresight); #local LocationPrev = <0,0,0>+Spline(Time-Foresight); #local Forward = vnormalize(LocationNext-Location); #local Right = VPerp_To_Plane(Sky,Forward); #local Up = VPerp_To_Plane(Forward,Right); #local Matrix = Matrix_Trans(Right,Up,Forward,Location) #local BankingRotation = degrees(atan2( VRotation( VProject_Plane((LocationNext-Location),Sky), VProject_Plane((Location-LocationPrev),Sky), Up )*Banking ,1 )); transform { rotate BankingRotation*z transform Matrix } #end #macro vtransform(vec, trans) #local fn = function { transform { trans } } #local result = (fn(vec.x, vec.y, vec.z)); result #end #macro vinv_transform(vec, trans) #local fn = function { transform { trans inverse } } #local result = (fn(vec.x, vec.y, vec.z)); result #end #version TRANSFORMS_INC_TEMP; #end Three sample fonts are included in this directory. TIMROM.TTF is a proportional spaces serif font CYRVETIC.TTF is a proportional sans-spaces serif font They were donated to the POV-Team by their creator Ted Harrison CIS:70220,344 and were built using his FontLab for Windows by SoftUnion, Ltd. of St. Petersburg, Russia. CRYSTAL.TTF is a fixed space programmer's font donated courtesy of: Jerry Fitzpatrick Red Mountain Corporation redmtn@ix.netcom.com #declare WhiteAsh_Inc_Temp=version; /* Persistence of Vision Raytracer Version 3.1 White Ash wood color_map */ #declare M_WhiteAsh = color_map { [0.000000 rgb <0.345098, 0.219608, 0.109804>] [0.003922 rgb <0.345098, 0.219608, 0.156863>] [0.007843 rgb <0.360784, 0.203922, 0.109804>] [0.011765 rgb <0.360784, 0.203922, 0.141176>] [0.015686 rgb <0.360784, 0.219608, 0.125490>] [0.019608 rgb <0.360784, 0.219608, 0.141176>] [0.023529 rgb <0.360784, 0.235294, 0.156863>] [0.027451 rgb <0.360784, 0.235294, 0.156863>] [0.031373 rgb <0.376471, 0.219608, 0.109804>] [0.035294 rgb <0.392157, 0.235294, 0.141176>] [0.039216 rgb <0.392157, 0.235294, 0.156863>] [0.043137 rgb <0.392157, 0.250980, 0.172549>] [0.047059 rgb <0.392157, 0.250980, 0.188235>] [0.050980 rgb <0.392157, 0.266667, 0.219608>] [0.054902 rgb <0.407843, 0.235294, 0.141176>] [0.058824 rgb <0.407843, 0.235294, 0.172549>] [0.062745 rgb <0.407843, 0.250980, 0.156863>] [0.066667 rgb <0.407843, 0.282353, 0.188235>] [0.070588 rgb <0.423529, 0.250980, 0.141176>] [0.074510 rgb <0.423529, 0.266667, 0.156863>] [0.078431 rgb <0.423529, 0.282353, 0.188235>] [0.082353 rgb <0.423529, 0.298039, 0.219608>] [0.086275 rgb <0.439216, 0.282353, 0.172549>] [0.090196 rgb <0.439216, 0.298039, 0.188235>] [0.094118 rgb <0.439216, 0.298039, 0.203922>] [0.098039 rgb <0.439216, 0.298039, 0.219608>] [0.101961 rgb <0.439216, 0.313726, 0.235294>] [0.105882 rgb <0.439216, 0.313726, 0.250980>] [0.109804 rgb <0.454902, 0.298039, 0.172549>] [0.113725 rgb <0.454902, 0.329412, 0.250980>] [0.117647 rgb <0.470588, 0.313726, 0.219608>] [0.121569 rgb <0.470588, 0.329412, 0.235294>] [0.125490 rgb <0.470588, 0.329412, 0.250980>] [0.129412 rgb <0.470588, 0.345098, 0.250980>] [0.133333 rgb <0.486275, 0.345098, 0.266667>] [0.137255 rgb <0.549020, 0.392157, 0.298039>] [0.141176 rgb <0.564706, 0.360784, 0.266667>] [0.145098 rgb <0.580392, 0.298039, 0.188235>] [0.149020 rgb <0.580392, 0.360784, 0.282353>] [0.152941 rgb <0.580392, 0.376471, 0.235294>] [0.156863 rgb <0.580392, 0.392157, 0.313726>] [0.160784 rgb <0.580392, 0.407843, 0.329412>] [0.164706 rgb <0.580392, 0.423529, 0.313726>] [0.168627 rgb <0.596078, 0.345098, 0.172549>] [0.172549 rgb <0.596078, 0.360784, 0.188235>] [0.176471 rgb <0.596078, 0.360784, 0.250980>] [0.180392 rgb <0.596078, 0.376471, 0.203922>] [0.184314 rgb <0.596078, 0.376471, 0.266667>] [0.188235 rgb <0.596078, 0.392157, 0.219608>] [0.192157 rgb <0.596078, 0.392157, 0.250980>] [0.196078 rgb <0.596078, 0.392157, 0.282353>] [0.200000 rgb <0.596078, 0.392157, 0.298039>] [0.203922 rgb <0.596078, 0.423529, 0.266667>] [0.207843 rgb <0.611765, 0.329412, 0.203922>] [0.211765 rgb <0.611765, 0.345098, 0.188235>] [0.215686 rgb <0.611765, 0.345098, 0.219608>] [0.219608 rgb <0.611765, 0.360784, 0.203922>] [0.223529 rgb <0.611765, 0.360784, 0.235294>] [0.227451 rgb <0.611765, 0.360784, 0.266667>] [0.231373 rgb <0.611765, 0.376471, 0.219608>] [0.235294 rgb <0.611765, 0.376471, 0.250980>] [0.239216 rgb <0.611765, 0.376471, 0.282353>] [0.243137 rgb <0.611765, 0.392157, 0.235294>] [0.247059 rgb <0.611765, 0.407843, 0.298039>] [0.250980 rgb <0.611765, 0.407843, 0.345098>] [0.254902 rgb <0.611765, 0.423529, 0.282353>] [0.258824 rgb <0.611765, 0.439216, 0.313726>] [0.262745 rgb <0.627451, 0.360784, 0.188235>] [0.266667 rgb <0.627451, 0.376471, 0.250980>] [0.270588 rgb <0.627451, 0.392157, 0.203922>] [0.274510 rgb <0.627451, 0.407843, 0.266667>] [0.278431 rgb <0.627451, 0.423529, 0.235294>] [0.282353 rgb <0.627451, 0.423529, 0.345098>] [0.286275 rgb <0.627451, 0.439216, 0.392157>] [0.290196 rgb <0.643137, 0.345098, 0.156863>] [0.294118 rgb <0.643137, 0.360784, 0.219608>] [0.298039 rgb <0.643137, 0.392157, 0.235294>] [0.301961 rgb <0.643137, 0.392157, 0.282353>] [0.305882 rgb <0.643137, 0.407843, 0.313726>] [0.309804 rgb <0.643137, 0.423529, 0.298039>] [0.313726 rgb <0.643137, 0.439216, 0.266667>] [0.317647 rgb <0.643137, 0.439216, 0.313726>] [0.321569 rgb <0.658824, 0.360784, 0.188235>] [0.325490 rgb <0.658824, 0.376471, 0.172549>] [0.329412 rgb <0.658824, 0.376471, 0.250980>] [0.333333 rgb <0.658824, 0.392157, 0.203922>] [0.337255 rgb <0.658824, 0.407843, 0.219608>] [0.341176 rgb <0.658824, 0.407843, 0.250980>] [0.345098 rgb <0.658824, 0.439216, 0.345098>] [0.349020 rgb <0.658824, 0.439216, 0.376471>] [0.352941 rgb <0.658824, 0.470588, 0.329412>] [0.356863 rgb <0.658824, 0.470588, 0.376471>] [0.360784 rgb <0.658824, 0.486275, 0.392157>] [0.364706 rgb <0.674510, 0.376471, 0.172549>] [0.368627 rgb <0.674510, 0.376471, 0.235294>] [0.372549 rgb <0.674510, 0.392157, 0.298039>] [0.376471 rgb <0.674510, 0.423529, 0.298039>] [0.380392 rgb <0.674510, 0.439216, 0.250980>] [0.384314 rgb <0.674510, 0.454902, 0.282353>] [0.388235 rgb <0.674510, 0.454902, 0.313726>] [0.392157 rgb <0.674510, 0.486275, 0.360784>] [0.396078 rgb <0.690196, 0.376471, 0.203922>] [0.400000 rgb <0.690196, 0.392157, 0.250980>] [0.403922 rgb <0.690196, 0.407843, 0.188235>] [0.407843 rgb <0.690196, 0.407843, 0.219608>] [0.411765 rgb <0.690196, 0.423529, 0.313726>] [0.415686 rgb <0.690196, 0.439216, 0.188235>] [0.419608 rgb <0.690196, 0.439216, 0.219608>] [0.423529 rgb <0.690196, 0.439216, 0.345098>] [0.427451 rgb <0.690196, 0.454902, 0.250980>] [0.431373 rgb <0.690196, 0.470588, 0.298039>] [0.435294 rgb <0.690196, 0.470588, 0.345098>] [0.439216 rgb <0.690196, 0.470588, 0.376471>] [0.443137 rgb <0.690196, 0.501961, 0.345098>] [0.447059 rgb <0.690196, 0.501961, 0.407843>] [0.450980 rgb <0.690196, 0.517647, 0.423529>] [0.454902 rgb <0.705882, 0.392157, 0.219608>] [0.458824 rgb <0.705882, 0.423529, 0.250980>] [0.462745 rgb <0.705882, 0.423529, 0.282353>] [0.466667 rgb <0.705882, 0.423529, 0.298039>] [0.470588 rgb <0.705882, 0.454902, 0.282353>] [0.474510 rgb <0.705882, 0.454902, 0.313726>] [0.478431 rgb <0.705882, 0.501961, 0.360784>] [0.482353 rgb <0.705882, 0.517647, 0.298039>] [0.486275 rgb <0.705882, 0.517647, 0.392157>] [0.490196 rgb <0.705882, 0.533333, 0.423529>] [0.494118 rgb <0.705882, 0.549020, 0.454902>] [0.498039 rgb <0.721569, 0.407843, 0.188235>] [0.501961 rgb <0.721569, 0.407843, 0.250980>] [0.505882 rgb <0.721569, 0.423529, 0.219608>] [0.509804 rgb <0.721569, 0.439216, 0.188235>] [0.513726 rgb <0.721569, 0.454902, 0.219608>] [0.517647 rgb <0.721569, 0.454902, 0.250980>] [0.521569 rgb <0.721569, 0.454902, 0.345098>] [0.525490 rgb <0.721569, 0.470588, 0.266667>] [0.529412 rgb <0.721569, 0.470588, 0.360784>] [0.533333 rgb <0.721569, 0.486275, 0.298039>] [0.537255 rgb <0.721569, 0.486275, 0.329412>] [0.541176 rgb <0.721569, 0.501961, 0.407843>] [0.545098 rgb <0.721569, 0.501961, 0.439216>] [0.549020 rgb <0.721569, 0.517647, 0.329412>] [0.552941 rgb <0.721569, 0.533333, 0.423529>] [0.556863 rgb <0.737255, 0.423529, 0.266667>] [0.560784 rgb <0.737255, 0.454902, 0.282353>] [0.564706 rgb <0.737255, 0.454902, 0.313726>] [0.568627 rgb <0.737255, 0.470588, 0.235294>] [0.572549 rgb <0.737255, 0.501961, 0.282353>] [0.576471 rgb <0.737255, 0.501961, 0.360784>] [0.580392 rgb <0.737255, 0.533333, 0.360784>] [0.584314 rgb <0.737255, 0.533333, 0.392157>] [0.588235 rgb <0.737255, 0.549020, 0.439216>] [0.592157 rgb <0.752941, 0.423529, 0.219608>] [0.596078 rgb <0.752941, 0.439216, 0.188235>] [0.600000 rgb <0.752941, 0.439216, 0.235294>] [0.603922 rgb <0.752941, 0.439216, 0.266667>] [0.607843 rgb <0.752941, 0.454902, 0.219608>] [0.611765 rgb <0.752941, 0.454902, 0.345098>] [0.615686 rgb <0.752941, 0.470588, 0.250980>] [0.619608 rgb <0.752941, 0.486275, 0.298039>] [0.623529 rgb <0.752941, 0.486275, 0.329412>] [0.627451 rgb <0.752941, 0.501961, 0.313726>] [0.631373 rgb <0.752941, 0.501961, 0.376471>] [0.635294 rgb <0.752941, 0.533333, 0.329412>] [0.639216 rgb <0.752941, 0.549020, 0.423529>] [0.643137 rgb <0.752941, 0.564706, 0.454902>] [0.647059 rgb <0.752941, 0.580392, 0.486275>] [0.650980 rgb <0.768627, 0.454902, 0.298039>] [0.654902 rgb <0.768627, 0.470588, 0.219608>] [0.658824 rgb <0.768627, 0.486275, 0.360784>] [0.662745 rgb <0.768627, 0.501961, 0.266667>] [0.666667 rgb <0.768627, 0.517647, 0.345098>] [0.670588 rgb <0.768627, 0.517647, 0.407843>] [0.674510 rgb <0.768627, 0.533333, 0.376471>] [0.678431 rgb <0.768627, 0.549020, 0.360784>] [0.682353 rgb <0.768627, 0.549020, 0.392157>] [0.686275 rgb <0.768627, 0.549020, 0.454902>] [0.690196 rgb <0.784314, 0.454902, 0.203922>] [0.694118 rgb <0.784314, 0.454902, 0.235294>] [0.698039 rgb <0.784314, 0.470588, 0.250980>] [0.701961 rgb <0.784314, 0.470588, 0.329412>] [0.705882 rgb <0.784314, 0.486275, 0.282353>] [0.709804 rgb <0.784314, 0.517647, 0.282353>] [0.713726 rgb <0.784314, 0.533333, 0.313726>] [0.717647 rgb <0.784314, 0.549020, 0.423529>] [0.721569 rgb <0.784314, 0.564706, 0.454902>] [0.725490 rgb <0.784314, 0.580392, 0.423529>] [0.729412 rgb <0.784314, 0.596078, 0.470588>] [0.733333 rgb <0.800000, 0.486275, 0.219608>] [0.737255 rgb <0.800000, 0.486275, 0.250980>] [0.741176 rgb <0.800000, 0.486275, 0.345098>] [0.745098 rgb <0.800000, 0.501961, 0.329412>] [0.749020 rgb <0.800000, 0.517647, 0.266667>] [0.752941 rgb <0.800000, 0.517647, 0.360784>] [0.756863 rgb <0.800000, 0.517647, 0.392157>] [0.760784 rgb <0.800000, 0.549020, 0.329412>] [0.764706 rgb <0.800000, 0.549020, 0.376471>] [0.768627 rgb <0.800000, 0.564706, 0.360784>] [0.772549 rgb <0.800000, 0.580392, 0.392157>] [0.776471 rgb <0.800000, 0.596078, 0.439216>] [0.780392 rgb <0.815686, 0.470588, 0.266667>] [0.784314 rgb <0.815686, 0.486275, 0.298039>] [0.788235 rgb <0.815686, 0.501961, 0.329412>] [0.792157 rgb <0.815686, 0.517647, 0.298039>] [0.796078 rgb <0.815686, 0.549020, 0.298039>] [0.800000 rgb <0.815686, 0.549020, 0.407843>] [0.803922 rgb <0.815686, 0.564706, 0.423529>] [0.807843 rgb <0.815686, 0.580392, 0.454902>] [0.811765 rgb <0.815686, 0.611765, 0.470588>] [0.815686 rgb <0.815686, 0.627451, 0.486275>] [0.819608 rgb <0.831373, 0.501961, 0.250980>] [0.823529 rgb <0.831373, 0.501961, 0.298039>] [0.827451 rgb <0.831373, 0.517647, 0.266667>] [0.831373 rgb <0.831373, 0.517647, 0.345098>] [0.835294 rgb <0.831373, 0.533333, 0.329412>] [0.839216 rgb <0.831373, 0.549020, 0.360784>] [0.843137 rgb <0.831373, 0.549020, 0.376471>] [0.847059 rgb <0.831373, 0.549020, 0.423529>] [0.850980 rgb <0.831373, 0.564706, 0.329412>] [0.854902 rgb <0.831373, 0.580392, 0.360784>] [0.858824 rgb <0.831373, 0.580392, 0.392157>] [0.862745 rgb <0.831373, 0.596078, 0.407843>] [0.866667 rgb <0.847059, 0.533333, 0.298039>] [0.870588 rgb <0.847059, 0.580392, 0.439216>] [0.874510 rgb <0.847059, 0.596078, 0.392157>] [0.878431 rgb <0.847059, 0.611765, 0.423529>] [0.882353 rgb <0.847059, 0.611765, 0.454902>] [0.886275 rgb <0.847059, 0.611765, 0.486275>] [0.890196 rgb <0.847059, 0.627451, 0.470588>] [0.894118 rgb <0.847059, 0.643137, 0.501961>] [0.898039 rgb <0.862745, 0.533333, 0.266667>] [0.901961 rgb <0.862745, 0.533333, 0.313726>] [0.905882 rgb <0.862745, 0.549020, 0.345098>] [0.909804 rgb <0.862745, 0.564706, 0.313726>] [0.913725 rgb <0.862745, 0.564706, 0.376471>] [0.917647 rgb <0.862745, 0.580392, 0.345098>] [0.921569 rgb <0.862745, 0.580392, 0.407843>] [0.925490 rgb <0.878431, 0.580392, 0.329412>] [0.929412 rgb <0.878431, 0.596078, 0.376471>] [0.933333 rgb <0.878431, 0.596078, 0.423529>] [0.937255 rgb <0.878431, 0.611765, 0.407843>] [0.941176 rgb <0.878431, 0.627451, 0.439216>] [0.945098 rgb <0.878431, 0.627451, 0.470588>] [0.949020 rgb <0.878431, 0.643137, 0.501961>] [0.952941 rgb <0.878431, 0.658824, 0.470588>] [0.956863 rgb <0.894118, 0.580392, 0.376471>] [0.960784 rgb <0.894118, 0.611765, 0.439216>] [0.964706 rgb <0.894118, 0.658824, 0.501961>] [0.968627 rgb <0.909804, 0.596078, 0.376471>] [0.972549 rgb <0.909804, 0.611765, 0.407843>] [0.976471 rgb <0.909804, 0.643137, 0.423529>] [0.980392 rgb <0.909804, 0.643137, 0.454902>] [0.984314 rgb <0.909804, 0.643137, 0.486275>] [0.988235 rgb <0.909804, 0.658824, 0.470588>] [0.992157 rgb <0.925490, 0.627451, 0.376471>] [0.996078 rgb <0.925490, 0.674510, 0.454902>] } #version WhiteAsh_Inc_Temp; // Persistence of Vision Ray Tracer version 3.5 Include File // File: woodmaps.inc // Last updated: 2001.7.24 // Description: /* Basic wooden colormaps The "M_WoodxA" color_maps are intended as the 1st layer of multi-layer textures, but many work well by themselves, as well. The "M_WoodxB" color_maps contain transparent colors and are intended for use as top layers. */ #ifndef(Woodmaps_Inc_Temp) #declare Woodmaps_Inc_Temp=version; #version 3.5; #ifdef(View_POV_Include_Stack) #debug "including woodmaps.inc\n" #end #declare M_Wood1A = color_map { [0.0, 0.1 color rgb <0.88, 0.60, 0.40> color rgb <0.88, 0.60, 0.40>] [0.1, 0.9 color rgb <0.88, 0.60, 0.40> color rgb <0.60, 0.30, 0.20>] [0.9, 1.0 color rgb <0.60, 0.30, 0.20> color rgb <0.60, 0.30, 0.20>] } #declare M_Wood1B = color_map { [0.0, 0.1 color rgbt <0.55, 0.32, 0.20, 0.100> color rgbt <0.55, 0.32, 0.20, 0.500>] [0.1, 0.2 color rgbt <0.55, 0.35, 0.20, 0.650> color rgbt <0.88, 0.60, 0.40, 0.975>] [0.2, 0.3 color rgbt <0.88, 0.60, 0.40, 0.975> color rgbt <0.60, 0.30, 0.20, 1.000>] [0.3, 0.4 color rgbt <0.60, 0.30, 0.20, 0.100> color rgbt <0.60, 0.30, 0.20, 0.500>] [0.4, 0.9 color rgbt <0.60, 0.30, 0.20, 0.650> color rgbt <0.88, 0.60, 0.40, 0.975>] [0.9, 1.0 color rgbt <0.88, 0.60, 0.40, 0.975> color rgbt <0.55, 0.32, 0.20, 1.000>] } #declare M_Wood2A = color_map { [0.0, 0.1 color rgb <0.35, 0.16, 0.12 >* 0.5 color rgb <0.35, 0.16, 0.12>* 0.5] [0.1, 0.9 color rgb <0.35, 0.20, 0.16>* 0.5 color rgb <0.46, 0.26, 0.18>* 0.5] [0.9, 1.0 color rgb <0.46, 0.26, 0.18>* 0.5 color rgb <0.35, 0.16, 0.12>* 0.5] } #declare M_Wood2B = color_map { [0.0, 0.1 color rgbt <0.50, 0.30, 0.20, 0.100> color rgbt <0.50, 0.30, 0.20, 0.500>] [0.1, 0.9 color rgbt <0.50, 0.30, 0.20, 0.650> color rgbt <0.50, 0.25, 0.15, 0.975>] [0.9, 1.0 color rgbt <0.50, 0.25, 0.15, 0.975> color rgbt <0.50, 0.30, 0.20, 0.000>] } #declare M_Wood3A = color_map { [0.0, 0.1 color rgb <0.75, 0.65, 0.45> color rgb <0.75, 0.65, 0.45>] [0.1, 0.9 color rgb <0.75, 0.65, 0.45> color rgb <0.70, 0.55, 0.40>] [0.9, 1.0 color rgb <0.70, 0.55, 0.40> color rgb <0.75, 0.65, 0.45>] } #declare M_Wood3B = color_map { [0.0, 0.1 color rgbt <0.70, 0.60, 0.40, 0.100> color rgbt <0.70, 0.60, 0.40, 0.500>] [0.1, 0.9 color rgbt <0.70, 0.60, 0.40, 0.650> color rgbt <0.75, 0.70, 0.60, 0.975>] [0.9, 1.0 color rgbt <0.75, 0.70, 0.60, 0.975> color rgbt <0.70, 0.60, 0.40, 1.000>] } #declare M_Wood4A = color_map { [0.0, 0.3 color rgb <0.30, 0.10, 0.15> color rgb <0.30, 0.15, 0.15>] [0.3, 0.6 color rgb <0.30, 0.15, 0.15> color rgb <0.50, 0.20, 0.15>] [0.6, 1.0 color rgb <0.50, 0.20, 0.15> color rgb <0.30, 0.10, 0.15>] } #declare M_Wood4B = color_map { /* [0.0, 0.3 color rgbt <0.40, 0.18, 0.20, 0.00> color rgbt <0.20, 0.10, 0.15, 0.20>] [0.3, 0.4 color rgbt <0.20, 0.10, 0.15, 0.35> color rgbt <0.10, 0.05, 0.07, 0.50>] [0.4, 0.6 color rgbt <0.10, 0.05, 0.07, 0.20> color rgbt <0.20, 0.10, 0.15, 0.35>] [0.6, 1.0 color rgbt <0.20, 0.10, 0.15, 0.50> color rgbt <0.40, 0.18, 0.20, 0.00>] */ [0.0, 0.3 color rgbt <0.32, 0.15, 0.17, 0.00> color rgbt <0.32, 0.13, 0.15, 0.20>] [0.3, 0.4 color rgbt <0.32, 0.13, 0.13, 0.35> color rgbt <0.52, 0.25, 0.23, 0.40>] [0.4, 0.6 color rgbt <0.52, 0.25, 0.23, 0.20> color rgbt <0.32, 0.13, 0.13, 0.35>] [0.6, 1.0 color rgbt <0.32, 0.13, 0.15, 0.50> color rgbt <0.32, 0.15, 0.20, 0.00>] } #declare M_Wood5A = color_map { [0.0, 0.3 color rgb <0.50, 0.35, 0.10> color rgb <0.50, 0.35, 0.10>] [0.3, 0.6 color rgb <0.50, 0.35, 0.10> color rgb <0.60, 0.45, 0.10>] [0.6, 1.0 color rgb <0.60, 0.45, 0.10> color rgb <0.50, 0.35, 0.10>] } #declare M_Wood5B = color_map { [0.0, 0.1 color rgbt <0.40, 0.35, 0.10, 1.00> color rgbt <0.40, 0.00, 0.10, 0.60>] [0.1, 0.9 color rgbt <0.40, 0.00, 0.10, 0.75> color rgbt <0.35, 0.40, 0.15, 0.90>] [0.9, 1.0 color rgbt <0.35, 0.40, 0.15, 0.90> color rgbt <0.40, 0.35, 0.10, 1.00>] } #declare M_Wood6A = color_map { [0.0, 0.3 color rgb <0.25, 0.10, 0.10> color rgb <0.25, 0.10, 0.10>] [0.3, 0.6 color rgb <0.25, 0.10, 0.10> color rgb <0.60, 0.15, 0.10>] [0.6, 1.0 color rgb <0.60, 0.15, 0.10> color rgb <0.25, 0.10, 0.10>] } #declare M_Wood6B = color_map { [0.0, 0.3 color rgbt <0.25, 0.10, 0.10, 0.00> color rgbt <0.25, 0.10, 0.10, 0.40>] [0.3, 0.5 color rgbt <0.25, 0.10, 0.10, 0.40> color rgbt <0.60, 0.15, 0.10, 1.00>] [0.5, 0.7 color rgbt <0.60, 0.15, 0.10, 1.00> color rgbt <0.25, 0.10, 0.10, 0.40>] [0.7, 1.0 color rgbt <0.60, 0.15, 0.10, 0.40> color rgbt <0.25, 0.10, 0.10, 0.00>] } #declare M_Wood7A = color_map { [0.0, 0.1 color rgb <0.60, 0.35, 0.20> color rgb <0.60, 0.35, 0.20>] [0.1, 0.9 color rgb <0.60, 0.35, 0.20> color rgb <0.90, 0.65, 0.30>] [0.9, 1.0 color rgb <0.90, 0.65, 0.30> color rgb <0.60, 0.35, 0.20>] } #declare M_Wood7B = color_map { [0.0, 0.1 color rgbt <0.90, 0.65, 0.30, 0.00> color rgbt <0.90, 0.65, 0.30, 0.30>] [0.1, 1.0 color rgbt <0.90, 0.65, 0.30, 0.30> color rgbt <1.00, 1.00, 1.00, 1.00> ] } #declare M_Wood8A = color_map { [0.0, 0.1 color rgb <0.45, 0.30, 0.15> color rgb <0.45, 0.30, 0.15>] [0.1, 0.9 color rgb <0.55, 0.30, 0.15> color rgb <0.20, 0.15, 0.05>] [0.9, 1.0 color rgb <0.20, 0.15, 0.05> color rgb <0.45, 0.30, 0.15>] } #declare M_Wood8B = color_map { [0.0, 0.5 color rgbt <0.60, 0.35, 0.20, 0.30> color rgbt <0.60, 0.35, 0.20, 0.80>] [0.5, 1.0 color rgbt <0.60, 0.35, 0.20, 0.80> color rgbt <1.00, 1.00, 1.00, 1.00> ] } #declare M_Wood9A = color_map { [0.0, 0.5 color rgb <1.00, 0.85, 0.50> color rgb <0.60, 0.40, 0.16>] [0.5, 0.7 color rgb <0.60, 0.40, 0.16> color rgb <0.60, 0.40, 0.16>] [0.7, 1.0 color rgb <0.60, 0.40, 0.16> color rgb <1.00, 0.85, 0.50>] } #declare M_Wood9B = color_map { [0.0, 0.5 color rgbt <1.00, 0.70, 0.25, 1.00> color rgbt <0.50, 0.30, 0.06, 0.40>] [0.5, 0.7 color rgbt <0.50, 0.30, 0.06, 0.40> color rgbt <0.50, 0.30, 0.06, 0.30>] [0.7, 1.0 color rgbt <0.50, 0.30, 0.06, 0.40> color rgbt <1.00, 0.70, 0.25, 1.00>] } #declare M_Wood10A = color_map { [0.0, 0.5 color rgb <1.00, 0.85, 0.50> color rgb <0.90, 0.70, 0.46>] [0.5, 0.7 color rgb <0.90, 0.70, 0.46> color rgb <0.90, 0.70, 0.46>] [0.7, 1.0 color rgb <0.90, 0.70, 0.46> color rgb <1.00, 0.85, 0.50>] } #declare M_Wood10B = color_map { [0.0, 0.5 color rgbt <1.00, 0.45, 0.10, 0.80> color rgbt <0.85, 0.65, 0.40, 0.40>] [0.5, 0.7 color rgbt <0.85, 0.65, 0.40, 0.40> color rgbt <0.85, 0.65, 0.40, 0.40>] [0.7, 1.0 color rgbt <0.85, 0.65, 0.40, 0.40> color rgbt <1.00, 0.45, 0.10, 0.80>] } #declare M_Wood11A = color_map { [0.000, 0.222 color rgb <0.80, 0.67, 0.25> color rgb <0.80, 0.67, 0.25>] [0.222, 0.342 color rgb <0.80, 0.67, 0.25> color rgb <0.60, 0.34, 0.04>] [0.342, 0.393 color rgb <0.60, 0.34, 0.04> color rgb <0.80, 0.67, 0.25>] [0.393, 0.709 color rgb <0.80, 0.67, 0.25> color rgb <0.80, 0.67, 0.25>] [0.709, 0.821 color rgb <0.80, 0.67, 0.25> color rgb <0.53, 0.29, 0.02>] [0.821, 1.000 color rgb <0.53, 0.29, 0.02> color rgb <0.80, 0.67, 0.25>] } #declare M_Wood11B = color_map { [0.000, 0.120 color rgbt <1.00, 1.00, 1.00, 1.00> color rgbt <0.70, 0.41, 0.11, 0.60>] [0.120, 0.231 color rgbt <0.70, 0.41, 0.11, 0.60> color rgbt <0.70, 0.46, 0.11, 0.60>] [0.231, 0.496 color rgbt <0.70, 0.46, 0.11, 0.60> color rgbt <1.00, 1.00, 1.00, 1.00>] [0.496, 0.701 color rgbt <1.00, 1.00, 1.00, 1.00> color rgbt <1.00, 1.00, 1.00, 1.00>] [0.701, 0.829 color rgbt <1.00, 1.00, 1.00, 1.00> color rgbt <0.70, 0.46, 0.11, 0.60>] [0.829, 1.000 color rgbt <0.70, 0.46, 0.11, 0.60> color rgbt <1.00, 1.00, 1.00, 1.00>] } #declare M_Wood12A = color_map { [0.000, 0.256 color rgb <0.20, 0.11, 0.07>*1.25 color rgb <0.23, 0.12, 0.09>*1.25] [0.256, 0.393 color rgb <0.23, 0.12, 0.09>*1.25 color rgb <0.24, 0.13, 0.09>*1.25] [0.393, 0.581 color rgb <0.24, 0.13, 0.09>*1.25 color rgb <0.20, 0.11, 0.07>*1.25] [0.581, 0.726 color rgb <0.20, 0.11, 0.07>*1.25 color rgb <0.25, 0.12, 0.10>*1.25] [0.726, 0.983 color rgb <0.25, 0.12, 0.10>*1.25 color rgb <0.23, 0.12, 0.08>*1.25] [0.983, 1.000 color rgb <0.23, 0.12, 0.08>*1.25 color rgb <0.20, 0.11, 0.07>*1.25] } #declare M_Wood12B = color_map { [0.000, 0.139 color rgbt <0.545, 0.349, 0.247, 1.000> color rgbt <0.450, 0.350, 0.320, 0.800>] [0.139, 0.148 color rgbt <0.450, 0.350, 0.320, 0.800> color rgbt <0.450, 0.350, 0.320, 0.800>] [0.148, 0.287 color rgbt <0.450, 0.350, 0.320, 0.800> color rgbt <0.545, 0.349, 0.247, 1.000>] [0.287, 0.443 color rgbt <0.545, 0.349, 0.247, 1.000> color rgbt <0.545, 0.349, 0.247, 1.000>] [0.443, 0.626 color rgbt <0.545, 0.349, 0.247, 1.000> color rgbt <0.450, 0.350, 0.320, 0.800>] [0.626, 0.635 color rgbt <0.450, 0.350, 0.320, 0.800> color rgbt <0.450, 0.350, 0.320, 0.800>] [0.635, 0.843 color rgbt <0.450, 0.350, 0.320, 0.800> color rgbt <0.545, 0.349, 0.247, 1.000>] [0.843, 1.000 color rgbt <0.545, 0.349, 0.247, 1.000> color rgbt <0.545, 0.349, 0.247, 1.000>] } // Same as M_Wood7A #declare M_Wood13A = color_map { [0.0, 0.1 color rgb <0.60, 0.35, 0.20> color rgb <0.60, 0.35, 0.20>] [0.1, 0.9 color rgb <0.60, 0.35, 0.20> color rgb <0.90, 0.65, 0.30>] [0.9, 1.0 color rgb <0.90, 0.65, 0.30> color rgb <0.60, 0.35, 0.20>] } // Same as M_Wood7B #declare M_Wood13B = /******** color_map { [0.0, 0.1 color rgbt <0.90, 0.65, 0.30, 0.00> color rgbt <0.90, 0.65, 0.30, 0.30>] [0.1, 1.0 color rgbt <0.90, 0.65, 0.30, 0.30> color rgbt <1.00, 1.00, 1.00, 1.00> ] } ********/ color_map { [0.0, 0.4 color rgbt <1.00, 1.00, 1.00, 1.00> color rgbt <0.90, 0.65, 0.30, 0.30>] [0.4, 0.5 color rgbt <0.90, 0.65, 0.30, 0.00> color rgbt <0.90, 0.65, 0.30, 0.30>] [0.5, 1.0 color rgbt <0.90, 0.65, 0.30, 0.30> color rgbt <1.00, 1.00, 1.00, 1.00> ] } #declare M_Wood14A = colour_map { [0.00 0.10 color rgb < 0.80, 0.232, 0.115 > color rgb < 0.80, 0.232, 0.115 >] [0.10 0.90 color rgb < 0.80, 0.232, 0.115 > color rgb < 0.45, 0.115, 0.060 >] [0.90 1.0 color rgb < 0.45, 0.115, 0.060 > color rgb < 0.45, 0.115, 0.060 >] } #declare M_Wood14B = colour_map { [0.00 0.10 color rgbt < 0.70, 0.232, 0.115, 0.5 > color rgbt < 0.70, 0.232, 0.115, 0.7 >] [0.10 0.15 color rgbt < 0.70, 0.232, 0.115, 0.7 > color rgbt < 0.35, 0.115, 0.060, 0.9 >] [0.15 0.20 color rgbt < 0.70, 0.232, 0.115, 0.9 > color rgbt < 0.35, 0.115, 0.060, 0.7 >] [0.20 1.0 color rgbt < 0.35, 0.115, 0.060, 0.7 > color rgbt < 0.35, 0.115, 0.060, 0.5 >] } #declare M_Wood15A = colour_map { [0.00 0.25 color rgb < 0.504, 0.310, 0.078> * 0.7 color rgb < 0.531, 0.325, 0.090> * 0.8 ] [0.25 0.40 color rgb < 0.531, 0.325, 0.090> * 0.8 color rgb < 0.547, 0.333, 0.090> * 0.5 ] [0.40 0.50 color rgb < 0.547, 0.333, 0.090> * 0.5 color rgb < 0.504, 0.310, 0.075> * 0.6 ] [0.50 0.70 color rgb < 0.504, 0.310, 0.075> * 0.6 color rgb < 0.559, 0.322, 0.102> * 0.4 ] [0.70 0.98 color rgb < 0.559, 0.322, 0.102> * 0.4 color rgb < 0.531, 0.325, 0.086> * 0.4 ] [0.98 1.00 color rgb < 0.531, 0.325, 0.086> * 0.4 color rgb < 0.504, 0.310, 0.078> * 0.7 ] } #declare M_Wood15B = colour_map { [0.00 0.25 color rgbt < 0.404, 0.210, 0.078, 0.20> color rgbt < 0.431, 0.225, 0.090, 0.80>] [0.25 0.40 color rgbt < 0.431, 0.225, 0.090, 0.80> color rgbt < 0.447, 0.233, 0.090, 0.20>] [0.40 0.50 color rgbt < 0.447, 0.233, 0.090, 0.20> color rgbt < 0.404, 0.210, 0.075, 0.60>] [0.50 0.70 color rgbt < 0.404, 0.210, 0.075, 0.60> color rgbt < 0.459, 0.222, 0.102, 0.20>] [0.70 0.98 color rgbt < 0.459, 0.222, 0.102, 0.20> color rgbt < 0.431, 0.225, 0.086, 0.40>] [0.98 1.00 color rgbt < 0.431, 0.225, 0.086, 0.40> color rgbt < 0.404, 0.210, 0.078, 0.10>] } #declare M_Wood16A = colour_map { [0.00 0.25 color rgb < 0.504, 0.310, 0.078> * 0.7 color rgb < 0.531, 0.325, 0.090> * 0.8 ] [0.25 0.40 color rgb < 0.531, 0.325, 0.090> * 0.8 color rgb < 0.547, 0.333, 0.090> * 0.5 ] [0.40 0.50 color rgb < 0.547, 0.333, 0.090> * 0.5 color rgb < 0.504, 0.310, 0.075> * 0.6 ] [0.50 0.70 color rgb < 0.504, 0.310, 0.075> * 0.6 color rgb < 0.559, 0.322, 0.102> * 0.4 ] [0.70 0.98 color rgb < 0.559, 0.322, 0.102> * 0.4 color rgb < 0.531, 0.325, 0.086> * 0.4 ] [0.98 1.00 color rgb < 0.531, 0.325, 0.086> * 0.4 color rgb < 0.504, 0.310, 0.078> * 0.7 ] } #declare M_Wood16B = colour_map { [0.00 0.25 color rgbt < 0.404, 0.210, 0.078, 0.30> color rgbt < 0.431, 0.225, 0.090, 0.60>] [0.25 0.40 color rgbt < 0.431, 0.225, 0.090, 0.60> color rgbt < 0.447, 0.233, 0.090, 0.30>] [0.40 0.50 color rgbt < 0.447, 0.233, 0.090, 0.30> color rgbt < 0.404, 0.210, 0.075, 0.40>] [0.50 0.70 color rgbt < 0.404, 0.210, 0.075, 0.40> color rgbt < 0.459, 0.222, 0.102, 0.20>] [0.70 0.98 color rgbt < 0.459, 0.222, 0.102, 0.20> color rgbt < 0.431, 0.225, 0.086, 0.50>] [0.98 1.00 color rgbt < 0.431, 0.225, 0.086, 0.50> color rgbt < 0.404, 0.210, 0.078, 0.30>] } #declare M_Wood17A = colour_map { [0.00 0.25 color rgb < 0.70, 0.40, 0.15> * 0.9 color rgb < 0.75, 0.42, 0.30> * 0.7 ] [0.25 0.40 color rgb < 0.75, 0.42, 0.25> * 0.7 color rgb < 0.74, 0.43, 0.30> * 0.5 ] [0.40 0.50 color rgb < 0.74, 0.43, 0.20> * 0.5 color rgb < 0.70, 0.42, 0.15> * 0.3 ] [0.50 0.70 color rgb < 0.70, 0.42, 0.15> * 0.3 color rgb < 0.64, 0.46, 0.10> * 0.4 ] [0.70 0.98 color rgb < 0.64, 0.46, 0.10> * 0.4 color rgb < 0.65, 0.42, 0.20> * 0.6 ] [0.98 1.00 color rgb < 0.65, 0.42, 0.20> * 0.6 color rgb < 0.60, 0.40, 0.15> * 0.9 ] } #declare M_Wood17B = colour_map { [0.00 0.25 color rgbt < 0.40, 0.20, 0.08, 0.10> color rgbt < 0.44, 0.23, 0.09, 0.20>] [0.25 0.40 color rgbt < 0.44, 0.23, 0.09, 0.20> color rgbt < 0.45, 0.25, 0.09, 0.30>] [0.40 0.50 color rgbt < 0.45, 0.25, 0.09, 0.30> color rgbt < 0.40, 0.20, 0.08, 0.60>] [0.50 0.70 color rgbt < 0.40, 0.20, 0.08, 0.60> color rgbt < 0.46, 0.23, 0.10, 0.30>] [0.70 0.98 color rgbt < 0.46, 0.23, 0.10, 0.30> color rgbt < 0.44, 0.23, 0.09, 0.20>] [0.98 1.00 color rgbt < 0.44, 0.23, 0.09, 0.20> color rgbt < 0.40, 0.20, 0.08, 0.10>] } #declare M_Wood18A = colour_map { [0.00 0.15 color rgb < 1.0, 0.50, 0.00> color rgb < 1.0, 0.50, 0.00> *0.5 ] [0.15 0.25 color rgb < 1.0, 0.50, 0.00> *0.5 color rgb < 1.0, 0.45, 0.00> *0.7 ] [0.25 0.28 color rgb < 1.0, 0.45, 0.00> *0.8 color rgb < 1.0, 0.36, 0.00> *0.3 ] [0.28 0.40 color rgb < 1.0, 0.36, 0.00> *0.3 color rgb < 1.0, 0.40, 0.00> *0.4 ] [0.40 0.50 color rgb < 1.0, 0.40, 0.00> *0.4 color rgb < 1.0, 0.40, 0.00> *0.6 ] [0.50 0.70 color rgb < 1.0, 0.50, 0.00> *0.6 color rgb < 1.0, 0.50, 0.00> *0.7 ] [0.70 0.98 color rgb < 1.0, 0.45, 0.00> *0.7 color rgb < 1.0, 0.45, 0.00> *0.5 ] [0.98 1.00 color rgb < 1.0, 0.45, 0.00> *0.5 color rgb < 1.0, 0.50, 0.00> ] } #declare M_Wood18B = colour_map { [0.00 0.25 color rgbt < 0.50, 0.26, 0.12, 0.30> color rgbt < 0.54, 0.29, 0.13, 0.40>] [0.25 0.40 color rgbt < 0.54, 0.29, 0.13, 0.40> color rgbt < 0.55, 0.28, 0.10, 0.60>] [0.40 0.50 color rgbt < 0.55, 0.28, 0.10, 0.60> color rgbt < 0.50, 0.23, 0.15, 1.00>] [0.50 0.70 color rgbt < 0.50, 0.23, 0.15, 1.00> color rgbt < 0.56, 0.29, 0.17, 0.60>] [0.70 0.98 color rgbt < 0.56, 0.29, 0.17, 0.60> color rgbt < 0.54, 0.29, 0.13, 0.40>] [0.98 1.00 color rgbt < 0.54, 0.29, 0.13, 0.40> color rgbt < 0.50, 0.26, 0.12, 0.30>] } #declare M_Wood19A = color_map { [0.00 color rgb <0.5, 0.25, 0.125>] [0.40 color rgb <1.0, 0.50, 0.250> ] [0.60 color rgb <1.0, 0.50, 0.250> ] [1.00 color rgb <0.5, 0.25, 0.125>] } #declare M_Wood19B = color_map { [0.00 0.30 color rgb <0.35, 0.175, 0.0875> color rgb <1.00, 0.500, 0.2500> ] [0.30 1.00 color Clear color Clear] } #version Woodmaps_Inc_Temp; #end // Persistence of Vision Ray Tracer version 3.5 Include File // File: woods.inc // Last updated: 2001.7.24 // Description: /* Basic wooden textures Credits: Textures T_Wood1 through T_Wood30 by Dan Farmer Textures T_Wood31 through T_Wood35 contributed by Paul Novak, 75274.1613@compuserve.com Notes on layered textures T_Wood1 through T_Wood30: The pigment definitions: ======================== Declares pigments P_Woodgrain1A through P_Woodgrain19A and P_Woodgrain1B through P_Woodgrain19B. The only difference between the "A" designations and the "B" designations is in design. The "A"'s were designed to generally work better as underlying patterns, using opaque color_maps, while the "B" pigments were designed to work better as top layers, with some degree of transparency in their color_maps. The pigments with the "A" and "B" designations are combinations that were designed to work well together, but do not neccessarily have to be used as pairs. These pigment definitions do not have colormaps assigned so that they can mix 'n matched in various combinations by the user when designing their own colors. In this file, the color_maps are added at the point of defining the final textures. The color_map definitions: ========================== These are declared in the #include file "woodmaps.inc". They are named M_Wood1A through M_Wood19A and M_Wood1B through M_Wood19B. There are two types of declarations in woodmaps.inc. The "A" color_maps are intended as the 1st layer of multi-layer textures, but many work well by themselves, as well. The "B" color_maps contain transparent colors and are intended for use as top layers to influence the "A" maps. The wood textures ================= Here the various P_WoodGrainx textures are combined with color_maps to create textures named T_Wood1 through T_Wood30. General ======= Wood textures are designed with the major axis of the woodgrain "cylinder" aligned along the Z axis. With the exception of the few of the textures below that have a small amount of x-axis rotation built-in, the textures below will exhibit a very straight grain pattern unless you apply a small amount of x-axis rotation to them (generally 2 to 4 degrees seems to work well). */ #ifndef(Woods_Inc_Temp) #declare Woods_Inc_Temp=version; #version 3.5; #ifdef(View_POV_Include_Stack) #debug "including woods.inc\n" #end #include "woodmaps.inc" #declare P_WoodGrain1A = pigment { wood turbulence 0.04 octaves 3 scale <0.05, .05, 1> } #declare P_WoodGrain1B = pigment { wood turbulence <0.1, 0.5, 1> octaves 5 lambda 3.25 scale <0.15, .5, 1> rotate <5, 10, 5> translate -x*2 } #declare P_WoodGrain2A = pigment { wood turbulence 0.04 octaves 3 scale <0.15, .15, 1> } #declare P_WoodGrain2B = pigment { wood turbulence <0.1, 0.35, 0.1> octaves 5 lambda 3.25 scale <0.25, .25, 1> rotate <5, 10, 5> translate -x*2 } #declare P_WoodGrain3A = pigment { wood turbulence 0.04 octaves 3 scale <0.05, .05, 1> rotate <2,2,0> } #declare P_WoodGrain3B = pigment { wood turbulence <0.1, 0.5, 1> octaves 5 lambda 3.25 scale <0.15, .5, 1> rotate <5, 10, 5> translate -x*2 } #declare P_WoodGrain4A = pigment { wood turbulence 0.04 octaves 4 omega 1.25 scale <0.15, .15, 1> } #declare P_WoodGrain4B = pigment { bozo turbulence <0.03, 0.03, 0.1> octaves 5 lambda 3.25 scale <0.025, .025, 1.0> } #declare P_WoodGrain5A = pigment { wood turbulence <0.04, 0.04, 0.1> octaves 4 omega 1.25 scale <0.15, .15, 1> } #declare P_WoodGrain5B = pigment { wood turbulence <0.025, 0.025, 0.1> octaves 4 omega 1.3 scale <0.30, .20, 1> translate <0.1, 0.1, 0.20> } #declare P_WoodGrain6A = pigment { wood turbulence <0.05, 0.08, 1> octaves 4 scale <0.15, .15, 1> translate -x*100 } #declare P_WoodGrain6B = pigment { wood turbulence <0.05, 0.05, 0> octaves 4 omega 0.95 scale <0.20, 0.20, 1> rotate x*20 } #declare P_WoodGrain7A = pigment { wood turbulence <0.05, 0.08, 1000> octaves 4 scale <0.15, .15, 1> } #declare P_WoodGrain7B = pigment { bozo scale <0.01, 0.01, 100000> } #declare P_WoodGrain8A = pigment { wood turbulence 0.04 octaves 3 scale <0.05, .05, 1> } #declare P_WoodGrain8B = pigment { wood turbulence <0.04, 0.04, 1> octaves 4 scale <0.05, 0.05, 1> * 0.66 } #declare P_WoodGrain9A = pigment { wood turbulence 0.1 octaves 4 lambda 3 scale 0.2 rotate <0.125, 0.125, 0> } #declare P_WoodGrain9B = pigment { wood turbulence 0.1 octaves 4 lambda 3.5 scale 0.2 rotate <0.125, 0.125, 0> translate <0.015, 0.015, 0.015> } #declare P_WoodGrain10A = pigment { wood turbulence 0.02 octaves 4 lambda 3 scale 0.175 rotate <2, 2, 0> } #declare P_WoodGrain10B = pigment { wood turbulence 0.02 octaves 4 lambda 2.8 scale 0.2 rotate <2, 2, 0> translate <0.0175, 0.0175, 0.0175> } #declare P_WoodGrain11A = pigment { wood turbulence 0.02 scale 0.1 translate <10, 0, 0> } #declare P_WoodGrain11B = pigment { wood turbulence 0.01 scale 0.5 translate <10, 0, 0> } #declare P_WoodGrain12A = pigment { bozo turbulence 0.04 lambda 2.5 omega 0.1 octaves 7 scale <0.5, 0.05, 0.05> } #declare P_WoodGrain12B = pigment { wood turbulence <0.1, 0.04, 1> scale <0.15, 0.5, 1> // translate <10, 0, 0> rotate x*2 } #declare P_WoodGrain13A = pigment { wood turbulence 0.02 scale 0.1 translate <10, 0, 0> } #declare P_WoodGrain13B = pigment { wood turbulence 0.01 scale 0.05 // translate <10, 0, 0> } #declare P_WoodGrain14A = pigment { wood colour_map { M_Wood14A } turbulence 0.065 octaves 2 scale <0.15, .15, 1> translate < -1 0 0 > rotate <-3, -3, 0> } #declare P_WoodGrain14B= pigment { wood colour_map { M_Wood14B } turbulence <0, 0.1, 0> lambda 2.75 omega 1.15 octaves 4 scale <5, 0.075, 1> rotate x*90 } #declare P_WoodGrain15A = pigment { bozo colour_map { M_Wood15A } turbulence 0.04 scale <0.05 0.05 1> } #declare P_WoodGrain15B = pigment { wood colour_map { M_Wood15B } scale <0.20 0.20 1> turbulence 0.04 rotate <-2, 2, 0> } #declare P_WoodGrain16A = pigment { bozo colour_map { M_Wood16A } turbulence 0.04 scale <0.02 0.02 1> } #declare P_WoodGrain16B = pigment { wood colour_map { M_Wood16B } scale <0.075 0.075 1> turbulence 0.035 rotate <-2, 2, 0> } #declare P_WoodGrain17A = pigment { wood colour_map { M_Wood17A } turbulence 0.04 omega 0.4 scale <0.1 0.1 1> rotate -x*4 } #declare P_WoodGrain17B = pigment { wood colour_map { M_Wood17B } turbulence 0.05 omega 0.65 scale <0.2 0.2 1> rotate -x*2 } #declare P_WoodGrain18A = pigment { wood colour_map { M_Wood18A } turbulence 0.02 octaves 4 lambda 4 // scale 0.3 scale 0.1 rotate <2, 0, 0> } #declare P_WoodGrain18B = pigment { wood colour_map { M_Wood18B } turbulence 0.02 octaves 6 lambda 2.8 omega 0.6 // scale 0.1 scale 0.05 rotate <2, 0, 0> } #declare P_WoodGrain19A = pigment { wood scale <0.075, 0.075, 1> turbulence 0.065 omega 0.45 lambda 2.3 color_map { M_Wood19A } rotate x*4 } #declare P_WoodGrain19B = pigment { bozo color_map { M_Wood19B } scale <0.013, 0.013, 0.75> } // Natural oak (light) #declare T_Wood1 = texture { pigment { P_WoodGrain1A color_map { M_Wood1A }}} texture { pigment { P_WoodGrain1B color_map { M_Wood1B }}} // Dark brown #declare T_Wood2 = texture { pigment { P_WoodGrain2A color_map { M_Wood2A }}} texture { pigment { P_WoodGrain2B color_map { M_Wood2B }}} // Bleached oak (white) #declare T_Wood3 = texture { pigment { P_WoodGrain3A color_map { M_Wood3A }}} texture { pigment { P_WoodGrain3B color_map { M_Wood3B }}} // Mahogany (purplish-red) #declare T_Wood4 = texture { pigment { P_WoodGrain4A color_map { M_Wood4A }}} texture { pigment { P_WoodGrain4B color_map { M_Wood4B }}} // Dark yellow with reddish overgrain #declare T_Wood5 = texture { pigment { P_WoodGrain5A color_map { M_Wood5A }}} texture { pigment { P_WoodGrain5B color_map { M_Wood5B }}} // Cocabola (red) #declare T_Wood6 = texture { pigment { P_WoodGrain6A color_map { M_Wood6A }}} texture { pigment { P_WoodGrain6B color_map { M_Wood6B }}} // Yellow pine (ragged grain) #declare T_Wood7 = texture { pigment { P_WoodGrain7A color_map { M_Wood7A }}} texture { pigment { P_WoodGrain7B color_map { M_Wood7B }}} // Dark brown. Walnut? #declare T_Wood8 = texture { pigment { P_WoodGrain8A color_map { M_Wood8A }}} texture { pigment { P_WoodGrain8B color_map { M_Wood8B }}} // Yellowish-brown burl (heavily turbulated) #declare T_Wood9 = texture { pigment { P_WoodGrain9A color_map { M_Wood9A }}} texture { pigment { P_WoodGrain9B color_map { M_Wood9B }}} // Soft pine (light yellow, smooth grain) #declare T_Wood10 = texture { pigment{ P_WoodGrain10A color_map { M_Wood10A }}} texture { pigment{ P_WoodGrain10B color_map { M_Wood10B }}} // Spruce (yellowish, very straight, fine grain) #declare T_Wood11 = texture { pigment{ P_WoodGrain11A color_map { M_Wood11A }}} texture { pigment{ P_WoodGrain11B color_map { M_Wood11B }}} // Another very dark brown. Walnut-stained pine, perhaps? #declare T_Wood12 = texture { pigment{ P_WoodGrain12A color_map { M_Wood12A }}} texture { pigment{ P_WoodGrain12B color_map { M_Wood12B }}} // Very straight grained, whitish #declare T_Wood13 = texture { pigment{ P_WoodGrain13A color_map { M_Wood13A }}} texture { pigment{ P_WoodGrain13B color_map { M_Wood13B }}} // Red, rough grain #declare T_Wood14 = texture { pigment{ P_WoodGrain14A color_map { M_Wood14A }}} texture { pigment{ P_WoodGrain14B color_map { M_Wood14B }}} // Medium brown #declare T_Wood15 = texture { pigment{ P_WoodGrain15A color_map { M_Wood15A }}} texture { pigment{ P_WoodGrain15B color_map { M_Wood15B }}} // Medium brown #declare T_Wood16 = texture { pigment{ P_WoodGrain16A color_map { M_Wood16A }}} texture { pigment{ P_WoodGrain16B color_map { M_Wood16B }}} // Medium brown #declare T_Wood17 = texture { pigment{ P_WoodGrain17A color_map { M_Wood17A }}} texture { pigment{ P_WoodGrain17B color_map { M_Wood17B }}} // Orange #declare T_Wood18 = texture { pigment{ P_WoodGrain18A color_map { M_Wood18A }}} texture { pigment{ P_WoodGrain18B color_map { M_Wood18B }}} // Golden Oak. // M_Woods 1,3,7,8,10,14,15,17,18,19 work well, also. #declare T_Wood19 = texture { pigment{ P_WoodGrain19A color_map { M_Wood19A }}} texture { pigment{ P_WoodGrain19B color_map { M_Wood19B }}} #declare T_Wood20 = texture { pigment{ P_WoodGrain19A color_map { M_Wood19A }}} texture { pigment{ P_WoodGrain19B color_map { M_Wood19B }}} #declare T_Wood21 = texture { pigment{ P_WoodGrain1A color_map { M_Wood11A }}} texture { pigment{ P_WoodGrain1B color_map { M_Wood11B }}} #declare T_Wood22 = texture { pigment{ P_WoodGrain1A color_map { M_Wood12A }}} texture { pigment{ P_WoodGrain1B color_map { M_Wood12B }}} #declare T_Wood23 = texture { pigment{ P_WoodGrain1A color_map { M_Wood13A }}} texture { pigment{ P_WoodGrain1B color_map { M_Wood13B }}} #declare T_Wood24 = texture { pigment{ P_WoodGrain1A color_map { M_Wood14A }}} texture { pigment{ P_WoodGrain1B color_map { M_Wood14B }}} #declare T_Wood25 = texture { pigment{ P_WoodGrain1A color_map { M_Wood15A }}} texture { pigment{ P_WoodGrain1B color_map { M_Wood15B }}} #declare T_Wood26 = texture { pigment{ P_WoodGrain1A color_map { M_Wood16A }}} texture { pigment{ P_WoodGrain1B color_map { M_Wood16B }}} #declare T_Wood27 = texture { pigment{ P_WoodGrain1A color_map { M_Wood17A }}} texture { pigment{ P_WoodGrain1B color_map { M_Wood17B }}} #declare T_Wood28 = texture { pigment{ P_WoodGrain1A color_map { M_Wood18A }}} texture { pigment{ P_WoodGrain1B color_map { M_Wood18B }}} #declare T_Wood29 = texture { pigment{ P_WoodGrain1A color_map { M_Wood19A }}} texture { pigment{ P_WoodGrain1B color_map { M_Wood19B }}} #declare T_Wood30 = texture { pigment{ P_WoodGrain1A color_map { M_Wood1A }}} texture { pigment{ P_WoodGrain1B color_map { M_Wood1B }}} // A light tan wood - heavily grained (variable coloration) #declare T_Wood31= texture { pigment { wood turbulence 0.045 scale 0.125 color_map { [0.10 color rgbt <0.49020, 0.22353, 0.00000, 0.00>] [0.16 color rgbt <0.71863, 0.69412, 0.46275, 0.00>] [0.20 color rgbt <0.49020, 0.22353, 0.00000, 0.00>] [0.25 color rgbt <0.76863, 0.69412, 0.46275, 0.00>] [0.32 color rgbt <0.44020, 0.22353, 0.00000, 0.00>] [0.37 color rgbt <0.74863, 0.69412, 0.46275, 0.00>] [0.40 color rgbt <0.49020, 0.20353, 0.00000, 0.00>] [0.45 color rgbt <0.76863, 0.66412, 0.48275, 0.00>] [0.51 color rgbt <0.49020, 0.22353, 0.00000, 0.00>] [0.55 color rgbt <0.76863, 0.67059, 0.37255, 0.00>] [0.61 color rgbt <0.49020, 0.25353, 0.00000, 0.00>] [0.65 color rgbt <0.76863, 0.67059, 0.37255, 0.00>] [0.70 color rgbt <0.49020, 0.22353, 0.00000, 0.00>] [0.75 color rgbt <0.76863, 0.63059, 0.37255, 0.00>] [0.82 color rgbt <0.49020, 0.22353, 0.00000, 0.00>] [0.88 color rgbt <0.77863, 0.67059, 0.37255, 0.00>] [0.91 color rgbt <0.49020, 0.22353, 0.00000, 0.00>] [0.95 color rgbt <0.79863, 0.67059, 0.39550, 0.00>] [1.00 color rgbt <0.48020, 0.22353, 0.00000, 0.00>] } } } //A rich dark reddish wood, like rosewood, with smooth-flowing grain #declare T_Wood32= texture { pigment { wood turbulence 0.04 scale 0.15 color_map { [0.15 color rgbt <0.38039, 0.14902, 0.0, 0.0>] [0.25 color rgbt <0.23539, 0.00000, 0.0, 0.0>] [0.35 color rgbt <0.38139, 0.14912, 0.0, 0.0>] [0.45 color rgbt <0.23549, 0.00000, 0.0, 0.0>] [0.55 color rgbt <0.38139, 0.14902, 0.0, 0.0>] [0.65 color rgbt <0.23559, 0.00000, 0.0, 0.0>] [0.75 color rgbt <0.38139, 0.14922, 0.0, 0.0>] [0.85 color rgbt <0.23549, 0.00000, 0.0, 0.0>] [0.95 color rgbt <0.38039, 0.14902, 0.0, 0.0>] [0.90 color rgbt <0.23539, 0.00000, 0.0, 0.0>] [1.00 color rgbt <0.38039, 0.14932, 0.0, 0.0>] } } } // Similar to T_WoodB, but brighter #declare T_Wood33= texture { pigment { wood turbulence 0.0425 scale 0.2 color_map { [0.05 color rgbt <0.55294, 0.21176, 0.00000, 0.0>] [0.15 color rgbt <0.32549, 0.13725, 0.00000, 0.0>] [0.25 color rgbt <0.55294, 0.21176, 0.00000, 0.0>] [0.35 color rgbt <0.32549, 0.11765, 0.00000, 0.0>] [0.48 color rgbt <0.55294, 0.21176, 0.00000, 0.0>] [0.55 color rgbt <0.29412, 0.13725, 0.01176, 0.0>] [0.65 color rgbt <0.55294, 0.21176, 0.00000, 0.0>] [0.78 color rgbt <0.32549, 0.13725, 0.00000, 0.0>] [0.85 color rgbt <0.55294, 0.21176, 0.00000, 0.0>] [0.96 color rgbt <0.28627, 0.13725, 0.00000, 0.0>] [1.00 color rgbt <0.54510, 0.17647, 0.03529, 0.0>] } translate <.015, 0, 0> } } // Reddish-orange, large, smooth grain. #declare T_Wood34 = texture { T_Wood32 } // opaque under-layer texture { pigment { onion turbulence 0.2125 colour_map { [0.225 colour rgbt <1.000000, 0.53333, 0.11767, 0.4875>] [0.350 colour rgbt <0.662750, 0.28617, 0.00001, 0.7250>] [0.500 colour rgbt <1.000100, 0.53333, 0.11765, 0.5745>] [0.625 colour rgbt <0.662775, 0.28627, 0.00005, 0.6875>] [0.750 colour rgbt <1.000200, 0.53333, 0.11755, 0.5275>] [0.875 colour rgbt <0.662755, 0.28629, 0.00001, 0.3795>] [1.000 colour rgbt <1.000000, 0.53333, 0.11665, 0.6165>] } scale <0.225, 0.20, 1.15> } } // Orangish, with a grain more like a veneer than a plank #declare T_Wood35= texture { pigment { wood turbulence 0.03725 omega 0.65725 lambda 2.425 color_map { [0.250 color rgbt <1.00000, 0.53373, 0.11665, 0.000>] [0.350 color rgbt <0.66275, 0.28607, 0.00000, 0.000>] [0.525 color rgbt <1.00000, 0.53363, 0.11715, 0.000>] [0.600 color rgbt <0.66475, 0.28647, 0.00000, 0.000>] [0.750 color rgbt <1.00000, 0.53353, 0.11565, 0.000>] [0.850 color rgbt <0.66275, 0.28667, 0.00000, 0.000>] [1.000 color rgbt <1.00000, 0.53143, 0.11795, 0.000>] } scale <0.25, 0.225, 1.0> } } texture { pigment { wood scale 1.01275 turbulence 0.0435 omega 0.65 lambda 3.15 color_map { [0.200 color rgbt <0.56695, 0.17347, 0.00000, 0.8250>] [0.350 color rgbt <0.96471, 0.54510, 0.22753, 0.7710>] [0.400 color rgbt <0.56341, 0.17547, 0.00000, 0.9150>] [0.615 color rgbt <0.96472, 0.54510, 0.22553, 0.7590>] [0.700 color rgbt <0.56671, 0.17687, 0.00000, 0.7920>] [0.850 color rgbt <0.96485, 0.54510, 0.22453, 0.8975>] [1.000 color rgbt <0.56478, 0.17247, 0.00000, 0.9750>] } scale <0.225, 0.2725, 1.0> translate <-0.35, 0.095, 1.25> } } #version Woods_Inc_Temp; #end BM~6(xZ~ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggffffffffffffffffffffffffggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggfffffffffffffffffffffffffffffggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggffffffffffffffffffffffffffffffffggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggfffffffffffffffffffffffffffffffffffffggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggffffffffffffffffffffffffffffffffffffffffggggggggggggggggggggggggggggggggggggggggggggggggggggggggggge`yZrUl}QfwNbrH[jH[jAS`AR_AR_AR_AR_AR_AR_AR_H[jH[jK_oOctSizVl~Zr^wc}efffffffffffffffffffffffffffffffffffggggggggggggggggggggggggggggggggggggggggggggggggggggggf^vShzH[jD>>I9>M2>Q/@Q/CO/FL/JH1LE8JB8DG3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL;JWI\kUl}`yffffffffffffffffffffggggggggggggggggggggggggggggggggggggggggggggggggazAS`3KE:IBAE@JC8RA0S<6M;?E;H<;O1;V+>W+DR+JM+PG,TA4T:8O=:IBAE@D@A=?G3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL;KWK_nYqd~ffffffffffffffffggggggggggggggggggggggggggggggggggggggggggggggg\w7TS4P@W+CS+HO+MJ+QE+V@0V;;S7FL4ME3L@:F?A=>J4?N3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL6DPH[jXod~fffffffffffffggggggggggggggggggggggggggggggggggggggggggggfVo<[a1XJ9\@DYCJ=JBL3?N3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL6DPJ]m\teffffffffffggggggggggggggggggggggggggggggggggggggggggfXo\,?Z+CU+FQ+JM+NI+RE+V@.W;5U8>Q6FL3NF0S@/S<6I;D=Q1?O3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL:IUSizeffffffgggggggggggggggggggggggggggggggggggggggf[h~ATp;bnxQCpPMhOU`N[XMaOKeEJi:Hk3Ii2Lc0N\.OU-PO,RI+TC+V?.W;6U8=Q6DM4KH2QC/U>.S;6K;A?;M4gv?tm@}dC[OV\{RftNomKvfG}^CXB{UJtTSlS[dRa[QfROkHNn=Lq6Mp5Qi4Sc2U\0VV.VN-VH+WA,X<2V9:S7AO5GK3NF0TA.VQ6EM4KI2PD/U?-V;1P;;H;E=;O1>T-CQ1CM3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL;KW]vfegggggggggggggggggggggggggggggggggggglueZqK^DkEx|EsEjJaV\cXn~UvwQ~pMhIaF\J[UzZ]rYeiXkaWpWVuMTxBS|;Tz:Xt9[n8]h6_a5`Z3aS1aL/`E0]>6W:E;H:;Q/?U-DP1CL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL7FQ\uegggggggggggggggggggggggggggggggggggqs~m\qR`HlGxGzHqIhQa_]kZtV}xRqNiJbI_O^Y|]bt\il[ocZtZXyPW}DV=W<[y;^s:al9cf7d_6eX4eQ2eJ2cC6]=;V9@P6FL4KH1QD/V>-V;0Q;9K;BB;K7;S-@T-EO1DL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL:IVb{ggggggggggggggggggggggggggggggggggrwv_n\bLkIwIJyJpNgYbg^q[zWySqOjKdKaS`]~_ev^mn]se\x\[|QZFX?Z>^}=aw;N3gt=in;kh:la9mZ7nS6nL9jF?bAC[=FS8IL4MG1RC/V>-V;0Q;9K;AC;I9;Q/=U+EQ-JK1FJ3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL9HTgggggggggggggggggggggggggggggggflhfsfZhNrMMMMvOnZghds`}]YzUsQkMfPe[ddclzcsqbyia~__U^J]C_BcAf~@ix?lr=nlG;F?;M4;T,@U+IN-MG1GI3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL5DOggggggggggggggggggggggggggggfffgnhhzgjTpN{OOOOuTmahmexa]Z{VtRlNhSg^fgeo|dvsd|jcaaW`K_DaCeBiAl{@nu?qo>shwe=x^;xWRT9RK4SD/V>,W;/R;8M;?F;G>;N4;T,?V+GP-PE1KE3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL5CN]uggggggggggggggggggggggffffffffon`mknXsQ~RRRR}St]nljwfc_[}WuSnRkZkdjmiuh|vgmfdeYdNcGeFiEmDpCs{BvuAxo@yh>{a={Z>{SCvNIoJNhFRaATY~VCzQJsMPlHTeDW]?YV;ZM6YD0X=.U;2P;:K;BD;I<;O2;U+?V+GP+QF3O@7EG3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL4BMI]lazeegggggggggggggggffffffffffffffwqbqsr^uTTTTTT{Zthotlhda]~YwUqVo_nimrlzkyjpigh\gQfJhImHqGtFwEzzD|tC~nAg@`?YD~SKwOQpKViGYbB[Z=]R9]I4\A/X;1R;8M;@F;G?;M5;T-=V+DR+LK1R@5KC3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL3AL1T;7N;>H;EA;K9;R/cQ9cI4`A2W=6P;7KB3AL3AL3AL3AL3AL3AL3AL3AL6DP8GS=MZAR_GZiMbrRhyYq`ydeeeeeeeeeegggggfffffffffffffffffffffffiunvxwbzWXXXXX[{evsrokhd`]zYu\tgsqryqp~ounkm`lTkMmMrLvKyJ}IH{FuEnDgC`FZMVT{RZtM^lIbeEd]@fU;fM6dE4\?7R<;N4;T,=V+DS+LL,SB8N>c|c}c}c|c|c|c|c|d~eeeeeeeeeeeeeddddddgffffffffffffffffffffffffffn^v{xsy_}YYYYYY]|iwwspmifb^{Zw_vjust|srqvplobnVmOoNsMwL{K~JI}HwFpEiDbG\NWU}T[wO`pKchGfaBhX>iP9hH5aB8W>=M;AF;G?;M7;S.Q=BH;FA;L9;R/;V+@U+GP+OH1T>Reheeeeeeeeeddddddddddddddddd~d~fffffffffffffffffffffffffffgznz{j|\[[[\\\c~qz~vspmjgc`{e{pzyyxwuztpseqYpRrQvOzN~MLKJ{ItHmFfH`O[WW]|SbuOgnKjfFm^BnV=oN8jG:`D@U@CJHD;K<;P2;V+>W+DR+KL+SC:R9_tddddddddddd~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~ffffffffffffffffffffffffff}b|}|~g]]]^__`ix~{yvspmjhmw}|z~ytwiv]tUvTzR~QPNML~KwJqHiJcQ^YZ`VezRjsNmkIpdEs[@tS;qLvP>nLDdIJYENMAPA=Q6;T.d}d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~c~c~c~c~c~c}c}c}ffffffffffffffffffeeeeeeehgoxe`abdegjƍuƉ}ÙzǓxĐ}}r~e|]|[XVTSQON|MuKnMgSb\^cZiVnyRrqNvjIybE{Y@yR?qNEgKL\GPPCRD?S7;T.X/@O5]n|`z`z`z`z`y`y`y`y`y`y`y`y`y`y`y`y`y`y`y`y`y`y`y`y`yc}c}c}c}c}c}c}c}c}c}c}c}c|c|c|b|b|b|b|b|b|b|b|b|b|dtsxpu|ƄÍ޾龪ȾռծԠԑԅ~xrlgb^[XVxYqaljhrcy_[}VuQlLcI^N\XvY`jVf^SjPPn@Lo5Kj0M],MP+QE1U=FL4^s`y`y`y`y`y`y`y_y_y_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_xb|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b{b{b{b{b{b{b{b{b}yŒl}rv~ɆƏØ¡¼زפה׈ҁztnhd`\YVyZrcmlhtd{_[}VuRlMdK_Q]ZvZbjWh]TmOQp?Nq5Nk1O^-OO+SD3T;IN<_w_x_x_x_x_x_x_x_x_x_x_w_w_w^w^w^w^w^w^w^w^w^w^w^w^wb{b{b{a{a{a{a{a{a{a{a{a{a{a{a{a{a{a{azazazazazazazazlĊuw~̇ȐƚŤŮƽþ۵ڧًٗԃ|uojea]ZWy[remnivd}`[}WuRlMdL`S]]u[eiXk\UpMRs>Os5Pk1R]-QN+TB6T9PWT^w^w^w^w^w^w^w^w^w^v^v^v^v^v^v^v^v]v]v]v]v]v]v]v]v]vazazazazaz`z`z`z`z`z`z`z`z`z`y`y`y`y`y`y`y`y`y`y`y`yxoȌxywΈˑțǥǯȾݸܩۙۍօ~wpkfa^ZXy]rgmpiwd~`[}WtRkMdM`V^`u\ghYmZVrKRv=Qt6Sj2T]-SM,U@;R7V`g]v]v]v]u]u]u]u]u]u]u]u]u]u]u]u]u\u\u\u\u\u\t\t\t\t\t_y_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_xftŒw{w~ч͑˛ɥɯʽߺޫݛ܎׆xqkfb^[Yy^rinriye`[}WtRkLdOaY_cs\jgYpXVuHSx;Su6Uj2W[-UK0U=CN4Zjy\t\t\t\t\t\t\t\t\t[t[s[s[s[s[s[s[s[s[s[s[s[s[s[s[s[s^w^v^v^v^v^v^v^v^v^v^v^v^v^v]v]v]v]v]v]v]v]v]v]v]v]v]x{ǕnŒx~ӆϐ̚˥˯˼໼߬ޜݏ؇xrlgb_[Zy`sknti{e`[|VsQjMdQb]~_fr]meZsVWxETz:Uu6Xh2YY-XH4T;JN?ZqZrZrZrZrZrZrZrZrZrZrZqZqZqZqZqZqZqZqYqYqYqYqYqYqYqYq\t\t\t\t\t\t\t\t\t\t\t\t[t[s[s[s[s[s[s[s[s[s[s[s[s[s[s~oȍ}z|ՅюΙ̣̭̹໼߬ޜޏهxrlgc_\[ybsmnvi~e`[|VrQiNdUb`}`ip]pbZvSW{CV|:Xt7[f2\W.ZE:S8RY\XpXpXpXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoWnWnWnWnWnWnWnWnYpYpYpYpYpYpYpYpYpYpYpYpYpYpYpYpYpYpYpYpYpYpXpXpXpXpXpbv̐r{zׂҌϖ̵̪͠߻߬ޛގهxrlgc_\]yesonxie`[{VqPiPeYcd{`ln^t_[zNX~@W|:[r7^d2^S2ZBDM4UerVl~Vl~Vl~Vl~Vl~Vl~Ul~Ul~Ul~Ul~Ul~Ul~Ul}Ul}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk|Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Ul}}ǙoōyـԉВ̧͝˰˿޺ޫݚݍ؅~wqkgb_\^ygsqnzid_ZyUpPhRe]cgxapk^w[[}JX>Z|:^o6a`2aO7Y=LOERhyRhyRhyRhyRhyRhyRhyRhyRgyRgyRgyRgxRgxRgxRgxRgxRgxQgxQgxQgxQgxQgxQgxQgxQfxQfwQfwQfwOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOdtOdtOdthzt̏x{|օюΘˢʫɷǿܸܩܘ܋؄}vpkfb_\_xirtn}id_ZxUnPhUfacluatg^{V[FZ=]z:bl6d\4aIAS8NW_MbrMbrMbrMarMarMarMaqMaqMaqMaqMaqMaqMaqMaqMaqMaqMaqMaqMaqLaqLaqL`pL`pL`pL`pL`pL`pL`pGYhGYhGYhGYhGYhGYhGYhGYhGYhGYhGYhGYhGYhGYhGYhGYhGYhGYhGYhGYhGYhGYhGYhGYhGYhGYhGYhGYhH_jzʗpÎ~y؁ӉΓ˜ȥǯļٶڦږۉׂ{uojea^\`wlrvmhc^YvTmRhZffdpraxb^P[B\=aw:eh5gV8^CDPCFXfFXgFXgFXgFXgFXgFXgFXgFXfFXfEXfEXfEXfEXfEXfEXfEXfEWfEWfEWfEWfEWfEWfEWfEWfEWfEWfEWeEWewxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxt̏zy|ԄύʖǞŧöϿֳףؓنysmida^\~cwnrymhc^~XtSlTh_fk|dtma|]^K]@`=er9ib8hOCX;|pkwxwxwxwxwxvxvxvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwȶʙpÎ{xЇˏƗŸ׿Ѿ˺оүԠ֏׃|vqlgc`]]}evqq|lgb]|WqRkXhefpwdyhaU^F_@e|teCoP~kҾ̑y}quy~ͺٲ⫙㧫ݦץУɡ㸚屚ޭԪȧĐsokgda_]]exssmhb]zVqXmdjr}h}lfXdIgCn@unCuYkqVȹ϶wȏtpswļ|в۩ࣝ۠Ԟ͜řҼ۳ૐۦФš{okheb`^\_~jwxqlfa[vVo^lmjzuhaeNfEmBvuDxaXpN༭˰tÎsoruǵxҫ~ۡڛӘ˖“ɹӰۦ٠Ξ›wkhfca_]\a|ou|pje^|XrZnglv}jigUgHmDv|D{gQtP׵ɩŸtlmprɮuԢؙӔʑ˭բ֛̘thfdb`^]\eyttnhb\wXpanqlqi[hLmFvF}mRyU˫ȭŸvyklmo˧r՚ԒˎíΡzҘz̓rfdb`_]\^jwzrlf_}Ys]olm|wkaiOmGwEpY[׵ʱģ|uijkl̡tӔΌć}Ƣwϖs̐|pcb`_^][b}qvpic\w[qgoy}lfjRnIxGrmeἫϿϿϿϿϿ̸ʫthhij͛uюȇ|uʗo̎tnba_^]\\gzxsmf_{[rcpvnikTpJzIrvŵϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿοοοοοοοοοοοοοοοοοοοοοξξξξνعwggghΖy͊ƒ|vÛoʏnĊ|n`_^^]\`owpib\ucquojmRqJUo̼ξξξξοοοοοοοοοοοοοοοοοοοοοϿϿϿϿϿϿϿϿϿϿϿϿϿϿξξξξξξξξξξξξξξξξξξξξ;;;;;;;;;;;;;;;;ͽͽͽͽͽƱˣgffi̒}ɆxpƒkƉsn`_^]\\f{zsle]wbrtphnRuLͽͽͽͽͽ;;;;;;;;;;;;;;;;ξξξξξξξξξξξξξξξξξξξξͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽ̼̼̼̼̼̼̽̽̽̽̽̽̽̽̽̽̽以kddiʑń|tlŌl~n_^]\[`qvog^w`rwpbqO~xж˼̼̼̼̼̼̽̽̽̽̽̽̽̽̽̽̽ͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽ̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̽˼˼˼˼˼˼˻˻˻˻˻˻ʺ带fcgƒ}ÃzqhÆqo^]]\]iyph_wesvrX{Ϸʺ˻˻˻˻˻˻˼˼˼˼˼˼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̽˼˼˼˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻ʺʺʺʺʺʺʺʺʺȦecu…yng{p]\\[d|qgavstxʺʺʺʺʺʺʺʺʺ˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˼˼˼˻˻˻˻˻ʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʹʹʹʹʹʹɹɹɹɹȸ维įvois\[[f|nhz༱ɸɹɹɹɹʹʹʹʹʹʹʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺ˻˻˻˻˻ʺʺʺʺʺʺʺʹʹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɸɸɸɸɸɸɸɸɸɸɸɸɸɸǸĶíؼܯϤȽض淧ǸɸɸɸɸɸɸɸɸɸɸɸɸɸɸɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹʹʹʺʺʺʺʺʺʺɹɹɹɹɹɹɹɹɸɸɸɸɸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸɸɸɸɸɸɹɹɹɹɹɹɹɹȸȸȸȸȸȸȸȸȸȷȷȷȷȷȷȷȷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷȷȷȷȷȷȷȷȷȸȸȸȸȸȸȸȸȸǷǷǷǷǷǷǷǷǷǷǷǶǶǶǶǶǶǶǶǶƶƶƶƶƶƶƶƶƶƶƶƶƶƶƶƶƶƶƶƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƶƶƶƶƶƶƶƶƶƶƶƶƶƶƶƶƶƶƶǶǶǶǶǶǶǶǶǶǷǷǷǷǷǷǷǷǷǷǷƶƶƶƶƶƶƶƶƶƶƶƵƵƵƵƵƵƵƵƵƵƵƵƵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵƵƵƵƵƵƵƵƵƵƵƵƵƵƶƶƶƶƶƶƶƶƶƶƶƵƵƵŵŵŵŵŵŵŵŵŵŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴĴĴĴĴĴĴĴĴĴĴĴĴijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijĴĴĴĴĴĴĴĴĴĴĴĴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŵŵŵŵŵŵŵŵŵƵƵƵŴŴŴŴŴŴĴĴĴĴĴĴĴijijijijijijijijijijijijijijijijijóóóóóóóóòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòóóóóóóóóijijijijijijijijijijijijijijijijijĴĴĴĴĴĴĴŴŴŴŴŴŴijijijijijijijijijóóóóóòòòòòòòòòòòòòòòòòòòò²²²²±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±²²²²òòòòòòòòòòòòòòòòòòòòóóóóóijijijijijijijijijòòòòòòòòòòòò²²±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±²²òòòòòòòòòòòò±±±±±±±±±±±±±±±±±±±±±±±±±±±±// Persistence of Vision Ray Tracer Scene Description File // File: ?.pov // Vers: 3.6 // Desc: Basic Scene Example // Date: mm/dd/yy // Auth: ? // #version 3.6; #include "colors.inc" global_settings { assumed_gamma 1.0 } // ---------------------------------------- camera { location <0.0, 0.5, -4.0> direction 1.5*z right x*image_width/image_height look_at <0.0, 0.0, 0.0> } sky_sphere { pigment { gradient y color_map { [0.0 rgb <0.6,0.7,1.0>] [0.7 rgb <0.0,0.1,0.8>] } } } light_source { <0, 0, 0> // light's position (translated below) color rgb <1, 1, 1> // light's color translate <-30, 30, -30> } // ---------------------------------------- plane { y, -1 pigment { color rgb <0.7,0.5,0.3> } } sphere { 0.0, 1 texture { pigment { radial frequency 8 color_map { [0.00 color rgb <1.0,0.4,0.2> ] [0.33 color rgb <0.2,0.4,1.0> ] [0.66 color rgb <0.4,1.0,0.2> ] [1.00 color rgb <1.0,0.4,0.2> ] } } finish{ specular 0.6 } } } BM_6(ZZ_¼ս{{{nnnhhhdddcccjjjxxxļyyylllcccZZZWWWaaavvvɾŬ|||nnnaaaVVVQQQ]]]tttʽȲooo___QQQKKKVVVqqq˾ɸtttcccRRRFFFOOOgggĿ³vvv^^^NNNSSSfffʾmmm]]]aaarrr¹rrrjjjppp¹ƾ~~~zzzĻºǻƾǼźûû¾Ŀ¿žºɽðмrrrpppttt{{{ǰrrr\\\RRROOOUUUeeeuuu}}}{{{ȼbbbHHH555)))111FFF[[[kkkxxxvvvlllaaaUUURRReee|||kkkNNN555 ---BBBKKKLLLDDD888555000...;;;WWWgggnnnuuuzzz~~~żjjjBBB///%%%***555111###'''******---000:::???999***---@@@KKKXXXeeeqqqķiii:::---333;;;FFFQQQNNN444 (((>>>NNNQQQUUUWWWQQQ;;;%%% ***:::QQQcccpppyyyyyy]]]888111GGGVVVZZZ___ggggggUUUAAAFFF\\\kkkooonnnkkkbbbRRR<<<''''''CCCVVV^^^ccclll}}}ĽuuuWWW666,,,IIIhhhxxxxxxuuuxxx~~~zzzqqqoooxxxxxxkkkXXX???'''222DDDKKKOOOWWWeee|||»xxxrrriiiVVV777'''===hhhoooVVV>>>***!!!---444:::FFFVVVlll½Ŵpppeeeccc^^^PPPBBB000***>>>ccc~~~lll\\\GGG111$$$!!!$$$777NNNccctttǼyyyuuujjjTTTHHHDDD:::000---111BBBfffǾvvvdddOOO@@@333 +++FFFZZZlll|||zzzrrr}}}yyynnncccVVVLLLEEE999,,,'''...???OOO[[[ppptttcccUUUGGG,,,""":::OOOdddxxxttt|||dddXXXaaassswwwooohhhccc^^^XXXUUUJJJ555)))'''$$$(((333MMMeeevvvǸwwwhhh\\\QQQ888!!!''';;;WWWqqqgggzzz|||yyyuuunnnhhhiiilllssszzz```EEE777;;;LLLOOOFFF@@@???===;;;:::111///<<<===@@@MMM^^^qqq˸vvviii___VVVGGG///'''FFFiiiTTTcccddddddddd^^^YYYZZZ___gggtttuuu___AAA((('''(((###!!!%%%222QQQbbbffflllvvvʴvvvlllaaaWWWLLL===+++:::eee333BBBJJJQQQYYYYYYRRRPPPUUU[[[fffwwwuuubbbLLL...!!!)))$$$$$$'''"""555XXXtttλzzztttiii^^^TTTJJJ:::$$$666ddd(((&&&...AAAQQQTTTOOOLLLOOOUUUaaarrrjjjUUU???&&&333GGGFFF;;;222///111000***---DDDfffʺ~~~pppggg\\\JJJ+++111___yyy@@@000!!!222FFFKKKMMMUUU\\\```iiiyyyzzzeeeLLL000***IIIbbbjjjbbbKKK666......///:::NNNoooǴxxxjjjTTT000444YYYnnn~~~VVVLLL///(((;;;DDDPPPcccnnnpppuuu{{{eeeIII)))000VVVqqq~~~zzzaaa@@@...---777IIIbbb}}}Ƹttt[[[111111QQQ^^^nnniiicccJJJ---,,,===TTTmmm|||~~~vvv^^^EEE(((111ZZZxxx~~~gggJJJ;;;???JJJ^^^uuunnnDDD,,,>>>MMM___xxx~~~zzzgggEEE(((555WWWvvviiiOOO>>>'''222___zzzwwweeeUUUNNNTTT```qqq˼eee888+++888RRRmmmyyy[[[222444\\\www|||oooXXXGGG888(((AAAeeerrrooogggccc^^^\\\aaammm}}}ýaaa777''';;;]]]}}}vvvVVV222???]]]nnnyyywwwnnnhhh^^^OOOBBB111...NNNaaadddYYYWWW^^^bbbaaafffrrr̾wwwWWW888---;;;bbb~~~iiiIII...DDDYYYaaaiiisssrrriii```[[[UUUIII999'''666NNNWWWSSSJJJHHHTTT[[[]]]dddqqq̳iiiSSS???///666aaalllYYY;;;+++FFFVVV[[[cccjjjfff[[[TTTSSSOOO@@@(((""":::GGGIIIIIIDDD???EEEMMMUUUccctttֺooo\\\NNN<<<***DDDjjjxxx~~~kkkTTT@@@(((***FFFUUUXXX^^^bbb]]]SSSOOOLLLDDD222###777===???EEEDDD???AAAGGGSSSeeezzzçwww___RRRCCC***,,,NNN^^^cccfffmmm{{{OOO666$$$'''???MMMPPPSSSVVVRRROOONNNFFF777"""***777;;;@@@FFFFFFEEEIIIPPPZZZnnn˳kkkZZZKKK666%%%111HHHMMMNNNYYYeeeqqq...!!!"""333BBBGGGJJJLLLHHHHHHJJJCCC000333???FFFLLLOOONNNQQQYYY___kkkιqqq```PPP999)))---333999HHHSSSYYYhhhyyy666888111+++(((000===HHHPPPPPPLLLJJJIIIAAA333333FFFUUU]]]___^^^dddqqqyyyÿп~~~nnn[[[DDD///"""111;;;@@@OOO]]]pppUUUXXXLLL???777555@@@QQQ\\\^^^^^^\\\QQQBBB444%%%...III```nnnrrruuuȹ~~~lllQQQ555(((###$$$%%%...;;;SSSbbbhhh```SSSIIIDDDKKK]]]hhhkkknnnjjj[[[DDD444'''444QQQjjj}}}Ļwww___PPPBBB999333&&&###999mmmwwwwwwnnnbbbaaakkkvvvxxxuuussskkk[[[FFF666&&&###BBBaaawwwȽrrrdddWWWGGG222***zzzsssgggXXXGGG777$$$+++PPPoooȼyyykkkYYY:::wwwjjjZZZHHH555 333ZZZwww¶nnnQQQ}}}tttcccKKK000""";;;^^^{{{ŹsssVVVyyyhhhLLL,,,)))IIIdddɿvvvWWW}}}sss^^^AAA$$$///NNNgggxxxZZZsss]]]CCC+++!!!888QQQhhh̾qqqVVVhhhIII---...JJJ```sssnnnTTT{{{qqqZZZ=== ;;;\\\uuu°www^^^|||wwwuuukkk___HHH000***EEEcccyyyðjjj{{{}}}jjj]]]cccfff___XXXOOO>>>)))...IIIaaasssȴllllllqqqgggQQQEEEHHHMMMJJJGGGCCC888&&&$$$===VVVjjjͷ{{{dddLLLPPPHHH666+++000444444666555+++...IIIaaa{{{ÿ̴qqq[[[(((---*** """333LLL```zzzɴvvvfffNNN&&&...---&&& !!!,,,333777AAATTT```kkkĻ~~~jjjUUU<<<444555999DDDPPPPPPEEE:::444:::DDDGGGJJJZZZllluuu~~~ǾͿ}}}eeeEEE(((BBBKKKVVV```hhhggg___TTTNNNSSS]]]]]]]]]iiivvv­jjjAAAHHHWWWfffnnnrrrsssqqqnnniiiiiikkkjjjlllttt|||ýqqqCCCJJJZZZiiiqqquuuwww{{{yyyrrrnnnqqqxxxƹwwwCCC LLLYYYfffmmmqqquuu}}}{{{wwwxxx~~~˾ÿ°ttt<<<'''MMMYYYdddlllpppuuu|||̼Ǿİddd111+++OOO]]]iiisssxxx~~~ǽüƻWWW///---TTTccctttþvvvqqqsssĿĿĻ~~~WWW......[[[hhh~~~|||ccc]]]]]]cccwwwsssRRR++++++bbblllǻfffKKKEEEHHHSSSjjjzzzyyyyyy}}}~~~}}}{{{}}}þ½wwwaaaCCC###&&&kkkrrrssscccMMM666+++,,,777SSSiiimmmmmmooollljjjiiihhhhhhttt¿ýxxxdddOOO777!!!ssszzz|||hhhQQQ===... !!!###///LLLWWWYYYSSSIIIDDDGGGIIILLLZZZnnnuuuyyy{{{iiiXXXFFF444 |||tttcccMMM111 +++555999555+++***333666...%%%!!!&&&///:::NNNdddnnnrrr~~~uuufffUUUDDD555&&& ûvvv^^^PPP<<<"""###666GGGNNNOOOMMMEEE222"""$$$---HHHdddnnnrrr{{{~~~~~~sssdddTTTFFF;;;/// ø~~~|||bbbHHH===+++'''888HHHZZZbbbaaa```\\\KKK444###***888;;;/// ===^^^jjjoooxxx½{{{~~~wwwgggYYYOOOFFF777"""// Persistence of Vision Ray Tracer Scene Description File // File: ?.pov // Vers: 3.6 // Desc: Orthographic Scene Example // useful for generating image_maps, heightfields, etc. // Date: mm/dd/yy // Auth: ? // #version 3.6; global_settings { assumed_gamma 1.0 } // ---------------------------------------- camera { orthographic location <0,0,1> // position & direction of view look_at <0,0,0> right 1*x // horizontal size of view \___ to be rendered at square size up 1*y // vertical size of view / } // ---------------------------------------- box { // this box fits exactly in view <-0.5, -0.5, 0>, <0.5, 0.5, 0> texture { pigment { agate color_map { [0.0 color rgb 0.0 ] [1.0 color rgb 1.0 ] } } finish { ambient 1.0 diffuse 0.0 } } } BM~6(xZ~,'}3.}qTKpe_V 3.D=peTM3.wpe+'z3.}qLEpecY 3.C=peVMVMVMVMVMVMVMVMVMh]{UMUMUMUMUMUMUMUMUMUMUMTMTMTMTMTMTMTMTMTMTMUMUMUMUMUMUMUMUMUMUMUMwl}qVMVMVNVNVNVNVNVNVNVNVNVNVNVNVNZQrE?u,'~q MF`V~qwl\T~qE?v,'  ~q MFaX 82}qwl\T g]]S}qE?v2. B<VMVMRIUMULULULULULULUMUMUMUMUMUMf]UNTMTMTMTMTMTMTMTMTMTMTMTM\T^VTMTMTMTMUMUMUMUMUMUMUMUNVNlbVNVNVNVNVNVNVNVNVNVNVNVNWOmb~ UM3/xms93JB~ 72|3/wF@s]T# ~ ka 3/MG s tod~ TN3/xns3.JB~ 72|3/x?:~sYP5/3.3.3.3.3.3.3.3.3.3.uj403.3.3/3/3/3/3/3/3/3/YR2/2/2/3/3/3/3/3/3/3/3/41h_3/3/3/3/4/4/4/4/4/4/50,(4/4/4/4/4/4/4/4/4/60i^/*}qpfu paidfbdbececfcgchgnips|xTN peQH$ wUL}q/#k[YZZ[]^_fH`aaabbdbecfcgdhchbgdqao%kkjv}73 PH,'|HAwjxut`Z\TrKUVVWXYYZ[\]@,^`_``abaceoiyiziziyknnl~iubkYVHz1) kb ,' mbqqqqq~xk~q}q}q}p}p}p|p|p}q~~wuZgkFSkFSkFSkGTkGTjFUQ6U_?V_?V_@W_@X_@Y^@Y]@Z]@[]@\^A]nM^mNahvhvknnnnnmmnprstr|ggXypul}r}r}r}r}r~r~r~r~r}qcZ~rrrrrrrrr[Qf[w$ ULcElRRRRSSTTT0 UYU\V]W]W]X^Y^Z^[^\``|_ulonnmmmmoqsux{}x'!?9~rUMx$ j^/*gaZPZP`>QQQRRSSSTTW9U\U]V]W]W]X^Ybgemnoonnmmmoruy|`R }thME$ 4.4.4.4.4.4.4.50kiXPXPXPXPXP[;P(Q(Q(Q(R(R(R(S(S)TxOTZUZUZUZV]Zkxpoonnnmorvz~u933/3/3/3/h_504/4/4/4/4/4/4/,'604/4/4/4/4/4/4/ ]S/*|C7UPPPPPP PlFP[Q[Q[Q[Q[R[R\R\SXS+STT?0^jqpoonnnpuz~?9~rUL$ xh] ]SPGZRW7PPQQQQQQ QmFQ[Q[Q[Q[Q[Q[R\R\RtKSS@1]mqpoonnorw|qgr/*eZh] ($VMVMVMVMVMVMWNbcTPSPP:%PC+PC+QC+QC+QC+QC+QC+QyMQSQSQSQSQSQSQSRSRZ?\lqponnnoty~VNUMUMUMUMUMVMVMlaWNVMVMVMVMVMWM>7XNWMWMWMWMWMq3- h\qQPPPE,PVP\P\P\P\P\Q\Q\Qc?QQQQQQQ)Uh{qponnnpuz¬­ííí KC}0*^S~QH k_bWoQQQQ'PzNP\P\P\P\P\P\P\Pc?QQQQQ Q|]tpponnnpu{«ìĮůưDZDZDzDzƱŰ­ pdVL^S|n0*WMWMWMTKtgWMWMWMWMWMVLhjUQUQUQUQUQ]QF-PC+PC+PC+PC+PC+PB*P]7WMWMWMk_LCWMWMrr~owurr~orrrpwwo{nzn{n{o{sz¦ĩƬȮʱͳεзҹԼվ׿ʔprrrz{mprrr}~prr{qprtwSIrrr~[Qrrr{qnynznznzq|w¦ĩǫɮ˱ͳ϶ѸӺռ׿ͯrrrpwsrr|nwj{rr[Q~srXNp{xr|my{rr[Qtrrr[Qxkrnymymyoyt~|¥Ĩǫɮ˱ͳжҸԻֽrrrprr~wSJrryz[Qrwpch\wjnbj^obnbj^wjonxmxmxp{x¤Ĩǫɮ̰γжҸջ׽Ѻǘk_nbnbqj^nbqdh]nbqi]sf{mbW5/XNZOxj5/aV^TWMA9XNNE]Ro}nwmwnws|{£ħǪʭ̰γѵӸջؾΨp`UZP[Pr[QOFWMrWMbVC;5/WM\R5/5/rraV5/tgru5/F>|rvu5/xj}yug[pc~|tzoymvmvoxv~¢Ŧǩʬ̯ϲѵӸֻؽы{~D\Qvl_=6ykaVnbI@}n)$}sl`$ numumuqyz¡ťȨʫ̮ϱѴԷֺٽ҉z$ ZP\Rwnb)$qI@l`dXmaB:}g[yG>qd~yvZO,'_T}n>7\QrqdYOxrYOqwWMrqmumtnusz}Ÿţȧ˪ͭϰѳӶֹټۿӘyk|dXzl~~oykWMzr{mWMbWr~oUKrqLC]RrMDj^qaVrvcW{mZO}r[Qm`F7qz{j]qdz($\Q2,\Q~RI\Qy[QeY}nj]{ltmrrv{Ýơɥ̩ϬҰԳ׶ٹܼ޿Εj^UKl`C;ynb=6ts=6\Rx<53-w\Rxv}ykumaqdPGqKCz[Qyre.)^S wmrsw}Şȣ̧ϪѮԱ״ٷۺ޾̴ȻKByeYNELCxma[PqpF>}o}`Uuzxj`Uzlk^ykOFzu{mfZaVfZ~owyks{imqsw~ÚǠʤͨЬӯֳض۹ݼ߿v}~ougzl{qdfZaVzl|wLCzlzlnaeYxjqdykvxyjsfx}opctfspYNC;vQGrdpcA9IAUKxh\rnqsvĜȡ̥ϩҭ԰״ڷ߽ܺڃtZOzh\ocr_T,'0*{UKrzl}n~~oppcyy{ykw~o}nzzkzkuzkC;zlwii\}{lwui\rdv}o|nm`p_TvsuƝʢͦЪӮֲٵ۸޻Ѧpc{mzk_j^|z^St~p[QWMYO|vhvhwxkzobwi|mx}dXaUs}pykug~n`ZOm`pw{lrug}xi~vlrt~ØǞˣΧҫկ׳ڶܹ߼ë|mzqpcrxj}{m|nyvisfretqugs}i]cXrxugrzvv~nt}uuvx{rp|ux|t{lyvtwxu|usu{rxot}~Ęɞ̣ШӬְٳ۷޺ཾِ|tz|z}nsy{lvwzyuzrwwr~|suxzzqzyxr}p`ro_vsqayibU^QgY]QfYcVdWdW}kuscvqauoxgpscq}usrt~ozzŘɟΤѩխرڴݸ߻ιͳxhqbtvrcvfurxhvxrr|~tpȿȿȿȿȿȿȿȿȿȿȿȿȿȿȿȿȿȿȿȿȿȿȿȿȿȿȿȿȿȿȿȿȿɿȿȿȿȿȿǽŘʟϤө֮ٱܵ޸໻㾾廯ŗ˞Ϥө֮ڲܵ߹⼻俾ϠĖʝϤө׮ڲݶ๸㼻忾ƕÒʜϣԨ׭۲޶Ṹ㼻濾ɻǕɘΡӧ׬۱޵ṷ伺濾Ⱥ˚͝ҥ׫ڰ޴Ḷ伺濽ȺҢС֨ڮݳ᷵仸羼ϿϿϿϿϿϿϿϿϿϿϿϿ̽ޮӣثݱ൳乷潺ϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿοοοοοοοοοξξξξξξξξξξξξξξξξξξξ;;;;;;بڭ߲㷴滸迼¿;;;;;;ξξξξξξξξξξξξξξξξξξξοοοοοοοοοϿϿϿϿϿϿϿϿϿϿϿξξξξξξξξξ;;;;;;ͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽ̼̼̼̼̼̼̼̼̼̼̼̽̽̽̽̽̽ʺ蹮ݮ೯临缹;̼̼̼̼̼̼̼̼̼̼̼̽̽̽̽̽̽ͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽ;;;;;;ξξξξξξξξξͽͽͽͽͽͽ̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̽̽̽˼˼˼˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻ɹ￳渰帳輷ÿ˼˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˼˼˼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̽̽̽ͽͽͽͽͽͽ̼̼̼˼˼˻˻˻˻˻˻˻˻˻˻˻˻˻˻ʻʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʹʹɹɹɹɹɹɹɹɹɹɹɹɹǸ¶ŻǼƾ˾ʽɹɹɹɹɹɹɹɹɹɹɹɹʹʹʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʻ˻˻˻˻˻˻˻˻˻˻˻˻˻˻˼˼̼̼̼˻ʺʺʺʺʺʺʺʺʺʺʺʺʺʹʹɹɹɹɹɹɹɹɹɹɹɹɹɹɸɸɸɸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸƸĹźǹȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸɸɸɸɸɹɹɹɹɹɹɹɹɹɹɹɹɹʹʹʺʺʺʺʺʺʺʺʺʺʺʺʺ˻ɹɹɹɹɹɹɹɹɹɹɸɸȸȸȸȸȸȸȸȸȸȸȸȷȷȷȷǷǷǷǷǷǷǷǷǷǷǷǷǷǶǶǶǶǶǶǶǶǶǶǶǶǶƶƶƶƶƶƶƶƶƶƶƶƶƶƶǶǶǶǶǶǶǶǶǶǶǶǶǶǷǷǷǷǷǷǷǷǷǷǷǷǷȷȷȷȷȸȸȸȸȸȸȸȸȸȸȸɸɸɹɹɹɹɹɹɹɹɹɹȸȸȸȸȸȸȷȷȷȷǷǷǷǷǷǷǷǷǶǶǶǶǶƶƶƶƶƶƶƶƶƵƵƵƵƵƵƵƵƵƵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵƵƵƵƵƵƵƵƵƵƵƶƶƶƶƶƶƶƶǶǶǶǶǶǷǷǷǷǷǷǷǷȷȷȷȷȸȸȸȸȸȸǷǷǷǶǶǶǶƶƶƶƶƶƶƵƵƵƵƵƵŵŵŵŵŵŵŴŴŴŴŴŴŴŴŴĴĴĴĴĴĴijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijĴĴĴĴĴĴŴŴŴŴŴŴŴŴŴŵŵŵŵŵŵƵƵƵƵƵƵƶƶƶƶƶƶǶǶǶǶǷǷǷƵƵƵƵƵŵŵŵŵŵŴŴŴŴŴŴĴĴĴĴijijijijijijijijijóóóòòòòòòòòòòòòòòòòò²²²²²±±±±±±±±±±±±²²²²²òòòòòòòòòòòòòòòòòóóóijijijijijijijijijĴĴĴĴŴŴŴŴŴŴŵŵŵŵŵƵƵƵƵƵŴŴŴĴĴĴĴijijijijijijijóóòòòòòòòòò²²±±±±±±±±±±±±±±±±±±±±±±±±±±²²òòòòòòòòòóóijijijijijijijĴĴĴĴŴŴŴijijóóòòòòòòò²²±±±±±±±±±±±±±±±±±±²²òòòòòòòóóijij²±±±±±±±±±±±±±±±±²// Persistence of Vision Ray Tracer Scene Description File // File: ?.pov // Vers: 3.6 // Desc: Radiosity Scene Template // Date: mm/dd/yy // Auth: ? // #version 3.6; #declare Radiosity=on; global_settings { assumed_gamma 1.0 //max_trace_level 25 #if (Radiosity) radiosity { pretrace_start 0.08 // start pretrace at this size pretrace_end 0.04 // end pretrace at this size count 35 // higher -> higher quality (1..1600) [35] nearest_count 5 // higher -> higher quality (1..10) [5] error_bound 1.8 // higher -> smoother, less accurate [1.8] recursion_limit 3 // how much interreflections are calculated (1..5+) [3] low_error_factor .5 // reduce error_bound during last pretrace step gray_threshold 0.0 // increase for weakening colors (0..1) [0] minimum_reuse 0.015 // reuse of old radiosity samples [0.015] brightness 1 // brightness of radiosity effects (0..1) [1] adc_bailout 0.01/2 //normal on // take surface normals into account [off] //media on // take media into account [off] //save_file "file_name" // save radiosity data //load_file "file_name" // load saved radiosity data //always_sample off // turn sampling in final trace off [on] //max_sample 1.0 // maximum brightness of samples } #end } #default { texture { pigment {rgb 1} #if (Radiosity) finish { ambient 0.0 diffuse 0.6 specular 0.3 } #else finish { ambient 0.1 diffuse 0.6 specular 0.3 } #end } } // ---------------------------------------- camera { right x*image_width/image_height location <0,1.5,-4> look_at <0,1,0> } light_source { <500,500,-500> // light's position color rgb <1, 1, 1> // light's color } sky_sphere { pigment { gradient y color_map { [0.0 rgb <0.6,0.7,1.0>] [0.7 rgb <0.0,0.1,0.8>] } } } // ---------------------------------------- plane { y, 0 texture { pigment { checker color rgb <1.0, 0.8, 0.6> color rgb <1.0, 0.0, 0.0> scale 0.5 } } } sphere { <0,1,0>, 1 } BM~6(xZ~ХѥѥѥѥѥѥѥѥѥѦѦѦѦѥѥѥѥѥѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѥѥѥѥѥѥѥѥѥѥѦѦѦѦѦѦѥѥѥѥѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѥѥѥѥѥѥѥѥѥѥѥѦѦѦѦѦѦѦѥѥѥѥѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѥѥѥѥѥѥѥѥѥѥѦѦѦѦѦѦѥѥѥѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѥѥѥѥѥѥѥѥѥѥѥѥѦѦѦѦѦѦѦѥѥѥѥѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѥѥѥѥѥѥѥѥѥѥѦѦѦѦѦѥѥѥѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѥѥѥѥѥѥѥѥѥѥѥѦѦѦѦѦѦѦѦѦѥѥѥѥѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѣ̜͢ښššššššŸȢ̣ΦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѥѥѥѥѥѥѥѥѥѥѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦҦҦҦҦѦѦѦҦҦҥѥѥѦѦѦѥѥѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѠɕshx]lvTajMY`KW^KW^KW^KW^KW^KW^KW^KX^KX_KX_KW^KX_N[bUbj^lveur{˦ѦѦѦѦѦѦѦѦѥѥѥѥѥѥѥѥѥѥѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦҦҦҦҦҦҦҦҦҦҦҦҦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѥЙq[isKW^KW^KW^KW^KW^KW^KW^KW^KW^KX^KX_LX_LX_LX_LX_LX_LX_LX_LX_LX_LX_LY_LY_LY_LY_LX_LX_LX_LX_KW_KW^UbkixxͦѦѦѦѥѥѥѥѥѥѥѥѥѥѥѦѦѦѦѦѦѦѦѦѦѦҦҦѦѦѦѦѦѦҦҦҦҦҦҦҦҦҦҦҧҧҧҦҦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѥВvWdmKV^KW^KW^KW^KW^KW^KW^KW^KW^KX^LX_LX_LY_LY_LY_LY_LY_LY`LY`LY`LY`LY`MY`MZ`MZ`MZ`MZ`MZ`MZ`MZ`MY`LY`LY`LX_LX_LX_KW_KW^KW^KV^MYabp{xȦѦѥѥѥѥѥѥѥѥѥѥѥѦѦѦѦѦѦѦѦѦҦҦѦѦѦѦѦҦҦҦҦҧҧҧҧҧҧҧҧҧҧҧҦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦѦҦѦѦҦѦѦѦѣͅZgqKW^KW^KW^KW^KW^KW^KW^KW^KX_LX_LX_LX_LY_MY`MY`MZ`MZ`MZ`MZ`MZ`MZ`MZ`MZ`M[`M[aM[aN[aN[aN[aM[aM[aN[aN[aM[aMZ`MZ`MZ`LY`LY_LX_KX_KW^KW^KV^JV]JV]JU]JU]_mx{ΦѥѥѥѥѥѥѥѥѦѦѦѦѦѦѦѦѦҦҦҦѦҦҦҦҦҦҧҧҧҧҧҧҧӧӧӧҧҧҧҦѦѦѦѦѦҦҦҦҦҦҦҦҦҦҦҦҦҦҦҦҦҦѥЈWdmKW^KW^KW_LX_KX_KX_LX_LX_LX_LX_LY`LY`LY`MY`MZ`M[aN[aN[aN[aN[aN\aN\aN\aN\aN\bN\bO]bO]bO]bO]bO]bO]bN\bN\bN\bN\bN\aN[aM[aM[`MZ`MZ`LY_LX_KX^KW^KW^JV]JU]IU\IU\IU\IT\R^htϥѥѥѥѥѥѥѦѦѦѦѦѦѦҦҦҦҦҦҦҦҦҧҧҧӧӧӧӧӧӨӨӧӧӧӧҧҦѦѦѦѦҦҦҦҦҦҦҦҦҦҦҦҦҦҦҦҦҦҡn~KW_KW_LX_LX_LX_LX`LX`LX`LY`MY`MY`MY`MZ`MZaMZaN[aN[aN\bN\bO\bO]bO]cO]cO^cP^cP^cP_dP_dP_dP_dP_dP_dP_dP_dP_dP_cP^cO^cO]bO]bO]bN\aN\aN[aMZ`MZ`LY_KX^KW^KW]JV]JU\IU\IU\IT\IT\IT]IT\Wcm}ťѥѥѥѥѦѦѦѦѦѦѦҦҦҦҦҧҧҧҧҧҧӧӧӨӨӨԨԨԨӧӧӧӧӧҦѦѦҦҦҦҦҦҦҦҦҦҦҦҦҦҦҧҦҦҦңds~LX_LX_LX_LX_LX`LX`LY`MY`MY`MZ`MZ`MZ`MZaN[aN[aN[bN\bO\bO]cO^cP^cP_dP_dQ_dQ`dQ`eRaeRbfRbfRbfRbfRbfRbfRbfRbfRbfRbfRbfRaeQ`eQ`dP_dP_cO^cO]bN\bN[aMZ`LY_LY_KX^KW^JV]JU]JU\IU\JU]JU]IT]IT\IT\KV^o~ѥѦѦѦѦѦѦѦҦҦҦҧҧҧҧҧҧӧӧӨӨӨԩԩԩԨԨӧӧӧҧҧҦѦҦҦҦҦҦҦҦҦҦҦҦҦҦҦҦҧҦҧҧ|LX`LX`LX`LX`LX`LX`MY`MY`MZaMZaNZaN[aN[bN[bO\bO]cO]cO]cP^dP_dQ`eQ`eQ`eRafRafRbfScgTdhTdhTehTehUfiUfiUfiUfiUfiUfiUfiUfiTehTdgScgScfRbfQaeQ`dP_cO^bN\aN\aMZ`LY_KX^KW^JV]JV]JU]JU]JU]IT\IT\IT\IT\IS\JT]m|¥ѦѦѦѦѦѦҦҦҧҧҧҧӧӧӧӧӨӨԨԨԩԨԨԨԨӧӧҧҧҦҦѦҦҦҦҦҦҦҦҦҦҦҦҦҦҧҧҧҧҧҤR^gMX`MX`MY`MY`MYaMYaMYaMZaNZaN[bN[bO\bO\bO\cO]cP^cP^dP_dQ_eQ`eRafRbfSbgScgSdgTdhUfiVgjVhkWikWikXjlXkmXkmXkmYkmYkmYkmXkmXjlWikWikVgjUfiTehScgRbfQ`dP_cO^bN\aM[`LZ_LX^KW^JV]JU]JU]IT\IT\IS\IS\IS\IS\IS\IS\LW`}ͦѦѦѦҦҦҦҧҧҧӧӧӧӧӧӨԨԨԨԨԨӧӧӧӧӧҧҦҦҦѦҦҦҧҧҧҧҧҧҧҧҧҧҧҧҧҧҧҧқMX`MYaMYaMYaMYaMYaNZaNZbN[bN[bO\bO\cO\cO]cO]cP]cP^dQ_dQ`eRafRbfSbgScgTehUfiUfiVgjWikXklYmnZmnZno\pp\qq\qq]sr^ss]sr]sr]rr]rr]qq\pqZnoYlmXjlVhjUfiSdgRcfQaeP_cN]bM[`LZ_KX^KW]JV]IU\IT\IS\HS[HS[HS[HS[HS[HS\IS\IS\`myĦѦѦҦҦҦҧҧӧӧӨӨӧӨӨӨԨԨԨӧӧӧӧӧҧҦҦҦҦҦҦҦҧҧҧҧҧҧҧҧҧҧӧҧҧҧҧҧҡO[cMYaMYaMYaMYaMZaNZbN[bN[bO\bO\cO\cO]cO]cO]cP^dQ_eQ`eRafSbgScgTdhUeiVgjWikWjlXklZmn[pp\qq]sr^ts`vuaxvbzwc{yd}zd}zd}zd}zd}zd|yczxaxv_ut]rr[ooYlmWikUgiSegQbeP_cO]bM[`LY_KX^JV]IU\IT\HS[HS[HS[HR[HR[HS[IS\IS\IS\IS\R^hѦҦҦҧҧӧӧӧӨӨӨӨӧӨӨӨӧӧӧӧҧҧҧҦҦҦҦҦҦҦҧҧӧӧӧӧӧӧӧӧӧӧӧӧҧҧҧl{MYaMYaMYaMYaMYaNZaNZbN[bO\cO\cO]cO]cP]cP^dP_dQ`eRafRbfScgTdhUeiVgjWikXkmYmnZoo]rq_ut`wubzwd}yf{h~klnoooonmkh}e~zbzw_us\qpYmmVijTehRbeP_cN]aM[`LY_KW]JU\IT[HS[HRZGRZGRZHRZHR[HS\IS\IS\IS\IT]R]gĦҦҧҧҧӧӧӧӨӨԨԨӧӧӧӧӧӧӧӧҧҧҦҦҦҦҦҦҦҧҧҧӧӧӧӧӧӧӧӧӧӧӧӧӧӧҧҚQ]eMYaMYaMYaMZaNZaN[bO[cO\cO]cP]dP]dP^dP^dQ_eR`fRafSbgTdhUeiUgjWhkXklZmn[pp]sr_vtbzwe~zh~lorvy}}yuplg}c{x^usZooWjkTehQaeO^cN\aLZ_KW^JV]IT[HS[GRZGQZGQYGQZHRZHR[IS\IS\IT]JT]JT]ftѧҧҧӧӧӧӨԨԨԨԨԧӧӧӧӧӧӧӧҧҧҦҦҦҦҦѦҦҧҧҧӧӧӧӧӧӧӧӧӧӧҧӧӧӧӧӧӊNZbMYaNZaNZbNZbN[bO[bO\cO]cP]dP^dP^dP^dQ_eR`fRafSbgTdhUfjVhkWjlYlmZno]sr`wub{xezjotzDZϸԽ־ԽιƳ{ske{_vtZonVhjScfP_cN\aLZ_KX^JV]IT[HSZGQZGQYGQYGQYGQZHR[IS\IT\IT]JT]JU^KV_ҧӧӧӧӨԨԨԨԨԨԧӧӧӧӧӧӧӧҧҧҦҦҦҦҦѦҦҧҧҧҧҧӧӧӧӧӧӧӧӧӧӧӧӧӧӧӧӊQ]eNZbNZbNZbNZbN[bO\cO\cO]cP]dP]dP^dQ_eQ`fRbfScgTdhUfiVhkXjlYln[op^tsayvd}zi~nt|Ӻ٪Ȝ˸vmd~z]sqWjkSdgP_cN\aLZ_KX^JV]HT[HRZGQYGQYGQYGPYGQYGQZHR[IS\JT]JT]KU^KV_ҧӧӧӨӨԨԨԨԨԨԨӧӧӧӧӧӧӧҧҦҦҦҦҦҦѦҦҦҦҧҧҧҧҧӧӧӧӧӧӧӧӧӧӧӧӧӧӧӖ^lwNZbNZbNZbNZbN[bO[cO\cP]dP]dP^dQ_eQ`fRafSchTdhUeiVgjWjlYmn[pp^ss`xvd}zjovϷ֠ҽ~rg|^tsXkkScfP_cN\aLY_KW^IU\HS[GQZGQYGQYGQYFPYGQYGQZHR[IS\IT]JT]KU^KV_ҧӧӧӨԨԨԨԨԨԨԨԨԧӧӧӧӧӧҧҦҦҦҦҦҦѦѦҦҦҧҧҧҧҧӧӧӧӧӧӧӧӧӧӧӧӧӧӧӧӣ|P\eN[bN[cN[bN[bO\cO]dP]dP^dQ_eQ`fRafSbgSchTdhUfjWhkYkm[op]rr`wuc|yg}ms|ůߦđqd}z\qpVhiQaeO]bMZ`KX^JV]HS[GRZGQYJRXTTW\VW^WV^WWZVXPUZIS\IS\JT]KU^KV_ӧӧӨԨԨԨԨԨԨԨԨԨԧӧӧӧӧҧҦҦҦҦҦҦҦѦҦҦҦҧҧҧҧӧӧӧӧӧӧӧӧӧӧӧӧӧӧӧӧӧӧӝvQ]eO[cO[cO\cO\dP]dP]dP^eQ_eQ`fRagSbgSchUeiVgjWikYlm[op^ssawvd|yh~mr{һإĔui^tsWjkRcfO^cM[`KX^LV\ZWY]VWnYSvZP}ZM[KZK[K[L\K\N{\Qs[TgZX[Y\n{ҧӧӨԨԨԨԨԨԨԨԨԨԧӧӧӧӧҧҦҦҦҦҦҦҦѦҦҦҦҧҧҧҧӧӧӧӧӧӧӧӧӨӨӨӧӧӧӧӧӧӨӨӨӨӝzTajO\dO\dP\dP]dP]dP^eQ^eQ_fRagSbgTchUeiVfjWhkYkm[no]qr_utbywe~{imsy°ɵ̹̹ǵyof~|]rrWjlRbfO]bMZ`ZY[dZWw\R^L_J^G^E^D^C_D`D`E`F`F`GaI`JmaǧӨԨԨԨԨԨԨԨԨԨӧӧӧӧӧҧҦҦҦҦҦѦѦѧҧҧҧҧҧӧӧӧӧӧӧӨӨӨӨӨӨӨӨӨӨӨӨӨӨԨԨԨԨԨԣΊhwP]eP]dP]dP]eP^eQ^eQ_fR`fSagSbhTdiUejVgkWilYknZno\pq^ttawwc{yf|ikortuvvtrmid{z^stYlnUeiQ`eN\bUZ^n]W`PaLbIcHdHfHgHhIiJjJkKkKkLkLkLpWp}¨ӨԨԨԨԨԨԧӧӧӧӧҧҦҦҦҦҦҦѦѦѦѧҧҧӧӨӨӨӨӨӨӨӨӨӨӨӨӨӨӨӨӨӨӨԨԨԨԨԨԨԨԨԨԨԨԞdžhxQ]eP]eQ^eQ^eQ_fR_fR`gSagSbhTciUejVgkWhlXimYknZmo[oq]qr^st`uuawvbyxczyczyczybyxaww_uu]qsZmoWhlTdiR`fO]cQZ`na[gUiRiOjMlMmNoNpOqPrPsQtQtRuRuRvVjvxyz}ǨԨԨԨԧӧӧӧӧҧҦҦҦҦҦѦѦѦѦѦѨӨӨӨӨԨԩԩԩԨԨԨԨԨԨԨԨԨԨӨӨӨӨӨԨԨԨԨԨԨԨԨԩթթթթԡˎw]kuQ^fQ^fR_fR_gR`gSagSahTciTdiUdjUejUejVgkWhlXimXimXimXjmXjmXjnXjmXimWgkUejTciRagQ^eP\dNZb_^`o_ybw\tWsTsRtSvSwTxTyU{V{W|W|X|Xduwxxyz{|ЧӧӧӧӧҧҦҦҦҦҦѦѦѦѦѦѦѥѩԩԩթժժժթթթթԩԩթԩԩԨԨԨԨԨӨӨӨӨԨԨԨԨԨԨԨԩթթթթթթթըԟȏ}iyVclR_gR_gR`gSahSahSahSahSahSbhSbhTbhTbhSahSahSahR`gR`fQ_fP]eP\dO[cNZcY\`md`ksja|[{X{W|W}X~X~YZ[[\_pxyyyzz{{|}ʧӧӧҦҦҦҦҦѦѦѦѦѦѥѥѥѥуǤͧҪ֪ժժժժժթթթԨԨԨԨԨӨӨӨӨӨӨԨԨԨԨԨԩթթթթթթ֩թթթթէӝƑvgwZgqR_hR_gR_gR_gR_gR_gQ^fQ^fQ]eP\dO[dO[dO[cNZcNZc\^awi_snc^]\\]]]^^_gwzz{{{{|||}~ħҦҦҦҦѦѦѦѦѦѥѥѥѥѥѥZqmZrm[rn[rnZqmYpm[qo`vvkryġʥЩԨԨԨӨӧӧӧӧӧӧӧӨӨԨԨԩթթթթ֪֪֪֪֪֪֪֪֪֪֪֪֩դϝƕxun~hwhwhvesYep]iszj_pɥرmeba``aaabbn{{{|}}}}}~~~¦ҦѦѦѦѦѦѥѥѥѥѥѥѥѥ^yq^xq^xq^xq^wq]wq]vq]up\to[soZrnYpmYolXmkWljVjjViiUhi\nrew~muǣΧҧӧӧӧӨԨԨԩթթ֪֪ת׫׫׫׫תתת֪֪ת֪֪֩֩֩֩թթթթթթըӊf޴ylfdddddddfv}}}}~~~æѦѥѥѥѥѥѥѥѥѥХХХb~ububub~ub~ububua~ua}ta|t`{s_yr^wq]vp\to[rnZpmXnlWlkViiTfgRcfQadO_cN]aN\aN\aN^aO_bXhmbt{i{s|ȥЩժ֪׫׫جج٬٬٫ثتתת֪֩֩֩֩֩թթթթթՑx_qϧqjhggggggoz~~~ȥѥѥѥѥѥѥХХХХХХdweyfyfzgzg{h{h{h{h|g{gzfzeydxcwa}u`zs^xr\tpZqmWlkUhhSdfQcdRfeVmhYsk_~qewium{jswdzva}v_z_}ekqr{άٮۭۭڬ٫ثتתת֪֪֩֩֩֩֠v`gssmkjiiiiiq~ΥѥѥѥХХХХХХХХdwfzh{i|j~klmnopqrrrqpnli}fzcw_yr\soZrm`soqecccnxyy{||||{{{{{ƭٮܭڬ٫ثثתתת֪֨Ҕeiotromllllkqw|ХХХХХХХХХХХ^yqbuexgzh|j~lmoqsvx{}{spnkkkkkzϰݯܮۭڬثثתץfhkmoonnnoons~ƥХХХХХХХХХХThfXok]wpa}tdweygzh|j~lnpsvy}ĥӰ㼯ɽƞvuuuu~ڰݮۭ٬٬تѦikmnooooprrvХХХХХХХХХХKY^N^`QddVkhYql\vo_zra}tbvcwdxfygzh|i}j~lnoqrstus~ȥɦɦȥȥǥ˩ʧȤšÞàâĥŧħæ¦ۭ߮ڬ٬ةlnoopppqqx}ĥХХХХХХХХХtoeudt~XhmYknThgWmjYpl[sn\uo\vp]wp^wq^wq^xq^yr_yr_yr_yr_yr^xr]vq\toZqmarlĤǢƠáɩɩѫӫҪӪڮ֩ԥӥҥѥѥФΣϥѪҭЬϬͫʫǫޭڬ٬٪ѫxqqqrrrx}ХХХХХХХХХФϤϤϥХХѢ̣͜Ĝĕyulh}]qsZnoTggSefQbd]fe|ynm~k|qwvvuuy~|~Ŭɯаױرհͯڬ٬ثا|tttx|ʥХХХХХХХХФϤϤϤϤФХХХЦѦѧҧҨӨӨԩԩԩթԩԧҤϡʜĎfxl~m~k}j{pvvuut|yvzv{w||ɉyw|w}~ثثת֫}~~~~~~~~~~~~ХХХХХХХХФϤϤϤϤϤϤФХХХХѦѦѦѦҧҧӨӨӨӨӨӨӨӜri{j{izl~suuttt}|y{z||~z}{|{|֪֩ի̲{w~~~~~~~~~~~~~~~ХХХХХХХХФϤϤϤϤϤϤϤϤϤХХХХХХѦѦѦѦҦҦҧҧҧҚml}k}qyxwwvv{~~~~~~}|}ԨԨԦ}z~~~~~~~}}~~~~~~~ΥХХХХХХХФϤϤϤϤϤϤϤϤϤϤϤϤФХХХХХѥѥѦѦѦѦҙzruy{zyyxxxx}||{}{{|}ӧӧӚ~~~~~}}}}}~~~~~~~ǥХХХХХХХФϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤХХХХХХХі~}|{zxwvvuuuuuuvwww{vzw{wxxxy{~ҧҧҘz~~~~~~}}}}}}}~~~~~~ХХХХХХХФϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤХГ~|zxwvtttuutssstuwy}wzx}zzzz{}ҦҦҘ~~~}ХХХХХХХФϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤώ}|yvuttttuutsssstwx|w|y~zz{|}ѥѥѐХХХХХХХФϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϋ}{wutttuvvuuuuuuvxw{x}yzzz|}ХХЄХХХХХХХФϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤω}{yvutttuwwwwwwwwxx}w|x~yzzz|}ХХЇХХХХХХХФϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤχ}{yxvvutttvwwwwwwwxx}w}w~xzzz|}ХХЇХХХХХХХФϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤφ}zyxwvutttuwwwwwwwxx~w}v}x~z{{|}ХХЋХХХХХХХФϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϣ΄}zyxwvuttstvwwwwwwxyw~v}x{{{|}ХХА~~~~~~~~ĥХХХХХХХФϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϡ˃|zyxwvuutssuwwwwwwxwts~uy{{|}ХХЕ~~~}}}|||||}}}~~ʥѥѥѥѥѥѥѥѤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϠʃ|zywwvutttsuwwwwwwvsppquy{|}ХХН~}|||{{{zzz{{{||}}~ϥѥѥѥѥѥѥѥѤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϞƁ|zywwuttttsuwwwwwwusqp~rux{|}ХХУΘ~}|{{zzyyyyyyyyzz{{|}~~ѥѥѥѥѥѥѥѥѤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϜŁ|zywwuttttsuwwwwwwvtr~p~svy{|}ХХХР~}|{zyyxxwwwwwwxxyyz{|}}~ѦѦѦѦѦѦѦѦѤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϚ}{yxwvtttttvwwwwwwusq~p~rvy{|}ХХХФ~}|{zyxwwwwvvvvwwwxxyz|~~~ijΦѦѦѦѦѦѦѦѦѤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϘ}{zyxvtttuuvwwwwwwusq~o~rvy{|}ХХХХХ}|{yyxxwwwwwwwwwwxxyy|٫~»ҦҦҦҦҦҦҦҦҦңΣΤΤΤΤΤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϤϖ}{zxwvtttuuvwwwwwwus~q}p~rvy{|}ХХХХЬ~}{zyyxxxxxwwwwxxxxyyz̥}~±̦ҦҦҦҧҧҧҧҧҧңΣΣΣΣΣΣΣΣΣΣΣΣΤΤΤΤϤϤϤϤϤϤϤϕ}{zxwvutttuvwwwwwwus~r}r~twz{|}ХХѥѥѧШ~|{zzzyyyxxxxxxxyyyzyx͡zz{}¹ӧӧӧӧӧӧӧӧӧӧӢ̢̢ͣͣͣͣͣͣ͢͢͢͢͢͢͢ΣΣΣΣΣΣΣΣΑ~|zxwvuuttvwwwwwwwus~r}r}txz{|}ѥѦѦѦѦѰ—~|{{{zzzyyyyyyyyxwwwvuy|{yxz}ðЩթթթթթթթթ֩֩֝ƝƝƝƝƝƝǝǞǞǞǞǞȞȞȟȟȟȟɟɟɟɠɠʎ{wtsrrqqrsssssssrpzoyozp{uxyz{}ͣͣͣ͢ΣΥв~}||{{{zzzzzzxwwvtuuuvvwwy|ī׫ثثثثثج٬٬٬٬ļļļļļļļļĽĽĽĽĽĽĽŽŽŽŽŽŽŽŽž~}}}~uuux}ķ~}}||||{{{{ywvuuuuuvvvwwy|±»ֽܽõ~z{ºżʾƪ~}}}}|||zxwuuuuuuvvvwxy{ʶóҴѹĶ·}yzĻʽũͽ~}}}}}}{wvvvvvvvvvvwwxz~ѵ̮йȹź¹xy~ĹʼĨ˻}}}}}{xvvvvvvvvvvwwwxy}ͺͮӾɻŸ{xĸɻ§̼ƨ~}}}|xwvvvvvvvvwwwwwwx{ɦӱҽȺĸ~ķɹξձ~|zwvvvvvvvvvwwwwwwwwwy~Ẫνѻȸ÷öɸ~xstuuvvvvvvvvvvvvuuuvyɦƷ˺ϺǷõõɷݿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿ̼޶ytrrssttuuuuuuttssstw} 漫οϿϿϿϿϿϿϿϿϿϿϿϿοοοοοɷϹǶôôȶݾξξξξξξξξξξξξξξξξξʺᶥwsrqqqqttrqqrrrsv{ɢ绫ͽοοοοϿϿϿϿϿϿϿϿϿϿϿϿοξξξξξξξξξξξξξ;;;;;;ͽͽͽƳηƵ³óȵݽ̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̽̽̽ۯŜztsrxyqrstv}ˡೢŵͽͽͽͽͽ;;;;;;ξξξξξξξξξξξξξοͽͽͽͽͽͽͽͽͽͽ̼̼̼̼̼̼̼̼̼̽̽̽̽İ˵IJ~~~~~}}~~~~±Dzڹ˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻ȸ縧߱ܰحתܮಡ蹩²ɺ̼̼̼̼̼̼̼̼̼̼̼̼̼̼̽̽̽̽ͽͽͽͽͽͽͽͽͽͽ̼̼̼̼̼̼̼˼˼˻˻˻˻˻˻˻˻˻˻˻˻˻˻翪ɲð~İظʹʹʹʹʹʹʹʹʹʹʹʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺ˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˼˼̼̼̼̼̼̼̼˻˻˻˻˻ʺʺʺʺʺʺʺʺʺʺʺʺʺʺʹʹɹɹ佫Ʊֶȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸɸɸɸɸɸɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹʹʹʺʺʺʺʺʺʺʺʺʺʺʺʺʺ˻˻˻˻˻ʺʺʹɹɹɹɹɹɹɹɹɹɹɹɸɸɸȸȸȸȸȸȸ޹¯~~~~~~~~жǶǶǶǶǶǶǶǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷȷȷȷȷȷȸȸȸȸȸȸȸȸȸȸȸȸɸɸɸɹɹɹɹɹɹɹɹɹɹɹʹʺʺɸȸȸȸȸȸȸȸȸȸȷȷȷȷǷǷǷǷǷǷǷǷǷԵ̳ƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƶƶƶƶƶƶƶƶƶƶƶǶǶǶǶǶǶǷǷǷǷǷǷǷǷǷȷȷȷȷȸȸȸȸȸȸȸȸȸɸǷǷǷǷǷǷǷǶǶǶǶǶƶƶƶƶƶƶƵƵƵƵƵʭẪĴĴĴĴĴĴĴĴĴĴĴĴĴĴĴĴĴĴĴŴŴŴŴŴŴŴŴŴŴŴŴŵŵŵŵŵŵŵƵƵƵƵƵƵƵƶƶƶƶƶƶǶǶǶǶǶǷǷǷǷǷǷǷƶƶƶƶƵƵƵƵƵŵŵŵŵŵŴŴŴŴŴŴŴŴĴ׳ܹòòòòòòòòòòòòòòòòòòòòòòòóóóóijijijijijijijijijijijĴĴĴĴŴŴŴŴŴŴŴŴŵŵŵŵŵƵƵƵƵƵƶƶƶƶŵŴŴŴŴŴŴŴĴĴĴijijijijijijijijóóóòò۶ǯɱ׶亨±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±²²òòòòòòòòòòóóóijijijijijijijijĴĴĴŴŴŴŴŴŴŴŵijijijijijijóóòòòòòòòò²²±±±±±±±±±±躩躨躨黩黩黩軩軩軨±±±±±±±±±±²²òòòòòòòòóóijijijijijijòòòò²²±±±±±±±±±±±±±±±±²²òòòò±±±±±±// Persistence of Vision Ray Tracer Scene Description File // File: ?.pov // Vers: 3.6 // Desc: Photon Scene Template // Date: mm/dd/yy // Auth: ? // #version 3.6; #declare Photons=on; global_settings { assumed_gamma 1.0 max_trace_level 5 #if (Photons) // global photon block photons { spacing 0.02 // specify the density of photons //count 100000 // alternatively use a total number of photons //gather min, max // amount of photons gathered during render [20, 100] //media max_steps [,factor] // media photons //jitter 1.0 // jitter phor photon rays //max_trace_level 5 // optional separate max_trace_level //adc_bailout 1/255 // see global adc_bailout //save_file "filename" // save photons to file //load_file "filename" // load photons from file //autostop 0 // photon autostop option //radius 10 // manually specified search radius // (---Adaptive Search Radius---) //steps 1 //expand_thresholds 0.2, 40 } #end } // ---------------------------------------- camera { right x*image_width/image_height location <0,1.6,-5> look_at <0,0.75,0> } light_source { <500,500,150> // light's position color rgb 1.3 // light's color photons { // photon block for a light source refraction on reflection on } } sky_sphere { pigment { gradient y color_map { [0.0 rgb <0.6,0.7,1.0>] [0.7 rgb <0.0,0.1,0.8>] } } } // ---------------------------------------- plane { y, 0 texture { pigment { color rgb <1.0, 0.8, 0.6> } } } #declare M_Glass= // Glass material material { texture { pigment {rgbt 1} finish { ambient 0.0 diffuse 0.05 specular 0.6 roughness 0.005 reflection { 0.1, 1.0 fresnel on } conserve_energy } } interior { ior 1.5 fade_power 1001 fade_distance 0.9 fade_color <0.5,0.8,0.6> } } sphere { <0,1,0>, 1 translate <1.0,0,-1.3> material { M_Glass } photons { // photon block for an object target 1.0 refraction on reflection on } } cylinder { <0,0.01,0>, <0,2.5,0>, 1 translate <-1.2,0,0.8> material { M_Glass } photons { // photon block for an object target 1.0 refraction on reflection on } } BM~6(xZ~ǞƧ88mmŇVV66Ǿ6688ƾ!!KKŶǾVVvv{{88ŝŪŶDDǾVVǣƧ88mmŁŶDDǾVV==Ǿ6688ſ!!KKŶDDǾVVuu{{88ŢŪŶDD88888888GGDZDŽ8888888888888888888888888888888888{{ƻ888888888888888888888888888888888888ťſſſſſſſſſſſſſſſŖ7777777777777777777777777777777777ccĻĿĿĿĿEEǸEE66¼xwwwwwwwź66UUĻEEǸƧƧijmmm[YYYYYYYYYYYYYYYYYYYY77YYYYYYYYYYYYYYYYYY___oooppUUĻEEǸ{{{{ĭdddYYYYYYYYYYYYYVVYYYYYYYYYYYYYYYYYYKKYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYfffUUĻEEǷƽ<<66ĤnnnYYYWVVUSSUSSURRURRURRSKKUUUUUUWYYYYYYYYYYYXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYUUYYjUUĻPPǾƣƧƺyyynll||zbPSUUUWYYYYYY77YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY55YYYYYYkUUĻ]]]]]]]]]]]]]]]]]]]]{{ǸƵƵƵƵƴƴƴƴƴƴƴƴƴƴƴnn\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ƌƴƴƴwwqq~~xxoo]]AAuTPSUUY))Y))Y))YEEYQQYQQYQQYQQYQQYQQYQQYQQYQQYQQYQQYQQYQQYQQYQQYKKY))Y))Y))Y))Y))Y))Y))Y))Y))Y))_))))))PP[[WWĨIJIJIJIJIJIJIJIJIJIJƷEEDDƿ//hhaa77 ..ll66hPPR))VIIYVVYYYYYYYYYYYYYYYYYVVYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY___DDƷEE{{ſZZgg44,,++))&&## 22ZZ pPP''S66U((WYYYYYYYYYYYYYYKKYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYRRYYsƷEEƦýyy3355^^aa88776655442200..++((99[[m\\PJJPAAS66W((YYYYYYYYYYYY77YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYUUY""YYYYgǺƷEEDDƿſVV;;>>??VVAA????>>==<<::9977553300??wwZRRPJJSAAU''WYYYYYYYYYYVVYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYUUY&&YYYYYYYmUULLǫƱGG88888888888888888888888888ƃKKBBDDEEuu^^EEDDCCBBAA@@>>==;;9977DD,,wmmPJJPAAS''XYYYYYYYYFFYVVYVVYVVYVVYVVYVVYVVYVVYVVYVVYVVYVVYVVYUUY--YYYYYYYYYY--77rrùƛ&&VVƽttaaJJHHIINNIIHHGGFFEEDDCCAA@@>><>;;88<>MM,, TT44a,,PAAR<>SOOYTTY&&YYYYYYYYYY11YUUYYYYYYYYYYYYYYYfff..Ŷkk!!Œǫ͍ϡнтjjttҼҾҾҴqq҈ѱѽѽѦwwhhzzϵϻϻκκ͸ttxx˃ˊʍɌȖȕǗƝťŧUUNNLLJJHHWWoo7711YYGG11PBBU((YYYYYYYY_dPPnnnwww©PP[[8888888888888866ŴſſſſſſſſŮSS77777777777799˔ϧЉyyҰҦӚӵӿӾӃllllmmҘғkkjjjjii{{гЫϘτqqΏ͹̸̹˷ʳ\\ZZYYWWUUƕūĝËppff HHyyffPPb))S''ee7777777777777777WWŜKK66ŗŻffYYѽ}}zzԎnnԣԅnnnnԊԻӼӜppooҌҧҴ||iihhffiiγͺ͹̸˴]]\\ZZYYhhƲƳŲıåddyyEEIInnP''©EE%%%%ttttooŘŦŦŦŦŦŦŦŹŗttttttttttttttppĥĥĥĥʤпҽӇԎԵԼwwpp}}վշՏչռԓԧӿӹҁчѕРϤ||yyjjpp̴˳ʪɩȃLJƓƟŤ__NNLLJJ}}QQ??;;QQPP((0022II&&x[[aarrrrrrttNNrrrrqqqqqqqqqq&&ŃźğDDqqĽҢrrԽխppՄְְֻ֚־֥rrtt֕yyrrrr֗ճՓ||yyӵҿҾѹxx{{zz}}̬ͭ˫ʭeeYYWWllƬŪėnn’AAww>>``[[88]]--gg|CC;;zzIIſſſſſſ[[77777777777799Ľľľľľľľnnggщӻ~~թ֥֑ך׷׹vvss؛صء؏ؼظuuد׏֏֟հԓwwnnғѽмϷccbb``˛ʶɰțyyƏŞĞXXQQwweeDDXX__HHKK~~mmee88%%666666666666==..666666666688~~Źųijijijijİ??[[[[[[[[[[[[ĸIJIJIJIJIJIJİʌӤԌֿ֍׏׿؞ttأٿ٣ٝگyyڌڙڛڑzzٚعע֐դԵӸ҂Ѿ{{ffddͬppvvʌɡȏooƘŰğOO”FF<>Ύԣ֟טתصzz٩vvڋڔ۵۟ܠܿܚݕݑܡۼۣڋٱثגՒԡӡҟѕГϔ̣͢ˉʁɩȓppƕţQQOOMMJJHH[[ddjjPPhhvvqq||II==[[[[[[[[OOIJIJIJIJIJĸll[[[[[[[[[[MMðòòIJҜ՟םءةٍڸڟۘxxܦܛݷ}}ߢೳ௯ዋࢢ߿ߠޮݲܜڤٞ؍׃ժԧӀэбϪΛ̖˞ʆɍțqqƬŗjj©~~TThh{{||MMkkvv{{ww{{ZZYYYY\\MMYYYYYYYYZZĖėėėėĴĊĆÆÆÆÌÖÖÖÖÖí߯ŌԨ֛أ٬ٜڧۣۥܨݥޥ߭ᆆ⦦㻻䣣佽唔嘘佽䙙㬬⬬ᩩ߱޴ݡ۞ٮسֲmmӇҎѡυΉ͍˗ʔɉȦ~~ŦssçwwssFFyy}}vvvvuupp}}ffss||kkwwZZUUssssĊķĥåååÚQQssssssss{{õääääãzz՛آwwڛ۫ܝݝ޵ߪ୭⧧㵵䬬賳魭길ꧧ껻鸸鼼綶氰山㣣᪪߫ޝ܀ںxxּԦәћТΕ͖ːʇɎggddć܇HHmmwwyyyyee~~kkvv}}rrppppppppQQ~~ppppppppMM÷åååãmmsssssswwùääääÞRRrrrrrrrrɇ֯ؖ٦xxyyݷޝ߆ᵵ⵵沲綶麺뺺ﻻ쩩길窪寯zzwwݢ؞֤ԕѥЖδ̡ʒɐǕƂđÇ~~yyzz{{88nnhhVVpp__xxppppppppDDqqooooooLLãOOssssss~~åää¤nnrrrrrrzz´¤¤ɰُ֬ڝܷݳ޿࿿⎎䀀湹鹹찰ᄐ컸䴰೯ᰬޮة֩՞ԥԥӠǗǔœ~~qqnnssmmOOEE]]TT||gg\\ppppPPppooooooqqÇÖÖה………ZZŠ•••®………~~Šͤvvٚ۬ݸߪᯯ㹹桡邂ꅅﹹ췷ﭫʿȾƼŻĺù¸·칯峪ܬשΡŐwvssqqmm^^hhllSSffss\\ž½±rrzzzz77„¢Ÿ¼‹yyvvIIαצڞܛ޸}}᧧୭ٝರ뼷ɿǼźù·﹮뷫߬Οyumm^^ooRR{{xxnnZZqqpp55vvqqWW55wwpprr‚PPrrqq~~ooqq̗ע٣ڤ٣СۯɿƼĹ·ﶪ쵩뵩뵩䰤ʚ|w_^``kkpprroooonnCCppnnhhyyvvZZ~~YYˑ̢֥֞۴ǽĹﲦﲦ첦챥뱥걥鱥豥籥ۨzsPPeevvpp{{WWuuWWoossZZ[[}}YY||{{}}[[ɋzzǘ쿷ɿŻ·ﮢﮢ쮢뮢뮢ꮢ鮢订订箢殢尣ƘdcZZ{{||WWxx^^VV~~qq}}YYaaqqqqdd}}ssppẠ̈̄躴ǽù﫞爵쪝몞몞ꪞ骞髞諞竟櫟嬟孠寣^^ttVVmmVVrrmmVVffZZ{{??||Àʞƻ栗蓮즙즙릙릙꧚駚駚觚稛樛婜婜䪞䭡䰤mkyyKKww,,wwVVWWvv~~ggeeۮʿĺ좔좔뢔뢕ꢕ꣕飕裖褖礗楗楘妙䧚㨛䫞尣mm||IIGG``||55ll==kkⷲɿɿȾ¸힐힐읏읏랐랐Ꞑ鞐韑蟑蠒砒硓桔墕䣖䤗㦙㩜䯢uubbggqqnnnniimm~~bbyywwnnxxuuttjjttWWaaoo޲ȾǽǽȾǼ홋왋왋뙋뙋ꙋꚋ隋隌蛌蛍眎杏析垑埒䡓㢔⤖㨚䮡YYnnss__rrqqii||eettIIgg((eeўɾǼŻŻƼȾź핆앆앆딅ꕅꕆ镆镆薇薇痈瘉晊晋嚌圍䝏㞐㠒⢔⦙䮢MMooiiCCYYEEppqqmmppee}}eevvmmxx~~ȽŻĹøĹƼɿɿ·푂쑁됀됀ꐀ鐀鐁鑁葂蒂璃瓄攅敆喇嗉䙊㚌㜎➐ᡓ⦘䯢}|vv{{qqrrddgg{{zzVV\\llxx}}vvwwnnmm{{ZZwwǽĹ··ùǼƼ~||{{{{||}~搀呁咂哄䕅䖇㘉⚌❎᠒⦙ک``yyttjjyywwvvyyyyjjaawwXX{{jjppuussiiwwvvzz||wwjjEE㭦Ǽøùǽø|zxwvuuvvvwxyz|}䐀㒂㔄㖇☊ᛍ៑⨚ʣii\\mm}}uu~~{{kkhhggmmZZ~~ssOOffpphhzzqq{{TTooEEcc@@RRnnTT]]ǽ¸ĹȾȽ{wtrqppppqqrsuvxy{}㒂┅◈ᛌ᠒㪝[[pprrII++))BBrr__vvppccwwWWRRXXhhffqqYYuupp}}ppll~~iivv}}nnrruuPPȿɾ¸Ĺɿƻ~yurom~k}j}j~k~klmoprtvxz}␀ⓃᖇᛌᢔנWWrruuccxxiiqq||hhzzaavviivvddqqff``tt}}VV||bbXXccnnooddoojjccww__zzmm]]vv{{\\ddqqssYYvvppzz^^yyhhbbzzǒøĹɿù}yurol}j{hzgzfzf{g|i}jlnprux{~⒂ᖇᜍᥗYYssnn]]vv[[gg``yycciiqqwwYY``wwii[[uu__qqllggqqgghhqq^^bb``bbbbZZ^^UUnn^^cc__RRaa``bbbbcc]]bbff]]````aaa`ƼźøȾǼ}xurol}j{hzfxdwcwcxdzf|h~jmpsvz~ᒂᗈត٤hg______XXZZ]][[]]]]__^^jj__\\]]``gg\\``cc[[[[^^]]__|w}~ytxs~|}wzu|w}xsnsnngnhsmxrkeqlwqsmkdtnsmmgnhsm{Ϊɾƻɾø|xtqol}j|hzfxdwbvavawbye{g}jmquy}ᓃᙊᢔpj}w|}}x|w}xyt~y~xs}x|||w|wsmsnf_upsmnhkexrwqkenhsmøøȾȾù{wtqol}j|hzfydwcv`t_t_vaye|hlpty~ᕅᝎ账ɾŻɾɿƼ¸~zwtqol}j|hzgyewcvat_s]t_wczf~kotz⑀☉⤖øùźŻŻĺ·|yvsqnl~j|i{gyewcvat_s]s^vazf~kpv|┄➏~{xuspnl~j|i{gyexcvat_r\s]vazflrx⑀㚋鱣ȼ|ywtrpnl~j|i{gyexcvat_r\s]wb|hnu}㗇樚ĸ~{xvtrpnl~j|i{gyexcvat^s]u_ye~krz㔅墔ʻ|ywusqonl}j|i{gyewcv`t^t^wb}ipy䓃堑Ʒ}zxvtsqonl}j|hzfydwbu`t_va|hox䒂埐ôͿ}{ywutrpoml}j|hzfydwbu`wa{gox咂硒ŶͿ}{yxvusrpom~k}i{hzfxcwbxc|hpy攄饗ǸϿϿϿϿϿö~}{zxwutsqpnl~k|i{gyexdze~ks|瘈쮠˼ϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿοοοοοοοοοοοοοοοοοοοοοξξξξ̽Ȼ~|{zywvusrqonl}j|hzfzf}iox璁韐;ξξξξοοοοοοοοοοοοοοοοοοοοοϿϿϿϿϿϿϿϿϿϿϿϿϿϿξξξξξξξξξξξξξξξξξξξξ;;;;;;;;;;;;;;;;ͽͽͽͽͽ˽~}|{zyxwutsqpnm~k}i|h}jnv~陊Ǹͽͽͽͽͽ;;;;;;;;;;;;;;;;ξξξξξξξξξξξξξξξξξξξξͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽ̼̼̼̼̼̽̽̽̽̽̽̽̽̽̽̽˼Ⱥ~~}}|{zyxwvusrqonllmqwꙉ̼̼̼̼̼̼̽̽̽̽̽̽̽̽̽̽̽ͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽͽ̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̽˼˼˼˼˼˼˻˻˻˻˻˻ɺǸ~|{zyxwvutrqppqsv|듃윍ﭟ˻˻˻˻˻˻˻˼˼˼˼˼˼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̼̽˼˼˼˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻ʺʺʺʺʺʺʺʺʻȹ}|zyyxxxz|푀햆神ŵʺʺʺʺʺʺʺʺʺ˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˻˼˼˼˻˻˻˻˻ʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʹʹʹʹʹʹɹɹɹɹǸƷĵɹɹɹɹɹʹʹʹʹʹʹʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺʺ˻˻˻˻˻ʺʺʺʺʺʺʺʹʹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɸɸɸɸɸɸɸɸɸɸɸɸɸɸǸƷŵôǷŶɸɸɸɸɸɸɸɸɸɸɸɸɸɸɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹʹʹʺʺʺʺʺʺʺɹɹɹɹɹɹɹɹɸɸɸɸɸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȷȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸɸɸɸɸɸɹɹɹɹɹɹɹɹȸȸȸȸȸȸȸȸȸȷȷȷȷȷȷȷȷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǶǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷǷȷȷȷȷȷȷȷȷȸȸȸȸȸȸȸȸȸǷǷǷǷǷǷǷǷǷǷǷǶǶǶǶǶǶǶǶǶƶƶƶƶƶƶƶƶƶƶƶƶƶƶƶƶƶƶƶƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƵƶƶƶƶƶƶƶƶƶƶƶƶƶƶƶƶƶƶƶǶǶǶǶǶǶǶǶǶǷǷǷǷǷǷǷǷǷǷǷƶƶƶƶƶƶƶƶƶƶƶƵƵƵƵƵƵƵƵƵƵƵƵƵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŵŵŵŵŵŵŵŵŵŵŵŵŵŵŵƵƵƵƵƵƵƵƵƵƵƵƵƵƶƶƶƶƶƶƶƶƶƶƶƵƵƵŵŵŵŵŵŵŵŵŵŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴĴĴĴĴĴĴĴĴĴĴĴĴijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijĴĴĴĴĴĴĴĴĴĴĴĴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŴŵŵŵŵŵŵŵŵŵƵƵƵŴŴŴŴŴŴĴĴĴĴĴĴĴijijijijijijijijijijijijijijijijijóóóóóóóóòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòòóóóóóóóóijijijijijijijijijijijijijijijijijĴĴĴĴĴĴĴŴŴŴŴŴŴijijijijijijijijijóóóóóòòòòòòòòòòòòòòòòòòòò²²²²±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±²²²²òòòòòòòòòòòòòòòòòòòòóóóóóijijijijijijijijijòòòòòòòòòòòò²²±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±²²òòòòòòòòòòòò±±±±±±±±±±±±±±±±±±±±±±±±±±±±// Persistence of Vision Ray Tracer Scene Description File // File: ?.pov // Vers: 3.6 // Desc: Checkered Floor Example // Date: mm/dd/yy // Auth: ? // #version 3.6; #include "colors.inc" global_settings { assumed_gamma 1.0 max_trace_level 5 } // ---------------------------------------- camera { location <0.0, 0.5, -4.0> direction 1.5*z right x*image_width/image_height look_at <0.0, 0.0, 0.0> } sky_sphere { pigment { gradient y color_map { [0.0 rgb <0.6,0.7,1.0>] [0.7 rgb <0.0,0.1,0.8>] } } } light_source { <0, 0, 0> // light's position (translated below) color rgb <1, 1, 1> // light's color translate <-30, 30, -30> } // ---------------------------------------- plane { // checkered floor y, -1 texture { pigment { checker color rgb 1 color blue 1 scale 0.5 } finish{ diffuse 0.8 ambient 0.1 } } } sphere { // reflective sphere 0.0, 1 texture { pigment { color rgb <0.8,0.8,1.0> } finish{ diffuse 0.3 ambient 0.0 specular 0.6 reflection { 0.8 metallic } conserve_energy } } } BM~6(xZ~pDqEYM.YM.YM.YM.fV4zJpDvGcU4uGpDpDpDʢbʿtʿtʿtʿtʿt`YW5YW5YW5YW5roCmʿtmli@ɾsʿtʿtʿsʿsʿsʭipDpDpDj@YM.YM.YM.YM.~b;yIpDrEl[7uGpDpDpDpDpDpDpDwH}}]]22S22S22S22SJJzuu}}mm22S22S22S22S::_oo}}}}}}}}}}mm22S22S22S22S::_oo}}ee22S22S22S22SBBlrr}}}}}}}}}}ee22S22S22S22SBBlrr}}\\22S22S22S22SIIyuu}}}}}pCqEuGuGuGuGuGuGpDpDuGpDpDpDpDpDʢbʿsʿsʿsʿsɾsɾsɾsɾsɾsɾsʿsʿsʾsɾsɾsʾsʾsʾsʾsʾsʾsʆQpDpDsFuGuGuGuGtFpDpDuGuGqEpDpDpDpDpDpDpDwH}}||{{{{{{{{||}}}}}}{{{{{{{{{{||}}}}}}}}}}}}{{{{{{{{{{||}}||{{{{{{{{||}}}}}}}}}}}}||{{{{{{{{||}}}}||{{{{{{{{||}}}}}}~oCoCoCoCoCoCoCoCoCoCoCoCoCoCoCoCpDʡbʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʬhpDpDpDpDpDpDpDpDpDpDpDpDpDpDpDpDpDpDpDpDvH}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~oCoCoCoCoCoCoCoCoCoCoCoCoCoCoCoCoCpDʡbʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʾsʆQoCoCoCoCoCoCoCoCoCoCoCoCoCoCoCoCoCoCoCvH}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~vGxIoCoCoCoCsFyIvGyIpDoCoCoCoCoCwHvGvHʥdʺqiZZZZ`ɻqʺqönZZZZZZfʺqʺqʨfvGwHoCoCoCoCvHwHvGyIsFoCoCoCoCoCuGvGvG|K}}ll[[[[[[[[ff||}}ttcc}}}}}}}}ffdd}}}}}}}}tt[[[[[[[[^^{{}}oogg}}}}}}}}bbhh}}}}}}}}oo[[[[[[[[bb||}}llll}}}}}}{{^^ll}}ρʑX`zJɽsĹp&%|vGʾsʾsʾsʘ\e=*&i@qDrE^9oCoCoCʰjR43ZʾsȽrGE*d`:ɽsɽsɺp}}VV1\\}}jj::a}}}}}}rr$$=%cĹp0/cffffkʾsʾsʾsʽsSkP1{J{J{JwH;6!sErE<5 yJ{J{J{J{JyIoCoCoCʊTR{vHeeeZ@?&nȽrGE*^eeeeiɽsɽsɹp}}VVIIxhhhhhh\\''@vvjj::a}}}}||FFtFFs||}}}}}}}}jj22Rhhhhhhff$$=%køoPøoɼrɼrɼrɥdtFlAlAlAlAc0-0-0-0-TF+tFrEqDSH+ǠaȻrȻrȻrȻrȻrȻrȻrȻrȻrS0000000/cO0uGlAoCRG+qDlAlAlAlAlAlAlAsF~~XX....::`oo~~kk....''@ff}}}}}}}}}}jj....''@ff}}bb....11Qkk||}}}}}}}}bb....11Pkk||XX....::_nn}}}}σɨeǪgiikZPɋTɋTȊTOȊTɋTɋTɋTɋTɋTɊTlAɢbɧeūhiiii­iȧeȧeǩfiȨfȧeȋTȋTȋTȋTȋTȋTȋTȋTćQOOOOÞ`ȧeȧeȧeiǩfȧeȧeȧeȧeȧeȧeȧeȥd~~yyvvuuuuuuxx~~~~{{uuuuuuuuvv}}}}}}}}}}}}{{uuuuuuuuvv}}}}zzuuuuuuuuww}}}}}}}}}}}}zzuuuuuuuuww}}}}yyuuuuuuuuxx}}}}}}σ~ɻrɻrɻrɻrɻrɻqɩgɂOkAkAkAkAkAkAkAkAkAkAkAvGȧeȻqȻqȻqȻqȻqȻqȻqȻqȻqȻqȻqȻqȕZkAkAkAkAkAkAkAkAkAkAkAkAȈRȻqȻqȻqȻqȻqȻqȻqȻqȻqȻqȻqȻqȷo~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}σ|ɊTɊTɊTɊTɊTȊTȊTȊSkAȗ[ȧeȧeȧeȧeȧeȧeȧeȧeȧeȧeȧeȻqȐWȊTȊTȊTȊTȊTȊTȊTȊTȊTȊTȊSȊSȧeȧeȧeȧeȧeȧeȧeȧeȧeȧeȧeȧeș]ȊTȊTȊTȊTȊTȊTȊTȊSȊSȊSȊSȌU~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}σrEvHyIyIyIyIzJtFrEuGVdddddiȷoȷoȷoȷok`}LyIyIzJrErEwHyIyIyIyIxI^jȷoȷoȷoȷojddddhȥdrEtFzJyIyIyIyIyIzJrErEwH~~rrhhhhhhhhoo~~~~xxmm~~~~}}}}oomm}}}}}}}}wwhhhhhhhhjj}}}}uuoo}}}}}}}}mmoo}}}}}}}}uuhhhhhhhhmm}}}}rrrr}}}}}}}}jjrr}}σȁNT-,WȺqön&%{T3k@k@k@k@c<;9#\ƹpic&ZV4.oCoCoCoCoCODžPǝ_ǝ_ǝ_uGkf>XXX~LOC)`ƔZG@'i@oCoCoCoCzJǓYǓYǔZ~~VV@@j\\\\\\NN..Mxxjj::a~~~~}}QQ;;azz}}}}}}}}jj++G[[[[[[XX""9mm``JJz}}}}||FFtFFt||}}}}}}}}``66Y[[[[[[TT%%=ssVVVV}}}}zz::`QQ}}}}σȮj\d\8ȮjȮij@|KuV4nBNMN~L~L~L~LȺqȸoȮiȮiȮiTynCǮiǮiǮiƭi^V4uG}LG>%M~L~L~L~L~L~LǦdǮiǮi~L~LǮiǮiǮiëhB?&bƅPG>%}L~L~L~L~L}L}L}LǁN~~VVVV~~~~~~zz&&>rrjj::a~~~~ll""8ll}}}}}}}}}}jj::a}}}}}}}}EEr````JJz}}}}dd''@rr}}}}}}}}}}``JJz}}}}}}||66ZjjVVVV}}}}[[..Lww}}}}σ}qDmBcM.qDqDqDqDzV4N¶nM²lǶnǶnǶnǶnǶnǵnj@j@qDf>zV4qDqDqDqDcM.wH^GD)ĴmǵnǵnǵnǵnǵnǵnǵnǏVqD^9^9qDqDqDsFG=%sFʼnSGD)fǵnǵnǵnǵnǵnǵnƵnƱl~~VVVV~~~~~~||((Crrjj::a~~zz::`QQ}}~~}}}}}}}}jj::a}}}}}}}}JJz````JJz}}ww..L[[}}}}}}}}}}}}``JJz}}}}}}}}::`jjVVVV}}rr''@dd}}}}}}σ}LQb^9mmmnd`:eµnMVoCi@i@i@i@i@i@j@džQPwrEmmml[Y6jhG?&sFi@i@i@i@i@i@i@j@ǜ^POmmmh[Y6mķoGC)nCi@i@i@i@i@i@i@pD~~VVUU{{{{{{rr55Xxxjj99_{{[[**Fuu||~~~~}}}}}}jj99_{{{{{{yy<mBsF|KXƑXƑXƑXƷoƷoƬhƚ^Ś^Ś^~Lya;h?zJőXĐW]N/OUGD)gŚ]Ś]Ś]Ś]Ś]œYzJőXőXnCnCőXőXŧe_B>&Y™]FA'YōVŐWŐWŐWŐWĐWĐWđX~~VVVV~~~~~~zz&&>rrjj::a~~~~~~}}EEsaa~~~~~~~~jj::a}}}}}}}}EEraa``JJzϊ77Zjj}}}}}}}}``JJz}}}}}}||66ZjjVVVV}}}}}}zz&&>rr}}σ{KPJB(~LmBzJ}L41T[|KaŕZ{KœYŶoŶoŕZņQţcţc|K[P1NNUxI@>%YWG@'ĕZŏWŤch?h?h?h?ŕZŕZďWqDj[7~L~L~LkAOD)YÕZF@'WĕZĒXĵnĵnĵnĵnĵnĕZ~~VV@@j[[[[[[NN..Mxxjj++G[[[[[[XX##9mm~~~~~~~~jj++G[[[[[[XX##9mm``66Y]]Ϙ%%=ss}}}}}}}}``66Y[[[[[[TT%%=ssVV@@i[[[[[[NN..Mxx}}σūgY-+NlAPyIVŪgŪgŰkŶnŶnś^{J{J{JwH;5 OõnUFA'ÌT{JzJg?ė[ĪgĪgĪgĪgİjj@ID)UĩgfF@&]ĩgĞ_{J{J{J{J{JÊS~~VV,,Igg~~jj+ZZ}}~~~~~~~~jj+ZZ}}``νii}}}}}}}}}}``$$<``}}VV,,Igg}}}}σĢb^QMRYZĉSĕZÛ^SÃOĢbġbĐWę]ĵnĥdąQċTę\RQQQPUĵnĵmcYÕZĄPg>g>ÀNáa×\ômômôm_ZTQQQÀNØ\lZcômädÈRg>g>g>g>ÂO~~rrhhhhhhhhoo~~~~xxhhhhhhhhkk}}~~~~~~~~~~xxhhhhhhhhkk}}}}uuhhhhuuϖ}}}}}}}}}}uuhhhhhhhhmm}}}}rrhhhhhhhhoo}}}}}}σĜ_ıkąPvHĔZďWsFĝ_ĭiġbĚ]âbådpDÅPzJÌUǝ~ʯʯȩÚ]èfÄPÁNg>zJÄPÝ_ädômômÚ]ĠhɷɸɸɸɲɯťwõsómÝ_‰Sg>g>g>zJŜsɯɯɯɯɳɷÊZg>g>ƒO~~~~~~~~~~~~πϩϬϬϕ~~~~~~~~ϠϬϬϠ~~~~ρϩϬϬϬώϫϬψ}}}}τϻϱρ}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}σômÞ`ÕZÅPÄPtFÎVÖ[àaàaÞ`Ø\ÌTÅPÎVÎVÎVʺǾ•Z„PV¤cŽV•[ a†QM—\‹TÔ`ǻĥw²l²l£c”Z„Pg>g>˹Ǧf>f>O~~~~~~~~~~~~πϧ~~~~~~ρϱ~~~~Ϥϻϑ}}}}ρω}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}σ³l_—[¡af>tFŽV‰S²l²l_”Yf>f>tF“Y²lʷƾf>f>zJllliQf>f>nCɱ̿`h``RM^Ž˾OOT~~~~~~~~~~~~πϧ~~~~~~ϣω~~ϊϑ}}}}ύϡ}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}σhkkcf>f>f>ZkkiMf>f>NdkɽĽ{K]di`MxI{KRdeßvWS`f>XlƾWjW~~~~~~~~~~~~πϧ~~~~ϱρ~~ϧϣϒϑ}}~~ϧϺτ}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}ςʿejYQf>[ZbSOOWc\YpDRɴƾsEtFTde[f>rE}Ljòĸ±Dzihbf=i@ŨĮɺvc_~~~~~~~~~~~~πϧ~~~~Ϛϑ~~~~Ͽρτϵϑ~~υϮϑ}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}ςʽiiZe=bzJiMb`SrEyI[e]pDȰƾNh?i?ahah?e=}LhóǾlYģǵVYSWxIƬʾ`˜~ve=vH~~~~~~~~~~~~πϧ~~ϰ~~~~~~Ͽρτϵϑ~~ϖυϿϫ}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}ςʺgaX|K}LZ`T{JR\YZQqEZfǸȿch?j@`dUnBMabffyIUȾƳ[_RNSƽĹ\wƷjBxH~~~~~~~~~~~~πϧ~~ϑϙ~~~~~~ϧϣϒϑρϱϭτϧ~~}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}ςʶdZ|K~L[ZyINaTj@ZdsFM`PŮ¿}NXVSŶvHcVpDŴRSSUnƴN`õsHlBϟϟϟϙ~~πϵϟϽώ~~~~~~ϊϑωϕ}}ϊϚ}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}ρʱ[yIUPPQRNWuG\|KTTuG\|KóɿWqD]лVQ{JWZö}LNW~LxSMȲ[mB~~πϑ~~~~~~Ϥϻϑϡπ~~}}϶ϵτ}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}ρ~ʨU~P{N~OP{NSP~PzMTwKSzM{NS{NɱsuKTжyMVyMR[RvKT~OϰrSrIϵ{N~πϽρ~~ρϩϯϒϐ϶Ϣρ~~ϝπ}}}}}}}}}}}}}}}}}}πʠTuSuStTuRsRsTuStStTuRtQsTuStStTuStStTuаStTuStRsa~нStStTuRtɾġVyRtQsg϶RsøϹϹϹϰ~τϘ~~~~ϊύύύρψύρ~~~σύό~}}}}}}}}}}}}}}}}}}π=e=e=e=e=e=e=e=e=e=e=e=e=e=e=e=e=eΠzzzz{Jn=d}}=d=d=d=dPrΠ=d=d=dJoε=d=d=dMpα?g~~~~~~ϏϸϟϟϟϟϮϲ~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}τ>f>f>f>f>f>f>f>f>f>f>f>f>f>f>f>f>fΠϻ>f>f>f>fBjQs>f~>f>f>f>fTvΠ>f>f>f{͑>f>f>fHoίPs~~~~~~ϏϬ~~~~ϛϼ~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}τ?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?hΠϻ?h?h?h?hCkQu?h~Χ?h?h?h?h͈Π?h?g?g͍?g?g?g?gΠg~~~~~~ϏϬ~~~~ϛϼ~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}τ?i?i?i?i@i@i@i@i@i@i@i@i@i@i@i@i@iΠϻ@i@i@i@iDlRv@i~X{@i@iFnϰΠ@i@i@iήOt@i@i@i@iw͐~~~~~~ϏϬ~~~~ϛϼ~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}τ@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@jΡϼGpGpGpGpLsSw@jϮZ}KsΚΠ@j@jJqϽϯKs@j@j@j@jGoΦ~~~~~~ϏϬϏϏϏϏϟϼ~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}τAlAlAlAlAlAlAlAlAlAlAlAlAlAlAlAlAlΡNuAloΐAlAliΠAlAlAlAlAlDnϺƑ~~~~~~Ϗϲ~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}τBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmϡϨBmBmFpdBmBmΑBmBmBmBmBmBmΡГ~~~~~~ϏϘ~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}τCnCnCnCnCnCnCnCoCoCoCoCoCoCoCoCoCoϡgCoCoHs·ϥDpCoCoϦeCoCoCoCoCoCo·У~~~~~~Ϗϼρ~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}τDpDpDpDpDpDpDpDpDpDpDpDpDpDpDpDpDpϡΎNxDpDpDpItϤϷ[DpDpDpϼϺGrDpDpDpDpDpDp_Ь~~~~~~Ϗϓ~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}τDqDqDqDqDqDqDqDqDqDqEqEqEqEqEqEqEqh~~~~~~~~tEqEqEqEqEqEqKv|~~~~~YEqEqEqErt~}hEqEqEqEqEqEqEqErt}}~~~~~~χϜϟϟϟϟϟϟϟϟϏ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}τErErErErHxHwFtErErFsHxHxHxHxHxHxHvEsEsEsEsEsEsEsEsHwHvEsEsEsHvIxIxIxIxIxIxGuEsEsEsEsEsEsFtHxIxEsEsIxHxIxIxIxIxIxHwEsEsFs~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}τFtFtFtFtGvm7[IxFtFtIy_1RY/MY/MY/MY/MY/M?hFtFtFtFtFtFtFtFt?hDpFtFtFtDpY/MY/MY/MY/MY/MY/MFtFtFtFtFtFtFtIxm7[HvFtFtHvl7[Y/MY/MY/MY/MY/M~JzJzJzL~J{L~JzJzJzJzJzJzJzJzJzJzJzJzJz~6ZAlJzJzJzAl~6ZJzJzJzJzJzJzJzJzJzJzJzJzJ{H%>K|JzJzK|H%>J{JzJzJzJzJzJzJzJ{~~~}(CCr~~~j:__|[*FFu|~~~~~~~~Jzza~~~aIxx|Q7ZZx~~~~~~~~~:``j~~~r(BBze33p}}}τJ{J{J{J{L}H%>K{J{J{MK{MK{K{K{K{K{K{K{K{K{K{K{K{K{~6ZBlK{K{K{Bl~7ZK|K|K|K|K|K|K|K|K|K|K|K|K|H%>L}K|K|L}H%>K|K|K|K|K|K|K|K|K|~~~}(CCr~~~j''2SS11'':__p~~~~~~~~Jzza~~~a112SS''11Blls~~~~~~~~:``j~~~r2RR#994VVk}}τK|K|K|K|L~H%>K|K|K|MK{MK|K|K|K|K|K|K|K|K}K}K}K}K}~7ZBmK}K}K}Bm~7[K}L}L}L}L}L}L}L}L}L}L}L}K}H%>ML}L}MH%>K}L}L}L}L}L}L}L}L}~~~}(CCr~~~j''2SS2SS2SS0PP.LLw~~~~~~~Jzza~~~a112SS2SS2SS.LL:__z~~~~~~~:``j~~~r2SS2SS2SS2RR%==s}τL}L}L}L}MH%>L}L}L}NK{NL}L}L~L~L~L~L~L~L~L~L~L~L~~7[BnL~L~L~Bn~7[L~L~L~L~L~L~L~L~L~L~L~L~L}H%>ML~L~MH%>L}L~L~L~L~L~L~L~L~~~~}(CCr~~~j:__|||y8]]b~~~~~~~Jzza~~~aIxx|||v+HHk~~~~~~~:``j~~~r(BBz{{{DppW}τL~L~L~L~NH%>L~M~M~NK|OMMMMMMMMMMMMM~7[CnMMMCn7[MMMMMMMMMMMML~H%>NMMNH%>M~MMMMMMMM~~~}(CCr~~~j;aa~~~~Jzza~~~~~~~Jzza~~~aJzz~~~~:aaj~~~~~~~:``j~~~r(CC|~~~VV}υMMPQQC$;NQQOK|OMMMMMMMMMMOQQw7[DpQQNCo8\NNNNNNNNNNQQNC$;RQPOH&>MNNNNNNNN~~~}(CCr~~~j;aa~~~}Essa~~~~~~~Jzza~~~aJzz~~~|7ZZj~~~~~~~:``j~~~r(CC|~~}RV~υNN@j1-0- ,)1-m5XPK|PNNNNNNNNNNJz1-1-%#1-NNNNNNNNN~l\[11S\c~j+GG\\\X11n~~~~t\\6YYGuu\\{a6YY\[[T%==t~~~~p[[+GGM[_}r11[[[[%==f~υNNJz>f>f>f>f>fFtPAkPOOOOOOOOOON>f>f>f>f>f?iQL~HwOOOOOOOOOOFt>f>f>f>f>fJ{PCoPOOOOOOOO~V;aa~j++Z}~~~~j$$ya"88`}~~~~a(CC|rQ|~υOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP~skkkkko~xkkkkm}~~~~~xkkkkkk|vkkkkn~~~~~~vkkkkkl}zkkkkk|~~υPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~υPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ~~~~~~~~~~~~~~~~~~~~~~~~qv~~~vq~~~~nq~~~~~~~nx~~~zl}~~~sl}΅QQQQRCoRQQS@i>g>g>g>g>gIyQQQQQQQQIyNRRRN>g>g>g>g>g>gPRRRRRRRDpRRRRL}>g>g>g>g>g>gRRR~~~}Ov~~~pV~~~}ZZ~~~~~~~Jzza~~~aJzz~~~s%==e~~~~~~~:aaj~~~r(CC|~~z:__Q}΅RRRRRH&?PRRS+(/,1.1.1.1.=dRRRRRRRR9_FtRRRFt1.1.1.1.1.M~RRRRRRQI&?SRRR@j&$1.1.1.1.1.QRR~~~}(CCr~~~j;aa~~~m11m~~~~~~~Jzza~~~aJzz~~|ErrEss|~~~~~~~:aaj~~~r(CC|~}[.LLw~υRRRRSI&?QRRS3/UUUUUUSSSSSSSS:_FtSSSFtx9^UUUUUTSSSSSSQI&?TSSS@k@jUUUUUTSS~~~}(CCr~~~j;aa~~z:__R}~~~~~~~Jzza~~~aJzz~~d%==s~~~~~~~~:aaj~~~r(CC|~s$;;e~~υSSSSTI&?QSSTL}TSSSSSSSSSSSSS:`GuSSSGu:`STTTTTTTTTTTRI&?TTTTAkAkTTTTTTTT~~~}(CCr~~~j;aa~~\-KKw~~~~~~~~Jzza~~~aJzz~w.LL[~~~~~~~~~:aaj~~~r(CC||FttFss|~~υSSSSTI&?RTTUL}UTTTTTTTTTTTTT:`GvTTTGv:`TTTTTTTTTTTTRI&?UTTTAlAlTTTTTTTT~~~}(CCs~~~j;aa~s%==e|~~~~~~~~Jzza~~~aIxx|Q7ZZx~~~~~~~~~:aaj~~~r(BBze33p}~~υTTTTUI&?RTTUL}UTTTTTTTTUUUUU:`HvUUUHv:aUUUUUUUUUUUUSI&?UUUUAlAlUUUUUUUU~~~}(CCs~~~j2RRkErr-JJk}~~~~~~~~Jzza~~~a112SS''11Blls~~~~~~~~:aaj~~~r2RR#994VVk~~υUUUUUI&?SUUVL}VUUUUUUUUUUUUU;aHwUUUHw;aUUUUUUUUUUUUSI&@VUUUBmBmUUUUUUUV~~~}(CCs~~~j++Y}~~~~~~~Jzza~~~a112SS2SS2SS.LL:__{~~~~~~~:aaj~~~r2SS2SS2SS2SS%==s~υUUUUVI&@SUUVL}VUVVVVVVVVVVVV;aHxVVVHx;aVVVVVVVVVVVVSI&@WVVVBmBmVVVVVVVV~~~}(CCs~~~j+GG\\\Y11n~~~~~~~Jzza~~~aIxx|||v+HHk~~~~~~~:aaj~~~r(BBz|{{DppW~υVVVVVI&@SVVWL~WVVVVVVVVVVVVV;bIxVVVIx;bVWWWWWWWWWWWTI'@WWWWBnBnWWWWWWWW~~~}(CCs~~~j;aa~~~}Essa~~~~~~~Jzza~~~aJzz~~~~:aaj~~~~~~~:aaj~~~r(CC|~~~VV~υVVVVWI&@TWWWL~WWWWWWWWWWWWWW;bIyWWWIy;bWWWWWWWWWWWWTI'@XWWWCnCnWWWWWWWW~~~}(CCs~~~j;aa~~~~Jzza~~~~~~~Jzza~~~aJzz~~~|7ZZj~~~~~~~:aaj~~~r(CC|~~}RV~υWWXXYH&?UYXXL~XWWWWWWWWWWXYY;bJzYYZIy[1Q`4UYJz direction 2*z right x*image_width/image_height look_at <0.0, 0.0, 0.0> } sky_sphere { pigment { gradient y color_map { [0.0 color blue 0.6] [1.0 color rgb 1] } } } light_source { <0, 0, 0> // light's position (translated below) color rgb <1, 1, 1> // light's color translate <-30, 30, -30> } // ---------------------------------------- plane { y, -1 texture { pigment { checker color rgb 1 color blue 1 scale 0.5 } finish { reflection 0.2 } } } plane { z, -1 texture { pigment { image_map { png "test.png" interpolate 2 // smooth it once // don't tile image, just one copy filter 0 0.8 // make 1st color mostly transparent filter 1 0.8 // make 2nd color mostly transparent } // transform it to unit-size (-1 to +1) translate -0.5*(x+y) // center on the origin scale 2 // make it unit-sized } finish { ambient 0.3 } } } BM~6(xZ~hhhhhhhhhhhhhhhhhhggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggffffffhhhhhhhhhhhhhhhhhgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggffffffffhhhhhhhhhhhhhhhhggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggffffffffffhhhhhhhhhhhhhhhgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggffffffffffffhhhhhhhhhhhhhhggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggffffffffffffffhhhhhhhhhhhhhgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggffffffffffffffffhhhhhhhhhhhhggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggffffffffffffffffffhhhhhhhhhhhgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggffffffffffffffffffffhhhhhhhhhhgggggggggggwfsfwd}gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggffffffffffffffffffffffhhhhhhhhhgggggggggggimmm```AJRI\k]vgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggffffffffffffffffffffffffhhhhhhhhggggggggggggjwwwooohhh@HO3AL3AL@Q_Wnegmy`ku^o}bygggggggggggggggggggggggggggggggggggggggggggggggggggggggggggffffffffffffffffffffffffffhhhhhhhgggggggggggggk}mmmfffjjj3AL3AL3AL3AL3AL9HTSgx}~bbb___DLSBTbYpfggggggggggggggggggggggggggggggggggggggggggggggggggggggffffffffffffffffffffffffffffhhhhhhggggggggggggggcrYYYZZZHMR3AL3AL3AL3AL3AL3AL@HOsss^^^PPPGN3AL=MZQfw`ygcw^mzbvf~ggggggggggggggggggggggffffffffffffffffffffffffffffffffffffhggggggggggggggggggjiiiiiilllMRW3AL3AL3AL3AL3AL9@EKKKWWWHHH6=C3AL3AL3AL3AL3AL@HPOQSZZZFFF<<<===777000777iii|||qqqkkkbdf4AL3AL3ALBTae~fhj\\\XXX___uwytzfr}_rczfggggggggggggggffffffffffffffffffffffffffffffffffffffggggggggggggggggggglbbbeeemmmPV[3AL3AL3AL3AL3AL7>D\\\[[[MMM>DJ3AL3AL3AL3AL3ALPUYXXXXXX>>>666000111333444===vvvKRX3AL3ALH[jZckjjjddd[[[[[[nnneeeSSSXXXaaaPQR\bh\itYnfggggggggffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggnVVV\\\nnnNTZ3AL3AL3AL3AL2=F8;?bbbbbbZZZ?EJ3AL3AL3AL3AL3>GfghoooXXX222666::::::888:::===[[[LOR@HP3AL3AL:@FGGGLLL\\\aaagggkkkXXXWWWiiijjjnnnfffXXX@FK333GGG\\\SSS?DJ3AL3AL3AL3AL4=EmmmfffDDD---777;;;666222333;;;HHHOOOPQR?HO3AL3AL6@H:=@888666DDDMMMXXXmmm[[[aaalllLLLgggqqq```GLQ3AL]vgdddXXXjlohpxZjwdwgfffffffffffffffffffffffffffffffffffffgggggggggggggggggggrzXXXWWWWWWfffnnnklmkmnX\_EIL???DDDOOOYYYQTW3AL3AL3AL3AL8A5?H3AL3AL:AF???666555>>>BBB>>>444^^^nnnTTThhh888...36:4>G3AL3AL6@H__`^^^YYY^^^lllyyyeee```SSSXXXuuuyyy>>888jjjaaaNNN333,042=F3AL3AL3=F7;>___{{{{{{qqq|||qqqpppHHHZZZ|||AKSQfwefffgukmo^bg^isgvcyefffffffffffffffffffffggggggggggggggggggoiiiMMMVVVVVV>>>???UUUwww~~~cccaaaooorrr~~~aeh3AL3AL3>F?BENNN{{{wwwkkkEEEYYY]]][[[bbbgggsssssslllrrrwwwsss???DDD===???CCCBBB<<<;;;uuuppplll]]]9:;1>>@@@@@@ddd~~~uuusssUUU???RSSRX^3AL3ALG=@CIIIKKKCCC999555;;;tttsssLLL:=@7AI3AL3AL3AL3AL?HOPRUTTT\\\OOOOOOdddrrrfffHKM6@I3AL=MZShzc}ffffffffffffffffggggggggggggggggggr~sss```\\\VVVHHHJJJLLLNNNGGG;;;DDDnnndddxxxV[a3AL0;D048666???{{{^^^```III:::222777BBBEEEBBBSSSiiiwwwnnn888666777AAADDDCCC<<>>OOOXXXXXXRRR===---+++777;;;666333HHHooopppbbb999000---444<<<:::OOOxxxuuuYYYaaaoooENU7AI8WWWhhhQQQ===---111111PPPwwwpppNNNDJO3AL3AL3AL3AL5DOMaqc}ffffffffffffggggggggggggggggggz}tttfff\\\FFF...;;;IIILLLHHHIIIbbbssseeeVVVFKP3AL:@F;;;>>>AAAmmmWWWSSS[[[GGG,,,333===@@@999777AAAJJJaaaHHH888333111333666@@@iiiuuuwwwTTTbbbEJP:>A:::999???@@@@@@BBBBBB888444hhhYYYUUUSW[3AL3AL9BJ8A555---HHHlllWWW^^^PPP999444///+++```}}}cccMRV3AL3AL3AL3AL3AL3AL3ALGYhefffffffffgggggggggggggggggm```]]]YYY999555444222444:::@@@KKKCCCTTTRTVBDAAA;;;???JJJ???YYYlllVVVJJJUUUfffkkk\\\NNN999222333......666aaaqqqrrrsssWWW___LLL:::777;;;CCCCCC666===AAA???<<>>LLL{{{mnn3AL3AL3AL3AL3AL>N[Zrfffffffffffgggggggggggggggggx}}}nnn```bbb888======<<<555:::TTT{{{```uuustu@FKCCC===<<<===CCC===pppwww______TTTbbbcccUUUDDD888888555------IIIuuuuuuvvv|||dddggg___[[[III:::777666;;;===::::::666===<<AD<<<888===999666DDDttt~~~qqqqqq```UUUgggkkkOOOBBB:::555///...MMMaaaqqqxxxmmm```aaa[[[UUU@@@555777666::::::BBBCCC888;;;999jjjiiimmmjjj222555888222///@@@vvvuuubbbRRRHHH??????666;;;[[[lllWWWrrr;GP4ALH[jazffffffffeeeeeegggggggggggggggggyyyaaa[[[333222===BBBBBBEEExxxssscccvvvkkk<<<:::999;;;555222TTTkkkxxxeeelllUUU@@@;;;999///,,,>>>~~~```uuurrrpppxxxiiiSSSQQQFFF>>>999333555777BBBEEE:::999dddvvvxxxkkkeee@@@;;;777444---555xxxUUUVVVDDDDDD:::;;;???hhhWWWEJO?O\[sfffffffeeeeeeeeegggggggggggggggghlll[[[MMM333...000777;;;OOO}}}pppeeeooo___<<<<<<888555555BBB______bbb{{{kkkXXXBBB777---++++++<<>><<<888xxxwwwpppaaaeeekkk```QQQ===444:::333555LLLtttpppwwwvvvyyyoooccc\\\WWWUUU\\\FFF555:::>>>:::qqqsssnnnqqquuuaaa^^^jjj:::555222333:::RRRrrrmmmwwwWWWJJJMMMeeecdeeweeeeeeeeeeeeeeeeeeegggggggggggggggglzvvvXXX;;;===666333111WWW{{{cccMMM>>>???<<<111<<>>FFF:::...DDDllluuuoooSSS>CI8FQ4@J:=@999eeevvv|||~~~nnnooottttttaaawww}}}QQQ888FFFsss~~~|||uuuoookkkeeennnsssnnnzzzqqqhhheffao{e~eeeeeeeeeeeeeeeeeeeeeeeeeggggggggggggggggtttvvvrrr===999<<<===@@@uuudddgggHHH999AAA>>>:::YYYjjjdddmmmcccmmmZZZJJJJS[Peu^we>ADZZZuuunnnuuulllllltttfffhhh```VVV555666GGGpppgggfffvvv~~~wwwllloookkk^irc{eeeeeeeeeeeeeeeeeeeeeeeeeeeggggggggggggggginnnUUUGGG999:::;;;999GGGrrrtttiii^el???333888@@@XXX}}}vvvxxxwwwlllOQTb{fffQTVwwwhhhooohhhaaa~~~mmmkkk~~~ttt888777TTT```~~~qqqzzzxxxoooooottt~~~xxxppp~~~sssekqdyeeeeeeeeeeeeeeeeeeeeeeeeeeeeegggggggggggggggjlllmmmkkkBBB888666555666dddyyy]]]rrsg|555666888===xxx{{{fffLLLZofffffhkuuutttttt}}}~~~qqquuuYYYRRRcccaaajjj[[[[[[888PPPnnnvvv```~~~qqqiiioooooommmttttttjjj]ad^peeeeeeeeeeeeeeeeeeeeeeeeeeeeeeegggggggggggggggldddRRRehjGPW;AF357777???{{{tttiqyd~(((222777^^^rrrlllkkkyyy]]]P_kfffffuuuzzzxxxsssjjjyyyxxxhhhIII888;;;ssssssxxx}}}qqqqqq}}}xxxwww|}~kxe~eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeegggggggggggggggtgggaaa`mxffe`vSSSuuuhhhdye79;000;;;yyy~~~qqquuuggglllXXXDLSdffffg{{{{{{|||rrrtttkkk~~~nnnmnnEEECCCqqqoooyyyqqqggglllppp|||yyyooovvvrrrqqqoooqqqaaaYeoc{eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeegggggggggggggffztttj|fff^sooozzzqvzlfJT]222eeesssllleee```dddIJK`xfffffs~~~kkktttgggwwwoooeeeqtvk~...YYYtttlllgggsssvvvtttzzzvvvdddV]e^ueeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedddddgggggggggggfffft{{{lfffasyyymmmrrrtff[pMMMqqqmmmZZZMMMYk{fffffffmmmbbb|||yyy}g~e~wwwnnnqqqdddxxxvvvmmmiiihhhppp}}}rrrmmmzzzfjm_reeeeeeeeeeeeeeeeeeeeeeeeeeeeedddddddddggggggggfffffff~fffffuuuulllfiknfff}{{{zzzpppgggTalfffffffi~ttt]]]iiioooeeeuuu~~~pv|ffipppyyy{{{jjj|||ooo}}}}}}bbb\\\tttnnnhhhkkkdeg\lyd~eeeeeeeeeeeeeeeeeeeeeeeeeddddddddddddddgggggffffffffffv{wwwmwffffivooocccozfffffzhlpkmonu{evffffffffq}}}sssooollliiimmmis}feejsss|||www~~~mmm]]]fff[[[oooooowwwuvvbmvd|eeeeeeeeeeeeeeeeeeeeeeedddddddddddddddd~d~d~gggffffffffffff}xxxjzffffnv~cccghihfffffffffffffffffffo}}}{{{pppiweeeefyyy{{{~~~}}}lllqqqhhhyyytttpppwww^^^ckqcyeeeeeeeeeeeeeeeeeeeedddddddddddddddd~d~d~d~d~d~d~d~fffffffffffffffblu^dje|ffffhouxxxvfffffffffffffffffffh{{{seeeeee~kkkxxxnnn]]]jjkoyyyyxxxzzzdhlcveeeeeeeeeeeeeeeeeeddddddddddddddd~d~d~d~d~d~d~d~d~d~d~d~d~ffffffffffffffffffffffj}plffffffffffffffffffidinnnnuuuyyyxxxmeeeeeef{{{{uuuiiiXXX_gnf|el|~~~{{{rstr~leeeeeeeeeeeeeeddddddddddddddd~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~fffffffffffffffffffffffffffffffffffffffeeeeq|||pppZZZppp{~meeeeelxqstxxxjjjbbbcccrsuteeeeecze{d}eeeeeeeeeeeddddddddddddddd~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~fffffffffffffffffffffffffffffffffffeeeeeeeej|krysx|rlrwieeeeeeisssbbbfffiii]fok~eeeeeeeeeeeeeeeedddddddddddddd~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~fffffffffffffffffffffffffffffffeeeeeeeeeeeeeeeeeeeeeeeee~dkrswzrsuhloizeeeeeeeeeeeeedddddddddddddd~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~c~c~c~c~fffffffffffffffffffffffffffeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedddddddddddddd~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~c~c~c~c~c}c}c}c}c}c}fffffffffffffffffffffffeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedddddddddddddd~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~c~c~c~c~c}c}c}c}c}c}c}c}c}c}c}c}fffffffffffffffffldp{OapUl~\uc}ed}eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeddddddddddddd~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~c~c~c~c~c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}ffffffffffffffeek~^^^8DM3AL3AL3?HSY_hhhabcaehhmrP`nRhybxcv^vd~eeeeeeeeeeeeeeeeeeeeddddddddddddd~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~c~c~c~c~c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}ffffffffffeeeeek{\\\F2:@-15NNNgggeeeYYYlllPV[08>NNOSTV5BL5DO@Q_K_oUk}]ud~byarav`yd~eeeeddddddddddddd~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~c~c~c~c~c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c|fffffeeeeeeeeeewz|{{{{{{oooRboAKT...111333;;;gggOOO?BE<>?222AAAAGL3AL3AL3AL3AL/:D07>[^ajjjVVVllmBJQ6CMS^h^ekaioQ`lYhuVm_wbybzc}dd~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~d~c~c~c~c~c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c|c|c|c|b|b|b|b|eeeeeeeeeeeeeekwwwqqqsssYYYbyM^k58;777333333rrr\^`000111555LLLUVX3AL3AL3AL3>G269666nnnUUUPPP:A;AG`aaiiiJLNAEIRWZFUahqy[htm{bt_ub|d~d~d~d~d~d~d~d~d~d~d~c~c~c~c~c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c|c|c|c|b|b|b|b|b|b|b|b|b|b|b|eeeeeeeeeeeeeevzzzyyybbbezeb|<<<666;;;uuu`ho888555444cccdfh4BM3AL9BK8;>777AAAaaa??????888GGGbbbMMMQQQ\\\UUU???uuuYYY[[[PPPBBB>>>GGGOOOrrr]]]AHO5CNH[jRhy[sb{ht[o_vg|b|c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c|c|c|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|eeeeeeeeeeeeee{sss```fffcve`y;;;>>>999fff@@@888999:::jjjmu}b{[sGS^;;;555KKKzzzLLL111666555]]]eee@@@???~~~]]]<<DCEHz{|PRSSSTlnp6AJGS]U^e^ekM^lRfw^p\q_xc}c}c}c}c}c}c}c}c}c}c|c|c|c|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b{b{b{eeeeeeeeeeeeedoqtzzzvvvWWWbbbgyd]t999@@@DDDXXXLT[111999;;;```Zeod~d~HOV777111ZZZsssMMM444333444YYYTTT???DDDjjjhhh@@@```III@@@UUU***333mmm\\]3AL3AL3>G37:999;;;DDDuuubbbHHHVVV<<G;GQv|suxhmr]go[jvXm`t^r^ua{b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b|b{b{b{b{b{b{b{b{b{b{a{eeeeeeeeeeeedd{~~~fffNNN\odXm555555DDDdddYah::::::666FFF_lxd~d~CFI777222LLLXXXSSS@@@888+++lllaaa777;;;EEEDDD@@@|||;;;???UUUNNN111999rrrZ\^XpTj|Qds;;;>>>AAAJJJdddiii]]]JJJfff999AAADDDQQQ{{{<<>>===LLLrrrMMM<<<999,,,mmmPPP<<<444[[[ZZZ???RRR@@@AAABBB555@@@qqq[]_c}c}ZoCCC???AAADDDvvvuuuTTTPPP___444BBBGGGHHHPPPfffKKK:::555444VVVtttGGG???MMM]]]TTThhhCCC999}}}UWX4AL:IU7FQ>O\K_oUk}^va{a{a{a{a{a{a{a{a{a{a{a{a{a{a{azazazazddddddddd~d~d~d~d~lu}cccDDDMMM^o}d~Rds999???eee^^^IQY;;;000<<<[[[\m{c~ay===:::===MMMcccOOO777777777mmmNNN???...^^^UUU===ccciiiRRRTTTNNN***888YYYp|c|c|Vk{@@@===???HHHxxxfffeee]]]YYY666BBBMMMDDDzzzHHHMMMJJJ;;;<<<===ggg|||===<<>>BBBdddrrrIRZ222///HHHiii^o}c}]t999000333LLLnnnYYY<<<888999CCCGGG@@@666TTTQQQ;;;???fffUUUYYYMMM---000tttptyb|b|Rds777:::BBBEEE{{{eeeVVV^^^>>>]]]OOOAAAOOOIIIPPPLLL:::BBBAAA]]]{{{@@@BBBmmm[[[888qqqW^dM^lYjxN^l?P]BTb8GS3AL7EQ@Q^H[jNcsUk}[s`yazazazazazaz`z`z`z`z`z`z`z`z`yd~d~d~d~d~d~d~d~d~d~d~d~s|||yyytttbbb666CCCTcoc}KWbDDDIIIkkk{||MTZ555777HHHYYYWeqc}\r999222///LLLKKK777;;;:::oooVVV777666aaaMMM@@@:::@@@DDDVVVQQQ222222xxxbdeb|b|Set555999<<>>^^^amxc}ALUBBBFFFoootvxJQX888666VVViiiY_d]tJXd555;;;777XXXJJJ666999555^^^[[[,,,555DDDHHHBBBCCCDDDAAAMMMJJJ,,,111zzznpqb{b{Rds000888888DDDuuuUUURRRUUU:::VVVLLL===xxx^^^```XXX444444222XXXVVV666rrrcccAAAUUU===^^^\\\_v`z`y`y`y`y`y`y`y`y`y`y`y`y`y`y`y`y`y`y`y`y_y_y_x_xc}c}c}c}c}c}c}c}c}c}c}c}ks{|||pppaaaHHH@@@]]]hrzc|?GO888KKKMMMTY^FHKEEEZZZlllbbbEEE:::===GGGAAAIII]]]LLLDDDAAA;;;BBB>>>000<<>>bbbGGG>>>EEE@@@,,,888cccacea{a{P_l888<<<666RRRqqqdddWWWQQQXXXDDDSSSFFFEEEXXXTTTeeekkk>>><<<222999hhhUUU999^^^bbb888xxx^^^333aaawww]s`y`y`y`y`y`y`y`y`y_y_y_x_x_x_x_x_x_x_x_x_x_x_x_x_xc}c}c}c}c}c|c|c|b|b|b|i|ruwdddwwwXXX<<<===\\\XaiWk|ABCKKKiiikkk`eizzz|||xxxjjjSSSXXXHHHbbbggg]]]JJJQQQPPP[[[SSSDDDIIIGGGGGGVVVpppBBB:::OOO444OOO^^^iiiXZ\azazM\h>>>:::888XXXkkkUUUZZZXXXBBBiiiiiiCCCKKKHHH___^^^BBB???555222SSSTTT;;;bbbbbb888lllccc333^^^vvvbs_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_x_w_w_w^w^w^w^wb|b|b|b|b|b|b|b|b|b|b|fyllluuuzzzTTT555777aaaRRR===333<<>>RRRBBBvvvIIIUUULLLPPPnnn;;;___ooo@@@mmmfff>>>ggg^n|_x_x_x_w_w_w_w^w^w^w^w^w^w^w^w^w^w^w^w^w^w^w^w^v^vb{b{b{b{b{b{b{a{a{a{a{smmm|||___---222HHHNPRHT]@IPKZgWl}`y[s=>?@IP89;89:DMTQ`l]]]dddcccKKKEEEKKKBBBmmm{{{~~~|||~~~vvv[[[ggg}}}nnnafk`y`ynwvvvoooLLLZZZDDDBBB???aaaXXX\\\ddd^^^SSSQQQllliii888EEEiii???KKKVVV;;;VVVrrr\kw^w^w^w^w^w^w^w^v^v^v^v^v^v^v^v]v]v]v]v]v]v]v]v]v]va{azazazazazazazazazazt{vvvyyyeeeRRRAAAqqqtttV\b`z`z`z`z`z`y`y`y]t^v`y`yk{zmmmlllYYYS^hVgu_svlwjvxyzwhxuy}~~~yyybgl_x_xtttcccvvvuuuIII:::===>>>666|||uuu^^^zzzlll```]]]iiizzzsssAAA???gggPPP___999III{{{Xdo]v]v]v]v]v]v]v]v]v]u]u]u]u]u]u]u]u]u]u]u]u]u\u\u\u`z`z`y`y`y`y`y`y`y`yfynqszzz~~~fffy{}|||{{{qqqKRY`ydwfziv`kv_r_x_x_x_x_x_x_xu{www{{{|||]^^_w_x_x_x_x_x_xfxfx_w_w^w^w}}}wwwwwwein^w^w|||tttBBB333cccTTTmmmoooosvyyymmmmmmnnnCCCDDDtttzzzrrrrrr333GGG{{{[dm]u]u]u\u\u\u\u\u\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_x_x_x_x_x_x_x_x_x_xavlllcuu|sssmnn\bhmxtttqqqdr^w^w^w^w^w^w^w}}}`bd^w^w^w^w^w^v^v^v^v^v^v^v^vsvyhhhWWWjjjZZZOOOkpu]v]vov{tttxxxssskkkUUUUUUhpx^tcuavav\ucmvyyyxxx~~~tttfffpppuuuoooqqqbbb222===xxx`gm\t\t\t\t[t[s[s[s[s[s[s[s[s[s[s[s[s[s[s[s[s[s[r[r[r^w^w^w^w^w^w^w^w^w^wbwfuev_w^vjt~t}fr|as^vaaa]o}]v]v]v]v]v]v]vhovnyix^r]u]u]u]u]u]u]u]u]u]u]u]ufpydfglllmmmvvvhhhfkp\t\tmqtnnnqqqnnn]em\t\t\t[s[saipfffeeeqqqZZZ^^^dddhhhsssuuunnnkkkrrrrrrfjn[r[rZrZrZrZrZrZrZrZrZrZrZrZrZrZqZqZqZqZqZqZqZqYqYq]u]u]u]u]u]u]u]u]u]u]u]u]u]u]u\u\u\u\u\uty~x|puzdu\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[t[s[s[s[s[s[sruyuuuouzku]adWbk[s[skvgggqqqhmr]o~ZrZrZrZrbtmpsaaaxxx{{{vvvRRRsss|||sss[[[qqqcinYqYqYqYqYpYpYpYpYpYpYpYpYpYpYpYpYpXpXpXpXpXoXoXoXo[s[s[s[s[s[s[s[s[s[s[s[s[s[s[s[s[s[s[s[s^pfq{ct[s[r[r[r[r[rZrZrZrZrZrZrZrZrZrZrZrZrZrZrZrZrZrZqZqZqZqZqbsjxasjt~bsYqYqYqYqYqcs`p~fweuozsfvas[p\n|YpYpYpYpYpgvkoruwyhhhvwwvvv}}~glq[fqcnwhr|dox\m{XoXoXoXoXoXoWnWnWnWnWnWnWnWnWnWnWnWnWnWnWnWnWmWmWmYqYqYqYqYqYqYqYqYqYpYpYpYpYpYpYpYpYpYpYpYpYpYpYpYpYpYpYpYpYpYpXpXpXpXpXpXpXpXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoWnWnWnWnWnWnWnWnWnWnWnWnWnWnWnWnWnXo]o~fpyap~WmWmWm_o}Zn[oZnku}ap~VmVmVmVmVmVmVl~Vl~Vl~Vl~Vl~Vl~Vl~Vl~Vl~Ul~Ul~Ul~Ul~Ul~Ul}Ul}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}WmWmWmWmWmWmWmWmWmWmWmWmWmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVmVl~Vl~Vl~Vl~Vl~Vl~Vl~Vl~Vl~Vl~Vl~Vl~Vl~Ul~Ul~Ul~Ul~Ul~Ul~Ul~Ul}Ul}Ul}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk}Uk|Tk|Tk|Tk|Tk|Tj|Tj|Tj|Tj|Tj|Tj|Tj|Tj|Tj|Tj|Tj|Tj{Tj{Tj{Tj{Tj{Tj{Tj{Si{Si{Si{Si{Si{Si{Si{SizSizSizSizSizSizSizSizSizShzShzShzShzShzRhySi{Si{Si{Si{Si{Si{Si{Si{Si{Si{Si{Si{Si{Si{Si{Si{Si{Si{Si{Si{Si{Si{Si{Si{SizSizSizSizSizSizSizSizSizSizSizSizSizSizSizSizSizSizSizSizShzShzShzShzShzShzShzShzRhyRhyRhyRhyRhyRhyRhyRhyRhyRhyRhyRhyRhyRhyRhyRhyRgyRgyRgyRgyRgxRgxRgxRgxRgxRgxRgxRgxQgxQgxQgxQgxQgxQgxQgxQgxQfwQfwQfwQfwQfwQfwQfwQfwQfwQfwQfwQfwQfwQfwPfwPfvPfvPevPevPevPevPevPevPevPevPevPevPevPevPeuPeuPeuOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOduOdtOdtOdtOdtOdtOdtOdtOdtOdtOdtOdtOdtOdtOdtOdtOdtOdtOdtOctOctOctOctOctOctOctOctOctOctOctNctNctNcsNcsNcsNcsNcsNcsNcsNcsNcsNcsNcsNcsNcsNcsNbsNbsNbsNbsNbsNbsNbsNbrNbrNbrNbrNbrNbrMbrMbrMbrMbrMbrMbrMbrMarMarMarMaqMaqMaqMaqMaqMaqMaqMaqMaqMaqMaqMaqMaqLaqLaqL`qL`pL`pL`pL`pL`pJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]mJ]lJ]lJ]lJ]lJ]lJ]lJ]lJ]lI]lI]lI]lI]lI]lI]lI]lI]lI]lI]lI]lI\lI\lI\lI\lI\lI\lI\lI\lI\lI\kI\kI\kI\kI\kI\kI\kI\kI\kI\kI\kI\kI\kI\kH\kH\kH[kH[kH[kH[kH[jH[jH[jH[jH[jH[jH[jH[jH[jH[jH[jH[jH[jH[jH[jH[jHZjHZiCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbCTcCTcCTcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCUcCTcCTcCTcCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbCTbBTbBTbBTbBTbBTbBTbBTbBTbBTbBTbBTbBTbBTbBTbBTbBTaBTaBTaBSaBSaBSaBSaBSaBSaBSaBSaBSaBSaBSaBSaBSaBSaBSaBSaBSaBSaBSaBSaBSaAS`MGRMGRMGRMGRMGRMGSMGSMGSMGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSNGSMGSMGSMGSMGSMGRMGRMGRMGRMGRMGRMGRMGRMGRMGRMGRMGRMGRMGRMGRMFRMFRMFRMFRMFRMFRMFRMFRMFRMFR// Persistence of Vision Ray Tracer Scene Description File // File: ?.pov // Vers: 3.6 // Desc: Basic TTF font Example // Date: mm/dd/yy // Auth: ? // #version 3.6; global_settings { assumed_gamma 1.0 } // ---------------------------------------- camera { location <0.0, 2.0, -6.0> direction 1.5*z right 4/3*x look_at <0.0, 0.0, 0.0> } sky_sphere { pigment { gradient y color_map { [0.0 color blue 0.6] [1.0 color rgb 1] } } } light_source { <0, 0, 0> // light's position (translated below) color rgb <1, 1, 1> // light's color translate <-30, 30, -30> } // ---------------------------------------- #declare Text_Tex = texture { pigment { granite scale 0.5 } finish { specular 0.7 } } text { ttf "crystal.ttf", "Hello", 2, // depth 0 // spacing texture { Text_Tex } rotate <0, -20, 0> translate <-1, 0, -3> } text { ttf "crystal.ttf", "Virtual World!", 1, // depth 0 // spacing scale <1, 2, 1> // stretch it taller texture { Text_Tex } rotate <0, -30, 0> translate <-3, 0, 3> } plane { y, 0 pigment { color rgb <0.7,0.5,0.3> } } // Persistence of Vision Ray Tracer Scene Description File // File: .pov // Vers: 3.6 // Desc: // Date: // Auth: 74com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4 com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4!com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4"com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4#com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4$com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4%com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4&com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4'com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4(com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4)com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4*com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4+com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4,com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4-com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4.com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4/com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari40com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari41com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari42com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari43com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari44com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari45com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari46com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari47com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.SafariT8$com.apple.metadata:kMDItemWhereFromscbplist00_4http://ocean.physics.calpoly.edu/phys141/physics.inc A_49com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4:com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4;com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4<com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4=com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4>com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4?com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4@com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4Acom.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4Bcom.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4Ccom.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4Dcom.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4Ecom.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4Fcom.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4Gcom.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4Hcom.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4Icom.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4Jcom.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4Kcom.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4Lcom.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari8hH(xX8.~^> n N . ~^>nN.4com.apple.quarantine4Mcom.apple.quarantine 4jcom.apple.quarantine4com.apple.quarantine4com.apple.quarantine4com.apple.quarantine4.com.apple.quarantine4fcom.apple.quarantine 4com.apple.quarantine 4com.apple.quarantine4com.apple.quarantine 4com.apple.quarantine 4Kcom.apple.quarantine4hcom.apple.quarantine4com.apple.quarantine4com.apple.quarantine4com.apple.quarantine4com.apple.quarantine4-com.apple.quarantine4ecom.apple.quarantine4com.apple.quarantine4com.apple.quarantine \"t:Rj0H&4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.SafarinN.~^>nN.~^> n N . ~^>nN.// ==== Standard POV-Ray Includes ==== #include "colors.inc" // Standard Color definitions #include "textures.inc" // Standard Texture definitions #include "functions.inc" // internal functions usable in user defined functions <^20 - Orthographic scene.txtbeeʙPʙ 6^30 - Radiosity scene.bmpceeʙPʙ~6^30 - Radiosity scene.txtdeeʙPʙ 2^40 - Photons scene.bmpeeeʙPʙ~2^40 - Photons scene.txtfeeʙPʙ "6^50 - Checkered floor.bmpgeeʙPʙ~ 6^50 - Checkered floor.txtheeʙPʙ(*^60 - Image Map.bmpieeʙPʙ~)*^60 - Image Map.txtjeeʙPʙf1,^70 - Text Fonts.bmpkeeʙPʙ~2,^70 - Text Fonts.txtleeʙPʙ:_^10 - Basic scene.bmp`^10 - Basic scene.txta^20 - Orthographic scene.bmpb^20 - Orthographic scene.txtc^30 - Radiosity scene.bmpd^30 - Radiosity scene.txte^40 - Photons scene.bmpf^40 - Photons scene.txtg^50 - Checkered floor.bmp6x6 d * \,tD (D]J0 - Pattern-Texture attributes̾ʙSʙKA.]K0 - Transformations ྛʙSʙKA] Lights.pove*e*ʙSʙV] Material.pove*e*ʙSʙ ] No_XXX.pove*e*ʙSʙ~] Patterns.pove*e*ʙSʙ 0]Photons_Radiosity.pove*e*ʙSʙ8] Scenes.pove*e*ʙSʙ*t] Shapes.pove*e*ʙSʙX52]Sky_Sphere_Rainbow.pove*e*ʙSʙ ] Transform.pove*e*ʙSʙ ^]00 - Scene templates.^10 - Basic scene.bmp_eeʙPʙ~.^10 - Basic scene.txt`eeʙPʙ<^20 - Orthographic scene.bmpaeeʙPʙ_R ^ $ t`H4// ==== Additional Includes ==== // Don't have all of the following included at once, it'll cost memory and time // to parse! // --- general include files --- #include "arrays.inc" // macros for manipulating arrays #include "chars.inc" // A complete library of character objects, by Ken Maeno #include "consts.inc" // Various constants and alias definitions #include "debug.inc" // contains various macros for debugging scene files #include "logo.inc" // The official POV-Ray Logo in various forms #include "math.inc" // general math functions and macros #include "rad_def.inc" // Some common radiosity settings #include "rand.inc" // macros for generating random numbers #include "shapes.inc" // macros for generating various shapes #include "shapes2.inc" // some not built in basic shapes #include "shapesq.inc" // Pre-defined quartic shapes #include "skies.inc" // Ready defined sky spheres #include "stars.inc" // Some star fields #include "strings.inc" // macros for generating and manipulating text strings #include "sunpos.inc" // macro for sun position on a given date, time, and location on earth #include "transforms.inc" // transformation macros // --- textures --- #include "finish.inc" // Some basic finishes #include "glass.inc" // Glass textures/interiors #include "golds.inc" // Gold textures #include "metals.inc" // Metallic pigments, finishes, and textures #include "stones.inc" // Binding include-file for STONES1 and STONES2 #include "stones1.inc" // Great stone-textures created by Mike Miller #include "stones2.inc" // More, done by Dan Farmer and Paul Novak #include "woodmaps.inc" // Basic wooden colormaps #include "woods.inc" // Great wooden textures created by Dan Farmer and Paul Novak// array manipulation macros // #include "arrays.inc" BM6(xxmkkYYYYYYYYYYYYYYYYYYYYYYYYYYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCCuomkkYYYYYYYYYYYYYYYYYYYYYYYYYYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCCuomkkYYYYYYYYYYYYYYYYYYYYYYYYYYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCCuomkkYYYYYYYYYYYYYYYYYYYYYYYYYYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCCuomkkYYYYYYYYYYYYYYYYYYYYYYYYYYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCCuomkkYYYYYYYYYYYYYYYYYYYYYYYYYYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCCuomkkYYYYYYYYYYYYYYYYYYYYYYYYYYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCCuomkkYYYYYYYYYYYYYYYYYYYYYYYYYYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCCuomkkYYYYYYYYYYYYYYYYYYYYYYYYYYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCCuoڀ{{{{{{{{{{{{{{{{{{{{uoouoouoouoouoouoouoouoouoo||oooooooooooooooooouuuuuuuuuooooooooooooooooooĭuououououououououoњuououououououououo溺ޱӨО“µʯzzzzzzzzzzzzzzzzzzzzzzzzzzzӔkkkkkkkkkkkkkkkkkkkkkkkkkkk溺ޱӨО“µʯzzzzzzzzzzzzzzzzzzzzzzzzzzzӔkkkkkkkkkkkkkkkkkkkkkkkkkkk溺ޱӨО“µʯzzzzzzzzzzzzzzzzzzzzzzzzzzzӔkkkkkkkkkkkkkkkkkkkkkkkkkkk溺ޱӨО“µʯzzzzzzzzzzzzzzzzzzzzzzzzzzzӔkkkkkkkkkkkkkkkkkkkkkkkkkkk溺ޱӨО“µʯzzzzzzzzzzzzzzzzzzzzzzzzzzzӔkkkkkkkkkkkkkkkkkkkkkkkkkkk溺ޱӨО“µʯzzzzzzzzzzzzzzzzzzzzzzzzzzzӔkkkkkkkkkkkkkkkkkkkkkkkkkkk溺ޱӨО“µʯzzzzzzzzzzzzzzzzzzzzzzzzzzzӔkkkkkkkkkkkkkkkkkkkkkkkkkkk溺ޱӨО“µʯzzzzzzzzzzzzzzzzzzzzzzzzzzzӔkkkkkkkkkkkkkkkkkkkkkkkkkkk溺ޱӨО“µʯzzzzzzzzzzzzzzzzzzzzzzzzzzzӔkkkkkkkkkkkkkkkkkkkkkkkkkkkѻƵ¯ܼ♙ٙ♙ٙ♙ٙ♙ٙ♙ٙ♙ٙ♙ٙ♙ٙ♙ٙ濹ý࿹ƾþþþþþþþþ÷÷÷÷÷÷÷÷÷÷ԾԾԾԾԾԾԾԾԾ輵߼߼߼߼߼߼߼߼vvvvvvvvvvvvvvvvvvvvvvvvvvvvv安G͢͢͢͢͢͢͢͢͢Դppppppppppppppppppѫ͢͢͢͢͢͢͢͢͢vvvvvvvvvvvvvvvvvvvvvvvvvvvvv安G͢͢͢͢͢͢͢͢͢Դppppppppppppppppppѫ͢͢͢͢͢͢͢͢͢vvvvvvvvvvvvvvvvvvvvvvvvvvvvv安G͢͢͢͢͢͢͢͢͢Դppppppppppppppppppѫ͢͢͢͢͢͢͢͢͢vvvvvvvvvvvvvvvvvvvvvvvvvvvvv安G͢͢͢͢͢͢͢͢͢Դppppppppppppppppppѫ͢͢͢͢͢͢͢͢͢vvvvvvvvvvvvvvvvvvvvvvvvvvvvv安G͢͢͢͢͢͢͢͢͢Դppppppppppppppppppѫ͢͢͢͢͢͢͢͢͢vvvvvvvvvvvvvvvvvvvvvvvvvvvvv安G͢͢͢͢͢͢͢͢͢Դppppppppppppppppppѫ͢͢͢͢͢͢͢͢͢vvvvvvvvvvvvvvvvvvvvvvvvvvvvv安G͢͢͢͢͢͢͢͢͢Դppppppppppppppppppѫ͢͢͢͢͢͢͢͢͢vvvvvvvvvvvvvvvvvvvvvvvvvvvvv安G͢͢͢͢͢͢͢͢͢Դppppppppppppppppppѫ͢͢͢͢͢͢͢͢͢vvvvvvvvvvvvvvvvvvvvvvvvvvvvv安G͢͢͢͢͢͢͢͢͢Դppppppppppppppppppѫ͢͢͢͢͢͢͢͢͢ƾþþþþþþþþ÷÷÷÷÷÷÷÷÷÷ԾԾԾԾԾԾԾԾԾ輵߼߼߼߼߼߼߼߼ûƾþþþþþþþþ޺زززززززززܿ庲غغغغغغغغ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷޲޲޲޲޲޲޲޲޲vvvvvvvvvvvvvvvvvv߯ƯƯƯƯƯƯƯƯƯyyyyyyyyy憽gggggggggggggggggg̍ggggggggggggggggggçƯƯƯƯƯƯƯƯƯ÷vvvvvvvvv÷vvvvvvvvv֡gagagagagagagagagayyyyyyyyyvvvvvvvvvvvvvvvvvv߯ƯƯƯƯƯƯƯƯƯyyyyyyyyy憽gggggggggggggggggg̍ggggggggggggggggggçƯƯƯƯƯƯƯƯƯ÷vvvvvvvvv÷vvvvvvvvv֡gagagagagagagagagayyyyyyyyyvvvvvvvvvvvvvvvvvv߯ƯƯƯƯƯƯƯƯƯyyyyyyyyy憽gggggggggggggggggg̍ggggggggggggggggggçƯƯƯƯƯƯƯƯƯ÷vvvvvvvvv÷vvvvvvvvv֡gagagagagagagagagayyyyyyyyyvvvvvvvvvvvvvvvvvv߯ƯƯƯƯƯƯƯƯƯyyyyyyyyy憽gggggggggggggggggg̍ggggggggggggggggggçƯƯƯƯƯƯƯƯƯ÷vvvvvvvvv÷vvvvvvvvv֡gagagagagagagagagayyyyyyyyyvvvvvvvvvvvvvvvvvv߯ƯƯƯƯƯƯƯƯƯyyyyyyyyy憽gggggggggggggggggg̍ggggggggggggggggggçƯƯƯƯƯƯƯƯƯ÷vvvvvvvvv÷vvvvvvvvv֡gagagagagagagagagayyyyyyyyyvvvvvvvvvvvvvvvvvv߯ƯƯƯƯƯƯƯƯƯyyyyyyyyy憽gggggggggggggggggg̍ggggggggggggggggggçƯƯƯƯƯƯƯƯƯ÷vvvvvvvvv÷vvvvvvvvv֡gagagagagagagagagayyyyyyyyyvvvvvvvvvvvvvvvvvv߯ƯƯƯƯƯƯƯƯƯyyyyyyyyy憽gggggggggggggggggg̍ggggggggggggggggggçƯƯƯƯƯƯƯƯƯ÷vvvvvvvvv÷vvvvvvvvv֡gagagagagagagagagayyyyyyyyyvvvvvvvvvvvvvvvvvv߯ƯƯƯƯƯƯƯƯƯyyyyyyyyy憽gggggggggggggggggg̍ggggggggggggggggggçƯƯƯƯƯƯƯƯƯ÷vvvvvvvvv÷vvvvvvvvv֡gagagagagagagagagayyyyyyyyyvvvvvvvvvvvvvvvvvv߯ƯƯƯƯƯƯƯƯƯyyyyyyyyy憽gggggggggggggggggg̍ggggggggggggggggggçƯƯƯƯƯƯƯƯƯ÷vvvvvvvvv÷vvvvvvvvv֡gagagagagagagagagayyyyyyyyyȶűűűűűűűűűħħħħħħħħĮȡȡȡȡȡȡȡȡȡ˯驯驯驯驯驯驯驯驯gëgëgëgëgëgëgëgëgëwưyyyyyyyyyyyyyyyyyyꘘyyyyyyyyyݫgëgëgëgëgëgëgëgëgӲؿyyyyyyyyyyyyyyyyyyԢ͢͢͢͢͢͢͢͢gëgëgëgëgëgëgëgëgëwưyyyyyyyyyyyyyyyyyyꘘyyyyyyyyyݫgëgëgëgëgëgëgëgëgӲؿyyyyyyyyyyyyyyyyyyԢ͢͢͢͢͢͢͢͢gëgëgëgëgëgëgëgëgëwưyyyyyyyyyyyyyyyyyyꘘyyyyyyyyyݫgëgëgëgëgëgëgëgëgӲؿyyyyyyyyyyyyyyyyyyԢ͢͢͢͢͢͢͢͢gëgëgëgëgëgëgëgëgëwưyyyyyyyyyyyyyyyyyyꘘyyyyyyyyyݫgëgëgëgëgëgëgëgëgӲؿyyyyyyyyyyyyyyyyyyԢ͢͢͢͢͢͢͢͢gëgëgëgëgëgëgëgëgëwưyyyyyyyyyyyyyyyyyyꘘyyyyyyyyyݫgëgëgëgëgëgëgëgëgӲؿyyyyyyyyyyyyyyyyyyԢ͢͢͢͢͢͢͢͢gëgëgëgëgëgëgëgëgëwưyyyyyyyyyyyyyyyyyyꘘyyyyyyyyyݫgëgëgëgëgëgëgëgëgӲؿyyyyyyyyyyyyyyyyyyԢ͢͢͢͢͢͢͢͢gëgëgëgëgëgëgëgëgëwưyyyyyyyyyyyyyyyyyyꘘyyyyyyyyyݫgëgëgëgëgëgëgëgëgӲؿyyyyyyyyyyyyyyyyyyԢ͢͢͢͢͢͢͢͢gëgëgëgëgëgëgëgëgëwưyyyyyyyyyyyyyyyyyyꘘyyyyyyyyyݫgëgëgëgëgëgëgëgëgӲؿyyyyyyyyyyyyyyyyyyԢ͢͢͢͢͢͢͢͢gëgëgëgëgëgëgëgëgëwưyyyyyyyyyyyyyyyyyyꘘyyyyyyyyyݫgëgëgëgëgëgëgëgëgӲؿyyyyyyyyyyyyyyyyyyԢ͢͢͢͢͢͢͢͢uuuuuuuuuuuuuuuuuuύύύύύύύύύإύύύύύύύύύ޳ήѽѽѽѽѽѽѽѽѽۭuuuuuuuuuoooooooooGGggggggggggggggggggύgggggggggggggggggg֡ŕvvvvvvvvvvvvvvvvvvʷƯƯƯƯƯƯƯƯƯ֔oGGggggggggggggggggggύgggggggggggggggggg֡ŕvvvvvvvvvvvvvvvvvvʷƯƯƯƯƯƯƯƯƯ֔oGGggggggggggggggggggύgggggggggggggggggg֡ŕvvvvvvvvvvvvvvvvvvʷƯƯƯƯƯƯƯƯƯ֔oGGggggggggggggggggggύgggggggggggggggggg֡ŕvvvvvvvvvvvvvvvvvvʷƯƯƯƯƯƯƯƯƯ֔oGGggggggggggggggggggύgggggggggggggggggg֡ŕvvvvvvvvvvvvvvvvvvʷƯƯƯƯƯƯƯƯƯ֔oGGggggggggggggggggggύgggggggggggggggggg֡ŕvvvvvvvvvvvvvvvvvvʷƯƯƯƯƯƯƯƯƯ֔oGGggggggggggggggggggύgggggggggggggggggg֡ŕvvvvvvvvvvvvvvvvvvʷƯƯƯƯƯƯƯƯƯ֔oGGggggggggggggggggggύgggggggggggggggggg֡ŕvvvvvvvvvvvvvvvvvvʷƯƯƯƯƯƯƯƯƯ֔oGGggggggggggggggggggύgggggggggggggggggg֡ŕvvvvvvvvvvvvvvvvvvʷƯƯƯƯƯƯƯƯƯ֔oǰuǰuǰuǰuǰuǰuǰuǰuǰu˵۾CCCCCCCCC[CCCCCCCCC|̄̄̄̄̄̄̄̄̄خwwwwwwwwwƿٷuuuuuuuuuٷȔëgëgëgëgëgëgëgëgëgǰuٹCoyyyyyyyyy֩gggggggggúزgggggggggزʼnëgëgëgëgëgëgëgëgëgǰuٹCoyyyyyyyyy֩gggggggggúزgggggggggزʼnëgëgëgëgëgëgëgëgëgǰuٹCoyyyyyyyyy֩gggggggggúزgggggggggزʼnëgëgëgëgëgëgëgëgëgǰuٹCoyyyyyyyyy֩gggggggggúزgggggggggزʼnëgëgëgëgëgëgëgëgëgǰuٹCoyyyyyyyyy֩gggggggggúزgggggggggزʼnëgëgëgëgëgëgëgëgëgǰuٹCoyyyyyyyyy֩gggggggggúزgggggggggزʼnëgëgëgëgëgëgëgëgëgǰuٹCoyyyyyyyyy֩gggggggggúزgggggggggزʼnëgëgëgëgëgëgëgëgëgǰuٹCoyyyyyyyyy֩gggggggggúزgggggggggزʼnëgëgëgëgëgëgëgëgëgǰuٹCoyyyyyyyyy֩gggggggggúزgggggggggزʼnՐӐӐӐӐӐӐӐӐxxxxxxxxxx뇶܇܇܇܇܇܇܇܇ܒ۔۔۔۔۔۔۔۔۝פפפפפפפפפ޵ييييييييي̆̆̆̆̆̆̆̆ݮ̈́̈́̈́̈́̈́̈́̈́̈́̈́ӅххххххххhhhhhhhhhhzzzzzzzzzۇڊڊڊڊڊڊڊڊڔԞԞԞԞԞԞԞԞԞܰ׀׀׀׀׀׀׀׀׀߬yyyyyyyyyʿ۩yyyyyyyyy뼧vvvvvvvvvӅххххххххhhhhhhhhhhzzzzzzzzzۇڊڊڊڊڊڊڊڊڔԞԞԞԞԞԞԞԞԞܰ׀׀׀׀׀׀׀׀׀߬yyyyyyyyyʿ۩yyyyyyyyy뼧vvvvvvvvvӅххххххххhhhhhhhhhhzzzzzzzzzۇڊڊڊڊڊڊڊڊڔԞԞԞԞԞԞԞԞԞܰ׀׀׀׀׀׀׀׀׀߬yyyyyyyyyʿ۩yyyyyyyyy뼧vvvvvvvvvӅххххххххhhhhhhhhhhzzzzzzzzzۇڊڊڊڊڊڊڊڊڔԞԞԞԞԞԞԞԞԞܰ׀׀׀׀׀׀׀׀׀߬yyyyyyyyyʿ۩yyyyyyyyy뼧vvvvvvvvvӅххххххххhhhhhhhhhhzzzzzzzzzۇڊڊڊڊڊڊڊڊڔԞԞԞԞԞԞԞԞԞܰ׀׀׀׀׀׀׀׀׀߬yyyyyyyyyʿ۩yyyyyyyyy뼧vvvvvvvvvӅххххххххhhhhhhhhhhzzzzzzzzzۇڊڊڊڊڊڊڊڊڔԞԞԞԞԞԞԞԞԞܰ׀׀׀׀׀׀׀׀׀߬yyyyyyyyyʿ۩yyyyyyyyy뼧vvvvvvvvvӅххххххххhhhhhhhhhhzzzzzzzzzۇڊڊڊڊڊڊڊڊڔԞԞԞԞԞԞԞԞԞܰ׀׀׀׀׀׀׀׀׀߬yyyyyyyyyʿ۩yyyyyyyyy뼧vvvvvvvvvӅххххххххhhhhhhhhhhzzzzzzzzzۇڊڊڊڊڊڊڊڊڔԞԞԞԞԞԞԞԞԞܰ׀׀׀׀׀׀׀׀׀߬yyyyyyyyyʿ۩yyyyyyyyy뼧vvvvvvvvvӅххххххххhhhhhhhhhhzzzzzzzzzۇڊڊڊڊڊڊڊڊڔԞԞԞԞԞԞԞԞԞܰ׀׀׀׀׀׀׀׀׀߬yyyyyyyyyʿ۩yyyyyyyyy뼧vvvvvvvvvzzzzzzzzzYYYYYYYYYYaaaaaaaaaqYYYYYYYYYzzzzzzzzzYYYYYYYYYYaaaaaaaaaqYYYYYYYYYzzzzzzzzzYYYYYYYYYYaaaaaaaaaqYYYYYYYYYzzzzzzzzzYYYYYYYYYYaaaaaaaaaqYYYYYYYYYzzzzzzzzzYYYYYYYYYYaaaaaaaaaqYYYYYYYYYzzzzzzzzzYYYYYYYYYYaaaaaaaaaqYYYYYYYYYzzzzzzzzzYYYYYYYYYYaaaaaaaaaqYYYYYYYYYzzzzzzzzzYYYYYYYYYYaaaaaaaaaqYYYYYYYYYzzzzzzzzzYYYYYYYYYYaaaaaaaaaqYYYYYYYYYzzzzzzzzzYYYYYYYYYYaaaaaaaaaqYYYYYYYYYzzzzzzzzzhnhnhnhnhnhnhnhnhnhnCCUzUzUzUzUzUzUzUzUzkkkkkkkkk]]]]]]]]]ΊۦѦѦѦѦѦѦѦѦzzzzzzzzzhnhnhnhnhnhnhnhnhnhnCCUzUzUzUzUzUzUzUzUzkkkkkkkkk]]]]]]]]]ΊۦѦѦѦѦѦѦѦѦzzzzzzzzzhnhnhnhnhnhnhnhnhnhnCCUzUzUzUzUzUzUzUzUzkkkkkkkkk]]]]]]]]]ΊۦѦѦѦѦѦѦѦѦzzzzzzzzzhnhnhnhnhnhnhnhnhnhnCCUzUzUzUzUzUzUzUzUzkkkkkkkkk]]]]]]]]]ΊۦѦѦѦѦѦѦѦѦzzzzzzzzzhnhnhnhnhnhnhnhnhnhnCCUzUzUzUzUzUzUzUzUzkkkkkkkkk]]]]]]]]]ΊۦѦѦѦѦѦѦѦѦzzzzzzzzzhnhnhnhnhnhnhnhnhnhnCCUzUzUzUzUzUzUzUzUzkkkkkkkkk]]]]]]]]]ΊۦѦѦѦѦѦѦѦѦzzzzzzzzzhnhnhnhnhnhnhnhnhnhnCCUzUzUzUzUzUzUzUzUzkkkkkkkkk]]]]]]]]]ΊۦѦѦѦѦѦѦѦѦzzzzzzzzzhnhnhnhnhnhnhnhnhnhnCCUzUzUzUzUzUzUzUzUzkkkkkkkkk]]]]]]]]]ΊۦѦѦѦѦѦѦѦѦzzzzzzzzzhnhnhnhnhnhnhnhnhnhnCCUzUzUzUzUzUzUzUzUzkkkkkkkkk]]]]]]]]]ΊۦѦѦѦѦѦѦѦѦx{x{x{x{x{x{x{x{x{x{CCCCCCCCCCCCCCCCCC[[jjjjjjjjj{{{{{{{{{nnnnnnnnnДܭӭӭӭӭӭӭӭӭ// Standard pre-defined colors // #include "colors.inc" // various numerical constants // #include "consts.inc" BM6(xx뭥RRRPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPRRR뭥RRRPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPRRR뭥RRRPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPRRR䆁PPPQQQQQQSSSSSSSSSSSSSSSRRRQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP䆁PPPQQQQQQSSSSSSSSSSSSSSSRRRQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP䆁PPPQQQQQQSSSSSSSSSSSSSSSRRRQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPqnnSSSVVVXXXZZZ\\\]]]]]]\\\[[[ZZZXXXVVVUUUSSSQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPqmmqnnSSSVVVXXXZZZ\\\]]]]]]\\\[[[ZZZXXXVVVUUUSSSQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPqmmqnnSSSVVVXXXZZZ\\\]]]]]]]]]\\\ZZZXXXWWWUUUSSSQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPqmmrnnWWW]]]bbbeeefffggghhhhhhgggfffeeecccaaa^^^[[[XXXUUUSSSQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPqmmrnnWWW]]]bbbeeefffggghhhhhhgggfffeeecccaaa^^^[[[XXXUUUSSSQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPqmmrnnWWW]]]bbbeeeggghhhhhhhhhhhhgggfffdddbbb___\\\YYYVVVSSSQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPqmm눃___fffjjjmmmooopppqqqqqqqqqpppooonnnllljjjhhheeebbb___[[[WWWSSSQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP눃___fffjjjmmmooopppqqqqqqqqqpppooonnnllljjjhhheeebbb___[[[WWWSSSQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP눃___fffjjjnnnpppqqqrrrrrrrrrrrrqqqpppnnnllljjjgggddd```\\\WWWTTTQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPﯨdddlllqqqtttvvvxxxyyyyyyyyyyyyxxxwwwvvvtttrrrpppnnnkkkhhhddd```\\\WWWSSSQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPﯧdddlllqqqtttvvvxxxyyyyyyyyyyyyxxxwwwvvvtttrrrpppnnnkkkhhhddd```\\\WWWSSSQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPﯧdddlllqqquuuwwwyyyzzz{{{{{{{{{{{{zzzyyywwwuuussspppmmmjjjfffbbb]]]WWWTTTQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPiiiqqqwwwzzz}}}~~~~~~}}}{{{yyywwwuuussspppllliiieee```[[[VVVRRRPPPPPPPPPPPPPPPPPPPPPPPPRRRfffqqqwwwzzz}}}~~~~~~}}}{{{yyywwwuuussspppllliiieee```[[[VVVRRRPPPPPPPPPPPPPPPPPPPPPPPPRRRfffqqqwww{{{}}}~~~|||yyyvvvsssoookkkgggbbb\\\WWWRRRPPPPPPPPPPPPPPPPPPPPPPPPRRR싇uuu{{{~~~|||yyywwwtttppplllhhhddd^^^XXXSSSQQQPPPPPPPPPPPPPPPPPPPPP}yy}}uuu{{{~~~|||yyywwwtttppplllhhhddd^^^XXXSSSQQQPPPPPPPPPPPPPPPPPPPPP}yy}}uuu{{{{{{xxxtttpppkkkfff```YYYTTTQQQPPPPPPPPPPPPPPPPPPPPPvvv~~~}}}zzzwwwssspppkkkgggaaa[[[UUUQQQPPPPPPPPPPPPPPPPPPPPPhhh~~~}}}zzzwwwssspppkkkgggaaa[[[UUUQQQPPPPPPPPPPPPPPPPPPPPPhhh~~~|||xxxsssnnniiiccc\\\VVVRRRPPPPPPPPPPPPPPPPPP}}}zzzvvvrrrnnniiiccc]]]VVVRRRPPPPPPPPPPPPPPPPPP||||zzz}}}zzzvvvrrrnnniiiccc]]]VVVRRRPPPPPPPPPPPPPPPPPP||||zzz{{{vvvqqqkkkeee^^^VVVRRRPPPPPPPPPPPPPPP|||xxxtttooojjjeee^^^WWWRRRPPPPPPPPPPPPPPPPPPWWW|||xxxtttooojjjeee^^^WWWRRRPPPPPPPPPPPPPPPPPPWWW~~~xxxsssmmmfff___WWWRRRPPPPPPPPPPPPカ~~~zzzuuuqqqlllfff___WWWRRRPPPPPPPPPPPPPPPddd~~~zzzuuuqqqlllfff___WWWRRRPPPPPPPPPPPPPPPeeezzztttnnnggg```WWWRRRPPPPPPPPP{{{vvvrrrlllfff^^^WWWRRRPPPPPPPPPPPPrrr{{{vvvrrrlllfff^^^WWWRRRPPPPPPPPPPPPsss{{{uuunnnggg___VVVRRRPPPPPP䋋|||wwwrrrllleee]]]UUUQQQPPPPPPPPP~~~|||wwwrrrllleee]]]UUUQQQPPPPPPPPP~~~{{{uuunnnggg^^^VVVQQQPPP֑þ|||wwwrrrkkkddd\\\TTTPPPPPPPPP|||wwwrrrkkkddd\\\TTTPPPPPPPPP{{{tttmmmeee\\\TTTPPPʖ½|||wwwqqqjjjbbbYYYRRRPPPPPP|||wwwqqqjjjbbbYYYRRRPPPPPP¾zzzssskkkcccYYYRRRſ{{{vvvooohhh___UUUQQQPPP{{{vvvooohhh___UUUQQQPPPxxxqqqiii___VVVzzztttmmmeeeZZZRRRPPPzzztttmmmeeeZZZRRRPPPþ}}}vvvnnneee[[[Ġ~~~xxxqqqjjj```VVVPPP~~~xxxqqqjjj```VVVPPPľzzzsssjjj```ţ|||uuunnneeeYYYRRR|||uuunnneeeYYYRRRýwwwoooeeeϤžyyyrrriii^^^TTTyyyrrriii^^^TTT»{{{sssiiiۦú|||uuummmbbbVVV|||uuummmbbbVVVƿ~~~vvvmmm榦ǿxxxpppeeeWWWxxxpppeeeWWWûyyypppﳱù{{{rrrgggYYY{{{rrrgggYYYƾ{{{rrrȯƼ}}}tttiiiZZZ}}}tttiiiZZZ}}}ttt߮ȿ~~~vvvjjjYYYݻ~~~vvvjjjYYY»vvvvvvjjjԽvvvjjjüvvv׳vvvhhh׳vvvhhh׵ļvvvuuuuuuüuuuߵȿrrrߵrrrุ»rrr̸Ƽ|||̸|||ͼ|||¸¿ž龽ǽ龽»翾翾ľüüſϻƿ___ϻ___пĿ___zzz___PPP}yyzzz___PPP}yy½{{{___PPP}yyΡyyykkk[[[SSSSSSSSSSSS||Ρ}}}tttgggYYYPPPPPPPPPPPP||΢xxxjjjZZZPPPPPPPPPPPP||DžUUUVVVXXXXXXWWWUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUDžSSSUUUUUUUUUUUUSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS€||PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP||֖jiiiiipppuuuyyy{{{|||zzzyyyuuupppkkkddd]]]VVVUUUUUUUUUUUU]\\֕jiigggiiijjjkkkkkkjjjiiiiiifffdddaaa]]]ZZZVVVUUUUUUUUUUUU]\\}yyPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP}yy뺲}yyrppjjjooouuuyyy{{{}}}~~~~~~}}}|||{{{yyyvvvsssooofff]]]WWWUUUUUUkii}yy뺲}yyrpphhhjjjkkkkkkkkkkkkllllllkkkjjjjjjiiihhhhhhfffbbb]]]WWWUUUUUUigg}yy뭥RRRPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPRRR杗|yy}yysqqlllrrrwwwzzz|||}}}~~~}}}}}}|||zzzxxxuuurrrnnniiieeeccc[[[YYYZYYron|yx杗|yxsppeeekkklllmmmmmmmmmmmmllllllkkkjjjjjjiiiiiihhhgggfffdddccc[[[YYYZYYhddyuu䆁PPPQQQQQQSSSSSSSSSSSSSSSRRRQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPᏊ~zz}|~~xwwvvvzzz}}}~~~}}}zzzxxxuuurrrnnnjjjfffdddbbbbbbbbbddd]]]dbbzvvፉ{xxgee\\\___iiissstttttttttsssqqqpppnnnmmmkkkiiiiiihhhgggeeedddbbbbbb```fff^^^]\\yuuqnnSSSVVVXXXZZZ\\\]]]]]]\\\[[[ZZZXXXVVVUUUSSSQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPqmm搋}}~~~|||yyyuuuqqqmmmiiieeeeddjhhbbbeeegggggggggbbb]\\xut揊~{zhggfffjjjlllmmmooouuu}}|{{{yyyxxxuuusssooollljjjgggdddeddjhhbbbhhhmmmnnnlllddd]\\xutrnnWWW]]]bbbeeefffggghhhhhhgggfffeeecccaaa^^^[[[XXXUUUSSSQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPqmm럙~}|{y}xv{usxrpxqnyqmztpnkjhhhiiiiiiiiihhhddd___{ww럙poonnntttxxxyyyyyywww~}~}{{y}xv{usxrpxqnyqmztpnkjkkkqqquuutttqqqhhh`__{ww눃___fffjjjmmmooopppqqqqqqqqqpppooonnnllljjjhhheeebbb___[[[WWWSSSQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPT~~{{xxu|urzrowpmjihjjjjjjjjjjjjhhheeegfe|yxT{zztttyyy~~{{xxu|urzrowpmlkjqqqxxxzzzyyyrrriiigff|yxﯧdddlllqqqtttvvvxxxyyyyyyyyyyyyxxxwwwvvvtttrrrpppnnnkkkhhhddd```\\\WWWSSSQQQPPPPPPPPPPPPPPPPPPPPPPPPPPP׌~~{{x~wt{tquolnlkkkkkkkkkkjjjhhh\\\spp}yy֊zzz}}}~~{{x~wt{tqvqnrpowww||||||yyyppp^^^spp}yyfffqqqwwwzzz}}}~~~~~~}}}{{{yyywwwuuussspppllliiieee```[[[VVVRRRPPPPPPPPPPPPPPPPPPPPPPPPRRR~}{yw}urupnomlllllllkkkiiiXXX^]]nkk혓~}{yw}urxrpusryyy|||zzztttYYY]\\lii}}uuu{{{~~~|||yyywwwtttppplllhhhddd^^^XXXSSSQQQPPPPPPPPPPPPPPPPPPPPP͖}{ywtwqopnmlllkkkgggVVVXXXXXXb``yxx}{ywtytqvtswwwxxxqqqUUUVVVVVV]\\hhh~~~}}}zzzwwwssspppkkkgggaaa[[[UUUQQQPPPPPPPPPPPPPPPPPP}zyvyspnllkkkdddZZZ[[[XXXWWW}zyvysqtrqrrrhhhWWWXXXWWWUUU||zzz}}}zzzvvvrrrnnniiiccc]]]VVVRRRPPPPPPPPPPPPPPP۝~|zwxrplllccc^^]^^^[[[XXXVVV\\\~|zw{uqronbbbZZZ[[[ZZZWWWUUUXXX|||xxxtttooojjjeee^^^WWWRRRPPPPPPPPPPPP|zwwutgffa``a`````\\\VVVhhh|{wxuedd\\\]]]]]]YYYUUUeee~~~zzzuuuqqqlllfff___WWWRRRPPPPPPPPPﯪ}zxhgfdcccbbccc^^^VVVvvv}{wdcc```______ZZZUUUsss{{{vvvrrrlllfff^^^WWWRRRPPPPPP榣|onmihhfedeedaaaYYY|jjjdddaaa```^^^XXX~~~|||wwwrrrllleee]]]UUUQQQPPP۫vuuonnihheedccc\\\rrrkkkeeebbbaaa[[[|||wwwrrrkkkddd\\\TTTPPPү|{{uttnmmgffccc]]]xxxrrrjjjdddbbb]]]|||wwwqqqjjjbbbYYYRRR˳{zztsskjjddd___~~~xxxpppgggddd___{{{vvvooohhh___UUU̵yxxpoofffaaa}}}vvvmmmfffaaazzztttmmmeeeZZZθÿÿÿÿþ¾~}}uttiiicccÿÿþ¾zzzrrrhhhccc~~~xxxqqqjjj```κĿÿ¾yyymmmeeeĿÿ¾wwwmmmddd|||uuunnneeeּÿ¾}}}qqqfffÿ¾zzzqqqfffyyyrrriii߽ÿ¾vuuhhhÿ¾~~~ttthhh|||uuummm轻ÿ½yxxjjjÿ½wwwjjjxxxpppÿ¾{{{lllÿ¾yyylll{{{rrr¾~}}mmm¾{{{lllƹ}}}tttþlllþ{{{kkk꿿~~~vvvÿÿ{{{vvvþ~~ܺþ{{{׳ľvvv¾¾uuuÿÿߵrrr¾»¾º̸|||龽¿翾¿üϻ___rqp|yxzzz___PPP}yy¾Գzyynmma``XWWXXXWWWVVVΡ}}}tttgggYYYPPPPPPPPPPPP||條tqqdcckjjqnmsnmlffkfekeekeejedidcjecifegffcccrpozsqussuuuvvvwvvuuusqpױÿ{{{vqq벪sqponn¾蛕~yxx|{{xxwÿ럙ɿվ𸰰ûٛɾüۻ𻵴ȿ¿sss쮫¾嶳½ſĿĿĿĿſĿÿ¾¾¾¾¾¾ÿĿĿ¾¾ĿĿ¾ݿܾܾܾܾݿ¾ĿĿ¾ݿܾܽ۽۽۽۽ܾܽݿ¾Ŀÿܾ۽ۼڼڻڻڼۼ۽ܾÿſ¾ݿܽۼڻٻٻٻٻڻۼܽݿ¾ſĿ¾ܾ۽ڼٻٺٺٺٺٻڼ۽ܾ¾ĿĿ¾ܾ۽ڻٻٺغغٺٻڻ۽ܾ¾ĿĿ¾ܾ۽ڻٻٺغغٺٻڻ۽ܾ¾ĿĿ¾ܾ۽ڼٻٺٺٺٺٻڼ۽ܾ¾Ŀſ¾ݿܽۼڻٻٻٻٻڻۼܽݿ¾ſÿܾ۽ۼڼڻڻڼۼ۽ܾÿĿ¾ݿܾܽ۽۽۽۽ܾܽݿ¾ĿĿ¾ݿܾܾܾܾݿ¾ĿĿ¾¾ĿĿÿ¾¾¾¾¾¾ÿĿſĿĿĿĿſ// some standard finishes #include "finish.inc" finish { Dull // large, soft highlight //Shiny // small, tight highlight //Phong_Dull // less "realistic" but sometimes useful phong highlight //Phong_Shiny // same in "shiny" //Glossy // very tight highlights and some reflection //Phong_Glossy // phong version of the same //Luminous // totally ambient not influenced by light sources (for example sky) //Mirror // perfect mirror without highlights } // internal functions usable in user defined functions // for example for isosurfaces and function pattern #include "functions.inc" h^50 - Checkered floor.txti^60 - Image Map.bmpj^60 - Image Map.txtk^70 - Text Fonts.bmpl^70 - Text Fonts.txtm] 10 - Headers:m10 - Scene File Header.txtneeʙPʙy;:m20 - Standard includes.txtoeeʙPʙ<>m30 - Additional includes.txtpeeʙPʙ7=nm10 - Scene File Header.txtom20 - Standard includes.txtpm30 - Additional includes.txtq]20 - Include files&q'arrays.inc'.txtreeʙPʙ:>&q'colors.inc'.bmpseeʙPʙ ? &q'colors.inc'.txtteeʙPʙ;J&q'consts.inc'.txtueeʙPʙ<K&q'finish.inc'.bmpveeʙPʙ L &q'finish.inc'.txtweeʙPʙ>W,q'functions.inc'.txtxeeʙPʙX$q'glass.inc'.bmpyeeʙPʙ Y  bB"<V,PBM6(xx̾ƺƺ̾μ¿ƾĿĿ¿Ӿƾؿ˾Ϳʽ˾ƺƺ˾̿˿˾˾ɼʽͿԿ˿Ϳʼʼ̿÷ɼɼοȻȻ̾˾ʼ̾ƺ̿˾ͿȻȻοǺǺ˽ʽο;;ʼ˽ȼ˾ο̾οʽʼȻʾʽ;ȻǺ̾ɽ˾ʼɻʽͿʼʼ¶ʽɽɼȻǺ̾ɽ˾ʼɻʽͿ;ʼʼ¶ʽɼ;οʽʼȻ˾˾ɼͿ̿Ȼ˾˾ʽʼʼοɼ̿˾̾˾̾˽ƺ̿ʾ¶ʼʽҾԸɽο¶Ĵ̿Ⱥվ׼ɽĿѸ˾ʽɼʼʼʽ˾̿޺ڹͺ˷ϼſɿ˾ɽɼȻȻɼɽ˿߻½½̶ʱ˴տ˵ŮŭŵɿȽȽɿ÷ԵճճԵ߷ݰݯܬګ۬߰ɿȾƼƼ᰽߬ޫ߫ݨިûĻ侶߸ܴڱڱ޶徶ǿ̼Ķŷ¾᯺ީިݦާߧަަᨽ伷۲ܲܲ۱۰گ۰ݲᶰ龸ɽ´Ȼõöŷǹʾõ㯻સާަݥݤޤߥ᧺媿Ŀ羺仸߶޳޳ܰڮۮܯޱᴮ輵úƼɻ̾Ϳοý䱿㮾㭼⫺਷ߦߥޤߥॸᦺ䩾¾潹廸廷漷龸軵湳帲䷱帲纴뽶üǽüż¼¾䱿㮽⬻⪹৸ߦߥߥߤߤॷᦹ㧻婾꯼䫽߬Ŀ潹弸漸缸輶軵軴躴躳躴躴黵뽶ü齷亴濺üǾ¼ÿ䱿㮽⬻⪹৷ߥߤߤޣޣޣߣߤ᥸⦺䨼檽竻檹䩸ᨷܦ羺弸漸缸輶軴躴繳繲縲縲繲蹳麴꼵쾷¼鼷平യߵż㯾㭻⪹৷ߥߤޣޣޢޢޢޢޢߣष᥸⧺䨺䩹㨶ߥܥܨ㺴廷輸輶軴纳繳繲縲淲深深縲繳麴껵꼶쾷쿹湴޲۱ḳǻ¹ź䱿㮼⫹৷ߥߤޣޢޢݡݡݡݡޡޢߢߣषᦹ⧺⩹ᨵܤۥݬܾĶ㼴罸鼶軴纳繲縲縲深深涱涱深緲縲蹳躴黵꽶꾸缶ݲ۲ýƻذ¿㯽㬺᩸ߦߤޣݢޢܠ۟ݠ֛֛ݠݡޡޢߣߤॸ৷ߦݤܥުڮȵų²俳鼵躴繳己淲䶰㴯嵰ᳮ⴮涰ಭ⴯縲繳躴黴鼵꾹ᶰ޴伷ڿȺ¼䲿㮼⫹৲ۢЙ՜ʔЗʓǐ˓ŏŏ՚ݠݡޡޢߣߤॷߥݤܥުܬDzIJ㾲漳軴繳ݳϪլϩ̧Ӫ̧̧ҩɥ˧⴯縲蹳躳軴纴ⶰߴ澹ѹʼ䱾㭻᩸নқƒƒĐƑʒÎ՚ݠݠݡޡޢߣߥޤݣܤݧܫ׼пƱò㿲漳躴繲ԭ̨̧ɤǣҩǣȣѨǣɥಭ淲縲繳躴軴മ޳⹴ɵ̽þ䰾㭻᩸ߦןʕ֜ďܠʒ˓ܞǐȐܟܟݠݠݡޢޣߤޤܣܤݦܩѮȲű±⿱弳躳縲޲ʦ䵰ѩҩ䴯ϧϧ䴯ϧШ嶰深淲縲躳繳ܱ߳޵ۼÿÿ´;߾㰽㭺᩷ߦқőʔÎȒŏǐҗܟݟݠݡޢޣߤޤܣܤܥܩҬǰı±⿱弲纳縲֮ȥШʦȣϧǣǣǢǢǣܰ涱深縲纳湳߲۰ܳ໶ں´;޷㰽㭺᩷ߦқőʔŽȑŏǐҗܟݟݠݡޢޣߤޤܣܤܥܩҬǰı±⿱弲纳縲֮ǤШʥȣϧǣǣǢǢǣܰ涱深縲纳湳߲۰ܳ໶ں´;޷䰾㭻᩸ߦ٠˖՜ď۟ɒɒܞǐɑܟܟݠݠݡޢޣߤޤܣܤݦܩѮȲű±⿱弳躳縲߳˦嵰ШѨ䴯ǢǢ䴯ШЩ嶰深淲縲躳繳ܱ߳޵ۼ¾ÿô;߾䱾㭻᩸঩ӜÐőώɑŏȐ֚ݟݠݠݡޢޣߥޤܣܤݧܪ׽пƱò⿱漳躴繲ׯʧΧȤǣϧǢǢШʥͨ೭深縲繲躴軴മ޳⹴ʵοƿÿ䲿㮼⫹৳ܣŒЙÏʓɒɑɑ֛ݠݠݡޢޣߤߥޥݤܥݨ۫dzij㾲漳軴繳ߴʧԬ˨ɦϨǣǣϨ˦Ω⴯縲縲繳軴纵ᵰߵ彸ӽ˼㯽㬺ᩱ١ĒΘ֝ᳩџ۟ȒʓݠݠݡޢޢޣߤߦަݥܥݪگɶŴ³俳鼵躴ᵯʧ件߽嶱ͧΧ䵰֭ͧ緲縲繳躴纵㷶඲߶濺¼˼ſ䱿㮼⫷ަʖȔÐȗĚՎƑٞݡޢޢޣߤߥߦަܥܦݬܾŶ彴齷꽶軴ߴͪٸΫʧ˧˦ʦЫ渲繲纳軴滵⹶߸ݶôɼܸܺ㯾㭻⪸ߦߥ֞؟ܦӞםјјܡޢޣޣߤߥߦߧާݧޫ忸漴齷꾸齶軴ߵ乳Ŀܹ޳ӬӬ߳ׯߴ繳纳軴缵彷ί߻Ͽ;Ž޳߯㮽㬻⪹৷ߥߤߤޣޣޣޣޣޣߤߤߥߦߧߨީޫ潷齷꽷꽷鼵軴躴躴躳縲縲縲縲繲繳躴軴缵佷⿹㼻֭ܭ᭽㬻⪹৸ߦߥߥߤߤߤߤߥߥߦ৹ߨߨߩު޾㽶纵鼶鼶鼵鼵軴躴躳纳纳躳躴軴鼵轶徸⿹㻿լک߫⬼⫹ਸߦ৸ষߦߦস৹৺਺੹ߩީ߫ྸܰ⵱軵輶軵軵绵湴湴纴绵輵羷⽸¼ľۯܩ⮽⬻੺਺਺ਹ৹৺਺੻੼᪼઻ީ߬ݯ嶰㳭䶱湴溶湵临帴幵湵滵廵Ṵ༷Ⱥȹ̾紸ॾ૾૽઼੼੻੻੼੽ઽા૿踱޲޲㶲乵乵丵丵乵乵乵亵ߵع߿˿ȼȽޯ୿૾߫ߪߪ૿߰ҷԷ㹵㹵㹶㹶㹵㹶㹶⸴Ļǽ˼ŴŵȽƾ޳ݮޭݬܫܫݬޭݮݳ޶෴෴ݶݶ෴Ḵ߸ƻ;ȾȻɻ¹ԳձձԳյӱӱյɼǼͽͽҾӾӾҾڹڷڷڹԽʻʻ˾ܸٴشֲֲݷܷ޺÷·ùøøƼǼ̿ƿгίūԷȹŮļƹػҹѴ̭ȨĨů̻ʽĿĿĿּ޵ȷ;ܹΧ°ȯȫƨġǰϾÿÿɰǰŴ̼ġƮīêêĭƱɸͻӮƥïDzʬƪũŪƭʴ˸ͱȱijıͷʴȲưƱɳͷҼɶȸ³ʼ泼İӿӿھܹͦ˯ȽнϻϺϻоï˸ͱȲijͺ͸ηͶ̶̵̶ͷθѻվϼƽţֿֿֿӦɾҾѾннмнѾƲ̹ʱȲijʺθ̶˴ʳɳɳɳʳ˵ͷϹҼӽIJޣ־ּ׻׻׻ؼؽξܭƠǽѾнмлϺϺϻлѽűɶ̹þɳŴʺη˵ʴɲDZDZDZDZDZȲʴ˵ͷклƲö㰽տֽ׻عظظظعٺټپ۸΢ñʽѾммлѺйϹϹϺлѽ¯ıƲ˺;;ӻŽλθ˵ɳȲDZưůůůŰưDZɳʴͶϹл̹͑տּ׺ظطٶٵٶٶٷٹٺٽ׸Юդ³ʾомллѺѹѹиϸййѻҼӾ®İʻ˽;ٿٿҼϹ̶ʴȲưůįĮĮĮĮůŰDZȲʴͷϹϾƽԭþֽ׺ظضٵٴڴڴڴڵڶٸٺؽۺշԴýֳѬǭǯƽϽмлѺѹииззиийѺҼҽӿƴʼ̽ؿӼйη˴ɲDZůĮîííííîįŰDZɳ˵θϺ⼿éվֻظضٴڳڲڲڲڲڳڴڶٸٻؾոָշڵ޶ӰЫǰȽϾмлѺѹиззжϷзѸѸйѺѼҽ¯ʻ˼οؾһϸͶʳDZưįîí­­­­íîįưȲʳͶͷ϶ּ׹طٵٳڲڱ۱۱۱۲۳ڵڷٹؼնַַխӴի˧īƼϽлϺйѸзж϶϶϶зѷѷийѻѽҿȷ˼;ۿؽּѺη̵ɳůĮ¬ĮůDZɳ̵˵ȳ—ӿֻ׸ضٴڬԫհ۬֬װۭׯ׳ٯҶֻ׿ֿյֵԱЩʲ˱ȳեƤ©ŻμкϹйиз϶ϵϰɱʵϳ̴ͷ϶ιкϽƵʼ;սؿҺؽҺѹֻϷϷپּԻѺη˵ɲůưɲ˵ʴǮ¾ҿֻ׸صٮԞȜǟʚƚƠʛƝƢǠéȻ׿־յִӯΧɮʮȲբâĺμкϹϸзж϶ϰɨè­īŭŴʼ̽ĿѻսͷջиͶպͶϷپּԻѺη˵ɲůưɲ˵ʴǮ¾ҿֻ׸صٮԞȚĝȘėÞȘÛŠƞȻ׿־յִӯΧɭʮȲբâĺμкϹϸзж϶ϰɨ¦¨ìŴʼ̽ؿѹּ׼ӹպڿ׽ԼѺη̵ɳîĮůDZɳ̵˵ȴ—ӿֻ׸ضٴڢɡʰ۞Ȟɰ۠ɡȲ؟л׿ֿնַձЩʳ˲ȴեƣŻμкϹйизжϵϪª´άìöΪ˯øƵʼ;ϹһйӺͶͶֻ˴˴ԼѺϸͶʳưDZʳͶͷպäּ׹طٲןƚáʙÙàə ğƼոӮյԫ˦ìǼϽлϺкѺѺҸѴͨæȷ˼;һкڿкϸջͶͶռһѻη˴®DZɲ˴ηѺ˶£վֻظشעȜâɛěġț¦ȡ;ոչռֻึմҪŰȿѾмлѽñʸųܹѪ§çĪȮ¯ɺ˼οѻ¾ϸӺջ׿ҼйͶDzȶķįưȲʴͶйǴϭֽ׺غϳ٠ƠƲؠæȰѦùۼӹڽױ˸IJҾҽ¯ȶ߰ƬöΪĴʫǯ½Ŵʼ̽ϹѻԽѺӼӽϸȳ´ڲDZʴ̶ϸӽȻֿ׼׿Þ«ǺݾĻټŶɺ¯ӿŲп䯟ũɺ˼;¾Ϲս׾ѻθͽƿʴ̶θѻֿ׽ػ֬ɲѥťűФ˲̲̾̽ʼǶпɷޱǮõ˫ȳǭǶʼ̽οԽϹӼӼؾѺսѻͶϸѻײɪìǦǪĭŮ÷ο̽ʼƵ®ƳŲٽҮ¬ì´Ʒóʻ˽;Ҽ˶ʵŰDzð̶кӽֿӶ˹вȲȺз̿ο̽ʼǷ¯ԿӽѴǴǸ̴ǼϽǶʻ˼;ӽѻкййкѻӽ;˽ɺŴ¯¯Ŵɺʼ˽;̾˼ɻȸƵŴŴƵȸɺʼ˼̽;̿ʽ˼ʼʼʼʼ˼˼̽;οɿɺǸǸ˻̻˼ͽ̺˹˽ɽ// various glass finishes, colors and interiors // #include "glass.inc" // general math functions and macros // #include "math.inc" BM6(xxϸŸv{v{žͳ䬨iqzfnxfoxgoygoygoyfnxbku[ep]fqȾןʵsyfnxgoygoygoyhpyhpyhpyhpygoygoyenx[epkqzȪ¶љƾgoygoygoyhpyhpygnweluelueluelugnwhpyhpygoydmw`itŽɲƽļļļļƽי;ǴƳŲŲƳǴ;goygoyhpzhqzgoxelucjsbgpagpagpagocireltgnwhpygoygoyenxȽƾûֿֿֿֿûƾ矟ǵŲð®®ðŲǵtygpzhq{goyfmwdktbhqagq`fp`fp`fp`fo`foafocirelufnwgoygoysyɵŽ»ֿԽһҺҺһԼֿŽǴı®İǴͻ﫨akwgq{ir|goxcjsbisahr`gr`fq_fq_ep_ep_eo`eoafobgpeluhpygoyfnxǸżʶǾ»վӻѹϷϷηϷйһվƾݿ甖룢ȵıİǵɟ[frakw[gsbmxir|emxcjubitaht`gs_gs_fr_eq_ep_ep_ep`eoafocirgnwhpygoyiqz;ޱĽӼйζ͵̴̴ʹζиһֿûȒ͊}̽ų¯Ų˼fmvXcoXdpžWerZfrZfsgozdlwckwbjvaiv`iu`ht_gt_fs^fr^eq_ep_ep`fpagpeluhpygoyfnxͺȦ¼ýտһϷ͵˳ʲʲ˲̴ζйԼҾt|}}~~jssy{|z{ıðVanWbnR_lG[kYerXes_jwemydmyclyblyakyajx`iv_gu_gs_fr_fq_fq`fpafpcjrgnwgoyfoxʺпÿտѻη̵ʲɱɱʱ˲ʹϷһֿɷ}mx{{{|bl}{yip~x{x{ñ®VbpUbpL\kls~ir}CZkTcrXfucmzfp|ep}ep~dpdo~cn}bl{ajx`hv_gt_fs_fr`fqagqbgpeluhpygoy˻noξҼϹͶ˳ʲɱɱʲ̴ϷҺֿŴzpzr|nzz{z{`k|lugrfox{x|òXfuXgvM^nYfs[hvD[mWfuYgwco}gshthuhvhufteqcn}akz`iw`hu`gs`gragqbhqeluhpygoyv{μopԿѼθ̶˴ʲʲ˳̴ϷһֿƵ|r|tr{}z|`l}lvhshry~zĴ®\l}`rPct[hu\jxF^pXgwZizdrjwkzm}m~m~l|ixfsdoblzaiw`huahsahrbhremvhpygoyv{վŻŹķĶŴIJҾϺͷ̵̴̵ζиӻ˺x}~co{ylx{Ʒ³¯bvi~RfwmvkvIatYiz\l}hvm{orttrnjzgtdo~blyajwaiubiscisfmvhpzgoy˾ʼ˽ѿڿۺѴİyʏѽϹθθϸѺԽѾzt¨ģ{`m~gv|·Ȼŷö·ðeyg}MctHatXj{_okyoswzzxtojyfrdn|bkxbjvcjuelvhpyhpzgoyѴᨱӿѼѻҼԽüó҄ƴնگϣzzlwuws˿ȼǾŽǿ¯Ų̽hxXmWhwRgyQi{\obvqv{~~|xrl|huep~dmzclxdkvgoyir|hpzfoyٸǵ֜ýоw蝢ʸܺߵר|jvq|맩qoü÷°IJOizOdugvUk}Wmavov{~ytniwfreo{dmyfoyir|ir|gpziq{׻ɸ¸疥ȼͼvʢijѶױϧymzݾv½źõ³²òųk{XqSn~ﭬixXn]re{sz}~}ysn~jwgsfp|fozhr|jt~hr|gpzӽ˼ƻ»ᬵͼ諯¬ũ~q|ۦȼǹƸƷǷwbxZrzgxVnavhtyzyvrm}jwhsisisjtjs~hq|tzؽַ͵ȶĸ¯ߴֹʳܩzs~ܚ¶¶o]vuo}bvVp\ug}mrqlh{fwgtjvlwlwjuis~hq|㧼ПʞȘҬ˿ĵ٭¥}{or㲽ʀb\wrh{ToTqWsXu[xWsRnPj~NgzOfx[m|kvitir}զϠȜřۿݳƪÅ|{ws挠{x~m~PlQmRmQmOkNi}Mg{MfxLdvJbtbo}u|֦ϕNjćx޲ۿɹϔ}{zvtqsД}m寮`sNi}Mi}Mh|Kg{JfyJexHbuIarYhv޴Ɔpoٛ{yѨvu~ݻfxevĿÕkw]ly\kxis~ýկ}htgtzҕwv~ΧzzܻgzgzțujjuѨytq}q{lwݼɢºƍyssrpoouœyp沵hXwXxXxWxWwWwXwYwh¼öÖ٫´ʽȺڧw|~~wxyvrĄzwĿԁnXxYy[z[{ZzYyYxYxYxYxh|ܿ|ɍǺƷȷ}աxx~~}{zy{rtΟk|nYqWo~vum[yZx\z[z[zZyZyYxYx\yhwwu߿üľº߷ÿþƿ˨ڡ~~zΎrvƹƸĿ`w`xovk^|_|kupmlkmptwxxww¼üľÿ¼Ǖ¼ƿľý½½ýľƿ觪~՞r|ȺǸƶŶŶƶǸȹmna|悓paejqtssrrrrrtvwxw¼ľÿ҃ž½վԾԾվ½žξwǞyݼj|ǹŶô³²²³ôŶǸocSm}ﲵsdhlsuttsrrrrrrsvxwwľûɍſ½տӽһѺѺѻӼվžw蜢wz몮vmȹŶô³ĵǸYv_}seeluwvutssrrrrrrtwxwyýſŻߝÿӽѺϸηηϸйһվ½ƿƸҁy~}{ɼƸõ³ŶȹĿqcicdmoyxwvvutsrrrrrsvxwwľžķu{¾ŋտҼϹηͶ͵ͶηйӼľ{suùɼŸµôǸlkcamqyzzyyxwvutsrrrsuwxwƿ¼ſº¿ҽϺη̶̵̵Ͷϸѻվýͼtzɽź¶³ƶnmg|{dorz}}}}|{ywvtsssssvxwľþ¹~|krr{ӿѼιͷ̶̵ͶϸѺԾ½ʻs}z{ƽù²Ŷqshoqept|{xvutsstvxwžĿûùmsu~ѼϺθͷηϸѻԾ½˽u}{~Žú³ŶxmqshrvčĊ}ywuuttwxwĿžȺҾлϺϺкҼտý±͒Ůĩwſº¿ôƷqluyƕИ֘וҏȈ|ywvuuwxwѽŸƴx|̗ҾҽӽԿžĿ˰̋Ĵ±Ʒоۿݸӭĥt~ľ´Ķǹlkv|Öҝߢ׏ȇ{ywvwyywùƼºüݽѵ⭲¿ĿŴؕǷӫ|ۋſúø÷ķƹɻwqpqzȚ٣╼ҋ}zyxyzywþ»ڹųڥǢ髵ĴɺۯŨ}쳾ɉƽƼǻɼcktvțڥՍą|zz{{xyļžӺĶּξxm~Բʞ§Ŭȷװƪ|߁ɛ˿l{\qWo﷾ǂw~—ԡ㗾ӍÅ}{|}zx¸¸̾Ȼ¼Ǝy̲Ρƪʯ̻޾ٷΰĬ،̗ӡvdw[q莧xəؠٓ̋}|zƾϼƸDzӺ}Ю͡ɤȯ̴ζϲάƨגԕԟֽʢ~n`vvڇyǑϕӓҎʈ~|z蹺Ԡx{̴zuԶԛƘĜĚٕ~荶ҌҮڽܹٳбɯðe`x׊vw{}~ytpmlt}{夨ȟýʯǛ׺ח™˜~ִ֣׹ֵбɰ¥~ۓrstsrpmkigw߱ʟÌ~xw}rzؿʞڤŔӕЦפԜÖ}{oonmkjhenڱjriqz|ׯϋqoϠ}qpxٮ{gpgpyҐnynx͝tfvfvsܻfufuľŖmv`l`lmvľاt{pwntotir߽Ӥ˼ǵ罺}gz_u`v^uZpXmVl_qzȔ~p孪]kL`~LaMdMdK`J_}K^|K^|]i¾ζƛ|~~خʻʾĺؙfzm~qrvk|fwfvbt\ps|Čżݴϩy{x}cnMaOcRhTkRjOeNbMa~M_}L_|]huz࿻ͮ×{ݿÆƹǸӑevdwrpqm~k{hxgveu[o`tw̠ryʱȬic|½ksbmNa~PbSdQfRgQfOcNaM`}Oa~\iltltmt㿻þ¼ʺŻݱؑhwp|}~vm}fy}̐w}ôopo}ks_kQaTc]g_hdlbj`i`iaidkjplsnumultmt¾ÿϿĶöӚ¾⼸‹ѽ½տԾԾտ½о֖癜iwx}|z|j~ҟuƳıðïïðıƳ{tx~eoRbXd`ifmhnhmgmglflflglgliokqlsmultx}¾Ͽŵϭȏy͹ԾҼѺййѺҼԾ;śzコčn|}~vewڸkzŲïïŲy]zﭪhqVe[iakfniohngmgmflflfkfkfkglhmkqnumultý̶·x|ҿԽѺϸηͶͶζϸѺӽoj{犑p~q{vbvfv롡crduŲ¯®ŲVnQbgpVfVe`nhqjqiphogngmfmflflekfkfkgliolsmumtovÿһᗛÿտѻϸ͵˴ʳʳ˳̵ηѺԾ½|pzziyn~}|sq|aogvjwiwtzǴðïƳ;gpWe[gTeTf]jamkskrjqiphpgognfmflelfkfkflglkqnumultҷrzžʄӽкͶ˴ɲɱȱɱʳ̵ϸҼͼ~}ky[p{uypxTi_ot|w{Ƴ¯ı^h]hUcNb_mamhqlultktjsjriqhpgofmfmflflflgliolsmult¿½з~}ͼҽϹ̶ʳȱǰǰȰɱ˳ζѺտƵ}|p{vt]q~~sxsxTgr}u~dosyv{ų°ð_j^iVdqxoxPc^kbnkunwnwnxmxmwlujtiqhpgnfmfmglgmhmkrmult¼ѷĴñy|eresʻӿϻ̷ʴȲǰǰǰɱʳͶкԾ}|myctdv\s~~rxrwRfaqcqcpv|v}Ƶ±ïamboWgalcoQe`mcplwp{q|r~rr~p|nylvjshpgogngmgmhnkrmumt{þֹɵȲǰŮĬ{~fsfu̽нͺ˶ɴȲȱȱɲ˳ͶкԾ³o|dvex`xszryThbqdrfswyǷóïful|ZkcodqSg`odrnzsvxyywtp|mwjsiqhohnhninlrnumt{ܺηεͳαϰέȫªпλ˸ʵɳɳʳ̵ηѻտǸrxve~v~wWjr~wkyyɺƷôðnv]os|r|Wkcrgur~w{{up|mwjsiqipioiolsnvlt潵ԺԷշܹ渴贮ݯͬìơs{φͺ˷˶̶ͷйӼνk|az~ŗϗѓȍ|s}Thew{Ż̾ɻǺǼƻµȾŲqtYlVkbrixu{ȉωІˁ{to{lvjsjqjpkrnunvltþ߼ڻ޽ܰˮî㠧ŘϼκκкҼտþxtpÚӠ䡸霯ݓȍozs~bpkyvröɿñƴ;qcvap]p^rgwm~}ÊЎُیֆxr~nxlukskrmuoxnvltྐྵ泫ѱDZñܕƑѿҾӾ¿ͺasn蒝xvǜף뤼旦Ϗq{argw짫okǿȼô±IJƴSj\np}`tbvm~|ċҏېގڈρysozmvltmuoxoxmvov㶮Դ˴Ǵõ헦Ȫҹɷ}qrbizϖxśѠࢷ枱ݗˑv~nzbtq~ſʿƹŶŵƵǵftSiNgﰰrcwi{r͍׏ڍև̀ytp{nwmvoxqzoxmu¿軵޹ոϷʸƴ¾觴ָ޿о}xqs顪Ĕvțϛҙ͕Òxr|cu妫|ʽɻɺɹp]pUk恋pbxmuˉ·˃~xtq{qzr{qzpznwy~仸ᴰزҳζ˯ħ诽ൽϾ~{vwߝǎw}ēĐ|jzcv|皣ŽĺŹǺ§{gXnqxmcyi~t{}xtqp}s}t~s~q{oynw匿ܟ֟ԙ͘Ǘ˜žڦü¹÷Ƹ­qtnsܡ˖rmsrqnkji|gz\r`uﳺ}|ʱЮΨŧ\wWozr`xazd|e~gc{^v[rYoYmdtr}pzoxᦫۡԝњ̘ǘÿహĻĹǸੳΜmoolghg}g{cw\rĎƧʮʪŨw׆v\t]u^v]u[sZqXoWmVkTiiv{ভٔԋч΂z⢱ٻ㸼߲ʮՄkdb`~^z]wZs`tzߗǁǕŏp粲i{ZqYqYqWoVnUlSjSh`nᵴ͊vu}ُkuirҟuevetq|⽼ʂgwfu~ʘq|cqbpnwľոˌgiugitĝssyegnegnsryݹ}brbr}ɕl}_t_tl}ѴظŘ徶{{agsX_lW_nW_nU\iUYdTYc]`izx|ݾȏtj{歮\sIhIhJiIiHhHgHgIg\r͠šȿӣſ²Ҝ_esdiwfkzemhpcgu`dpbdn_blZ^hzvwսƀҪƤuuxcwJhKiNlOmMlKjKiKhKhKh_twǾؿą¸ξ¿q~lz˔beo]bpgkxgkzfl|ejycgtceqcdmcenY\g_bk}z|Ι`seyé¤[qWl}k}bwLjKiQlMkMkMkLjKiKhMj\sl~l~m~þŶس¼ӾҼӽտzҔihlqnuxx|z~{{zyyyyzx}zzuxmktghoφgwly~´l~bvawtk}^uOkQl]r`tdvat`s_sasdujzl}nml~m~ʾݾѻ׾ֽռռս׾κz圖mjl{rrtu{|{{~z~zz{{{{u}{xlmu՗euq{yƶĴòòòòĴƶo~vd|xdyQnWo_tfxhyhxgxgwfwfwgwgwiyk|l}ml~x˾û̂θ׿ռӺҸѸѸҸӺռ׿ʷ{cqǿ￷pos|uzx{||{~{}z}z|y}y}z~z{~|}yvtgiqܷ[no}ŵòòŴshQiﭯh|UqZs^ufyi{hzgygxfxfwfwfvfvgwhwk|nm~l~ĿñӽؿԼҹжεδδεжҸԻ׿λ_i}klq午qptuor}}|~{}z|z{y{y{y|y}y~z{|vszdfqikr뢡cn~Xjŵ²±ŴPkPmg{UrUq^wh|j}i|h{gzgyfxfxfwewfvfvgwiyl}mm~oȺ°ܤսҹ϶ͳ̲˱˱̲ͳϵҸռŴ}w{smn}z{mlpmlsxwx{~}~||{{z{yzyzy{y{y}z~z{tpvuqvccjjkqnvjqtwǷóòƶfzUo[sTrTr]w_ykkj~i}h|g{gzfyfxewfwfwfwgwk{nm~l~ƴñŽֿԻѷδ̲ʰɯɯʯ˱ͳжӺ׾θxuwulil__b~vwzx~}~|}{{{zzzyzyzy{y|y}z{zyrssnrX[b`k~x{y{Ʒ³Ĵ^u]uQoNp^ya{hllkjji~h}g{fzfyfxfwfwgwizl}ml~ƿǵIJк׿Իзͳ˱ɯȮȭɮʯ̲εҸֽDzwvvuunm}yyzvveaaywyx~}}||{{zzzyzy{y|y}z{}zwpswqs[\`vuyx}govzx|ŷ´ò_w^wVsqoPs^zb|knnnmmljih|g{fyfxgxgxhxk|ml~ƿɸƵIJ~~zyϹԻѷδ˱ʯȮȭȮɯ˱δѸռîxxuttlkjggliifbbyxzy~}}||{{{z{z{z|z}z{}zwquvpsZ[aghlgpgqy}y~ƹ¶òa{b~Wvaxc|Qu_|clpqrrrpnljh}g{gzgygyhyk|mm~{̻ɸǵŲ°{zлֽҹ϶ͳ˰ɯɮɮʯ̱δѸռį{{}{vnnkiimkkhee{z|{~~}}|||{|{}{~{{~|xszwrw[]dhhmgriuz{Ǽù¾òflZ{c{d~Sx`~dnsvxyywtpmji~h|hzhziyl}nm~{пͼ˺ʹʸȶIJļռҹжͳ˱ʰʰ˱ͳϵҹֽɴzsq{{}zzolk|~~~}}}|~|||~zx|{^`fwvzzo~|ƽúʿǼºónv^srW}cgrw{Ёց{upmji~i|i{izl}nl~úþȶĵɿž½ӺϵͳͳͳεзӺ׿кvrqmkk}~}}}}~~z{]`gl}½ԾǼŴquZ|W|ciu{À҅߉牵醰と{toljj~j|k}nnl~ƾƿǵ°ݱռѷжжѸӺսŰ}{Ȁ~~|{~~~zsqyzoqxtv{zyÿԿƾôƷseb^ahp}ȃي鎼xrnlkk~monl~̺ƴIJñ°ñļǭ¾ռԻӺԻֽҼ~~}{{易~|}|tsjmwqt{쩯xûµĵƷc{[|pbeo|Ȅڋ됿灧ysomlmoomoϾʹȶƵƴŽظŻ׿ϻû~~utxtynnr܎˜ˤżźƹǺ~qzlwﱶreks€ԉ卻〦ytpnmoqomν̺ʹȷº¼ǿŽļݹ榠xw{srnklږϡ׬ɿɾ¹xpz聗rdnvɂ؈≴懱リ~xtqqrqpnyž;ͽºʽǿƾȽԣytsqnmۜ؟شϱt~wnelwǂҀzurqstsqonÿݏļκ͸̸͹Ƹϧ||~{z}yy}zytrqsrr뚴ִ֚ܵٯЮɭïuzsdgijmhc`]]~frpoþȿݏƺ½ÿѾκκñծ~}{{|yy|yy{yxxvvuttՙͭմְЮɯ£ۆwabcba^]\[|Yyk{ú˽Ǹƾ{zzzyyvvvutttssqpqutu蟲Ύ͟םԘÕ}貹l^^^\[Z~Y{Xxc{ݼС~~ƨxwwwvv}}ύutКtg~g}qǴϣεzzŨŵôȢȤĿ廴wz~wzw|w{vzvy}vy|wy|׻źĿ͸̸ųڹƺݴϮѕwzx{y~zyx|x{xz~xz}wy|¾ǽúţ˼κ˶ɵ̷ִʥuuxyʲɮmk|ʌy{z{{}y}y~y}x{xzwz}y{~ž½½ƻžĴȿŽļżǾ۴ʕ|z{{ʹȸŶŴǵȶytsэ{|~}}žþ½½½ýľýȻýůżǿƾŽŽƾǾ¸蹴Ҥ}zy|zŲκ͸˶˶˶˶̸ιó~w喓ſþϿϿϿýý˾Ǽקûȿžü¼¼üŽȿӾȳžxww͹˶ɴȳȲȲȳɴ˶͸yizU¾Ͽξ;;ξϿýľĹԷſɿž¼׾ֽֽ־ؿ¼Ľȿ¹豭븲Ǵι˶ɴDZưůůŰƱȳʵ͸ót}~匊Ͽξͽ̽ͽξϿľƺÿȽľ־ռԻԻԻս׿¼ŽɦӠיïм͸ʵȲưĮíííĮưȳ˶ιĻǃο;ͽͽͽοýýɼƺѶʾ˾ÿֽԻӺҹӺԻսؿüǾŽ̺м͸ʵDzůĭ¬¬¬íĮDZɴ̸ǵϿξ;;ξ½ýǺȼɽʾ׾ռӺҹҹӺԼ׾¼ƾºʹҽκ˶ȳưĮ쬫¬Įưȳ˶ϿοϿ½¾Ȼȼú׾ռӺӺӺԻ־Žºʺѽι˶ȳưĮí¬ìĮŰȲ˶þ˿ֽռԼռ׾žĽĽƾŽżļºϿľҽϺ̷ɴDZůĮĮůưȳ˶ÿĿſؿ׾׿ýƾӵüûӿϺ˶ȳDZưƱDzɴ̷ò¿þžȿҼŻſļſҾ͸ʵɴɳɴ˶͹ɷúٵӿϺ͸̷̷͹ϻż˛ǿѽмлмҾϽ柝޽ӿſ¾ļŽĻ檧üÿ¿֨ÿѫׯ½«// several different gold colors, finishes and textures #include "golds.inc" // various metal colors, finishes and textures // brass, copper, chrome, silver #include "metals.inc" // random number generation macros // #include "rand.inc" // macros for generating various shapes // #include "shapes.inc" // some not built in basic shapes // #include "shapes2.inc" object { Tetrahedron // CSG-able tetrahedron shape //Octahedron // CSG-able octahedron shape //Dodecahedron // CSG-able dodecahedron shape //Icosahedron // CSG-able icosahedron shape //Hexagon // Hexagon extending along x-axis //Rhomboid // 4-Sided Diamond //Pyramid // non-CSG four-sided pyramid //Pyramid2 // CSG-able four-sided pyramid //Square_X // square from <-1, -1> to <1, 1> in y-z-plane //Square_Y // square from <-1, -1> to <1, 1> in x-z-plane //Square_Z // square from <-1, -1> to <1, 1> in x-y-plane } // some predefined skies // #include "skies.inc" BM6(xxmlpaafaaemmolkn^_c^^ckjnkjp^`e_afkkpmlpabgabhmmrῷddhVX\VW[ddg⣝ORWJMRILRILRIMRIMRJMRJNSGLRJMT⢝KPUEKQEKQFKQEJPEIPFKQFKQFKQKOU⢜ILUCFPCGPCHQDHQDIQDJREKREKSKOW⣝ORXJNSIMSIMSIMTINVINVJNTKNSPSW៙>CK7>G8>G8?G7>F7>F6>E6=D5=D>DJ]^bJNRKNRJMRILQILPJMQJNRJNSIMRGKQFJQFJQ\]b[]aDJQEKQEKRFKQEIPDHPEJQFLRGLRGLRFKQEIPZ[`YY`CFOCFPCGPCFPBFOBFOCGPCHQDIRDIRDJSDJSZ[c\^cINUKOUJNTJNTINUINVJNVJNUKNSKNSKNSKNS__cQSY8>G9?H:@H9?H9?H9?G8>G6>F6>F5>E4=E4=EQTZŽOSWSW[UZ^VZ`VYaSV]RUZORVMQTJNRHLQFKQFJQHLRIMSKOUŽżJOVKQYLS[NT]NU]OU\KOXHLUGLSFKRFLRGMRFKQEJPEJPGKRżļGJSIMVLOYNQ[MQ[LPZIMWHKUEIRCGPCGQDHRDISDISDISEITļżLQWQV]UY_UZaTYaRW`PU]OT[MQWKOTKNRKNSKNSKNSKNSLPUŽú=BL@FOBGRBHSBHSAHQ@FP>DM;AJ8>G7>F6>F4=E4=E5=F7?GûX]b`eidinflqglteirdiobfk^bfW\`QUZLPVGLSEIQGLRJNSIMTKOWTYaY`hZbkYblYal\dm^emW[fSWbPU_LQYIOVHMSFKQFKQFKQFKQGLROR\VYdY]h[_j\`k[_jZ_kX\hTXcOS]JMWGJTDISDISDISDIRDHREISX\c`ekchochqagragq_fo]dkY`gU[aQV[NRXKOTKNSJNSJNSJNTLPUEJUKR]MT`NUaNUaMUaMT`KS^IO[DKU?EO:AJ6>G4=F4=E5>F5=F7>Goqvkounrzqutzrxrwqv|nsxjptejo_ciW\cNS[HMUGLRIMTJNTIMU^^dilsdksenwdmxclxcmxfoyipybgs_dp^dmY_hSXaNSZIOUFLQFKQFKQFKQZ[`ggp_codiufjvfjwhmyfkwdiubgt`er\`mW[gQU`KOZGLVDJSDIRDIRCHQYY`knvflukqzms}nunu~lt}irzfnwcks_go\cjX]dSW\NRWKNTJNSJNSJNS^_c\`iS[gV^kW_lV_lV_kV^kV^kU]jS[hPWdKR^DKV=EO8@I6>F6>F6>F5=FQSYﬧpt~wzy|}}}|zx~uzpvzjpvciq[`iRW`LPWJNUJMTIMUHLU梨gnxowoymwkvlwoyqxjo}io{iqzcjt^enY_gRX_JOUFKQFJPEJPDHO諸fkwlq~pwpvqwqwqwntko}in|fkybgt]anW[gPUaINXEKTDIRDHRCFP益ls}qxx}~}wr{oymvjt}hqzdmubip_dkX\bPSYKOUIMSINSJNSV_k]fs^ht^hu^gu^gu^gt]ft]es[cqXanT\iMVbGO[@IS:CL7?G6?G6>F6=Fw|~}zt{nt|eku]cmX]ePU[KOWHLVHLUNQXglxpwvvssuyu}pwrzqyls~hpzagr\bkTYaJNVFKQEIPDHOKNUkq|rxwz{{zxwsypunskpflzaes[`nTZfKPZFKTDIRCGPHJSowy~yut~r|oylu~iqzhmuchn[_ePTZJOUINSJNSORVXam`jwdn{do|ep}ep}ep}eo}cn{clzbjy_hwZdrT^kNXeHR^ALW;EN7@H5>F6=F=BJ~}v}nuflxbhr\ahPT^JNXILUHLUļmtu~||z{~v~wyv~t|pwhnzdit]clV[cLQWGKREJPEJQžt{{~{w|tyrxntin}diy^esV\hKP[FKTCGQBFOſw~{yvs}pyou~lpxdip[`fPUZJOTIMSINS^ivgqjujvjvkwkvjuithsgqdn}_ixZesT_mOZgIUaBMX;EN6?G6=F6F5=F{szovkq{bhrUZgKO[GKVlkqx|~ytzqwnujqycjpU\cHNTCIPjjn}zw~sznvgo~_fsT[eGKVDHRjio}w|nszejpX]cKPUHMSmlruyivm{ruvuutsq|myjufran]j{YgvTcpN\iJVa@KT7AJ4=Fcchyu|rxiny]bpNRbGKX__g~zyu|rzjry_fmPW]EKR^_d}yuoxgo{]doOU_FKU^^e}tzkqx_fmQW^HNU`bgovlyp~sxyxwvtq~n{kwhtdr`p]l|YguVcoR^iIT^>GP6?HUX]yv}ntafvTXiIMZ^^e~|xpxgnuX_fHNT^_d{unwemwY_hINV__f{u}mt~cjtW]fLRYabgr{kzpsuvvutrqo}mzkwhvdt`p`ly_jv[fqU^hKS[>ELXZ^{xrwfk|\`pMP^jip{t}ksz_gmNT[kko|v~mt~bhpQV]mlp~vnwfox^dlPU]mmql}qrttttutssq~nzjzhxgujths~gpz^foV]eINTihk¤æĨá~|w|mrdixRVbxowckrRY_}tzhnvW[bzqzkt|cjrUYcpqqstuv{~wvtq~oqt~vv~pwhox]ckOSYќ§ħũѢ|tzhn{TYeΑ멳{qzdmtU\bЗɖv}krzY^eњﳺƠyr{owglwW\fqruuvx}ܓxut||t|iq{_fnOU[盟ħŨǨȫꥬw}in}WZg搛ؗ|r|fow[`f痢ããæ♠xlt|[`h盥ߢ{vt{jpz^bhzuuvwy~||zoziq{`goQV]ɟŨǨȨȰ̿ٮɢw}fkzﺸʬÜzs}iqx￾ƞ¦ĥťŧƮسȤykt|ȡױƠ}|ot|ﴳ}wxz|~tnyhr{[dl褨¦ŦŧƩǤĤuzru疝~vrv}瞥ĪƪǩƧħwv{觮}z|慐xsnzepzkovܢåŤĥĥĤ¥|qwؑqxٙūƬƫīªwܨ«y~{}xsmyjqzءãã¤ĥĦ¥w}Ԓ|֛¬Įìا°ııí{Ђ~|wvqzܤæåٚܣܯ±òò­׌|{{xΡu|羼ƕzϟ|ͬ{泵|nwϫy}uxstz̭}y{}Ь}~γ~~ǟx}w{wx}ῷeceWVYVUXdbdºpmmeccebbroo¹ʳigk[Z^ZY^heiῶd``URRURRdaa᠙@BF9;@68=57<57<79>8;?8;?9;@?@E⥟VWWPRROOPOOOOOONNNPQQPRRMNOONO強⡚FGM@BHACIBDJACI?@G>@G>@F>@GDEL៘?>?777666555555666777888889?>@SRU69=68=57=24913824968=:@F>@G>@F>@F>@FVUZRPP::;:::88866666677888888888888988977:ROQ¹<>B>@E8;@57<35:02624946;35;79?9@F>@G>@G>?F>?FABIĻú>>>BBCFFFEEEFFFCCCBBB??@;;<88988988988977:77::9=úCEKGJPDGM?AF:=A8:>35846;9;@35:68>;=C;=C9<@9;A56;79<=?A```ijjlmmmmmonomnnmoojllcde[\]UVXTUVQSTPRSPQSLLNHGIIGJӑNRYUYaY^f[_hY]fY^fZ_gX\dRU^LNWFHPCDK?@G>?F>@G>?F>@GACJFFFPPPVVVWWWUUUUUVTTTQQQMMMGGHAAB<<=88:77977:77:77:99=ZY^PTYRU\FIOCFJADG?BE=@D>@F;>C7:>;>CBDKADJ@F>?F?@GWW\][[XXX\\\bbbdddbbbbbbbbb^^^ZZZWWWRRSJJK??A99;77977:77:77;QORSV]Y]cTW_GJPLOUIKPHKPEHN?BG;=B?F>@G@BIZZZ^^^aaagggkkkmmmmmmkkliiieee``a]]^XXYOOQBBD99<77:77:77;77;PRXZ_eafmWZcFIORU\PTZJMRBEK>@F@CHEGNGJQKNUPS[ORYFJO?AF127348<>A??B||}||}yyzwwxvwutuqqslkmcbdYWZNLNIGIGEHGEIMLQ欭koxns}purwrwrwswsxsysyqwmq|hlwbdo[]gUW`NPXEFN@AH>@F?AHFGN`__cccbbbfffmmmrrrvvvtturrsppqoookklhhieef\\^OOQCCE;;>77;77;66;>=BûRV]ejrjoxZ^gGJPILPNQWHKQ@CIEHOKNULOWILSHKQQT\VZbRV]ILR=?E34889<8:=ƽ~|}~~~{{zwwvrtpmojgib`bYWYNLOHFJFDHHGL¹ѳļrwx~x~zzy}x|w|x~yw}uzqukmycfq]_iWYbOQZEFN?AH>@G?AH¹fffdddccchhhqqq{{{}}}{{|yyyvvvvvwuuvqqrllnffh\\^MMPCCG;;?77<66<66<\_gjpxmr{gjuY]e\`g\_gY]eVZbTW`UXaQT]HLRDGMPSZ]`iY]ePTZGJP9;@78<8:=~~}y{xtvroqkhjc`bYVYMJNGEJGFLüÿǾݏuy~~||||zx}rvkmydfq^`jWYcNPXDEM?@G?AHiiihhhfffiiiuuu~~~zzz{{|{{}xxyrrtmmoggiZZ]KKOBBF99>66<66<{{~]ains|ou|uyvzuyvzrvor|lozeisUXaHKREHN\_hcfo_clY\dORYBDK;=A89AHhfj{xypppnnoooopppwww~~~~||~vvxppslloddgVVZIIN@@F88>66=d`dxy}Z^drvw}x~|z~qt^bkTW_cgpjmwgktdgq_clWZbJLS?@F9:>RPR~|ywzrosjhm`_dSTYNOUdcgü~~~vzpsjlxdfq]^iSU_GIQ?BI[Z_vtuuuusssrrrsss||}yy{ttwqqtkkn^^bPPUFFM<USWz{fjohks}zw|rvswswqugkubfobfo]`iQS\CEJ:;?SQTz{rsxijpabhRSXdcgĻ{txnr~ikwbdoZ\fNPYCEMZZ^zxxwwxwwwuuvwwx}}xx{uuyqqucchTTZJJRAAH88@URXpuytx|nrwx|~u|u{x}vznr|`dm`dmfisbenY\dHJP:>GŽdhny}Εw||}x}swot|lqzfjtTW`ACH8:>˞Ŭqsy\]dǶˈ먭zsxmq}fht\^iKNWvvwzz{||}}}ssybbj[[dUU^LLU>>H`djjntz~zpux|{zu{sxqucfqORYDFLABF桠ⱱqsz^^e̽Ÿ拐ד}v{othkw^akQS\xxzzz}}}뙙~~ppxccl]]gVV`MMWDDM謹X\bpuz~uy|}~|y~rvadnVYbPS[IKRľɲz|kltȽûﺷͦx~qvimy_bmﱫzz}}}Ͱ~~ooxddn^^hWWbMMXmntZ^dkouuyz~{qv{]ahaenhlvlpzmq{ben]aiX[cW[cPS[^^d橧xxus{ǻ旛{sxko{lmv䃁}}~~uujjuddo]]iVVb^\e`dk`dlpt|{mqxvzvzhlr`dkZ^eY]c]af]ah^aiZ^fSV]WYbاvvǼؖ}tymr|{{}}~~xxnnyhhtccp\\iUTaot}rwjnugkrfkqcgmbfl^bh]ah^bk[^h_bkѤȷԚ~uz{{||~~xxpp}llygguaaoZZhƽ~~~hlu`dk_ci[_e_cjdhrkozoqx̺֨ڢσ{{||~~{{vvqqnn}jjyffqhgr䲭}~{tyot}tyqvdgpļκǚsx䲬zzxxwwwwvvttqq~llwddjYX^ġ~~mntjjpkimȬ}z}wstuqqѺɧwxtu}wv|ƽwt{fdhcaaiefļ|zyvttsqq~~npvbembemnnuż||zyyyww}}ƾļxx}prxsv}}~žggj[]`[]`iil㬥feebbafffiiheeeaaaddcllkrrqtss⣞MU^GOXHPZIQ[HQZHOYHNXHNYHNXNR\㫥fff``a_``cddjllijjgggefeeedjii㨣`dj\ag\ag[`fagmelrcjpbhpagodir⡛GLPAHLAHL@GL@GK@GL?EK=CIE9>ESTYmmlssryyy||{yxxnmndcd`__\[\ZZZ^^^feelllmmmllkmmmļHMTIOTLRWPUYNTXHOUHPWHQYHR[HR[HPZHNYGLVFKUINWPV_ƿccdcdeiijijjhijefgopqmooikjgihfhhfhgghhgggffeggfȿ^ahadmdhqdhrdhr`dladmeirbfo_dl`fmbhndkqdjrbhqafpĻCGNCHNCHOGNSJRWHPVFMSCKP?GL=DJ=BI<@G:>F9=E:>F;?Fú~~}zyzvuuqppjij`_`a```_`fefkkknnnrqqmmmPU[U\aY`eZag^ch]bgX^cS[aPX_MV_LU_JR\GMXFLUFLUGLUJPYRXahhjkkmpqruvwvwxstuttu{|}uwwqssjllikjhjihjighgefedddffeehpknxot~qurvqunq{os~nr~jnycgpaenbhodjqdkqbip`fo`enGLSQX_SZaQXaU\dX`gXagS\cKTZENSDKQAFN=BI;>F8;D8;C7;C9=D噘yxyonoonnlkkcbchghssruuuttsywwhjp_flaiodlremriotiotimrdin]djW_gT\eOWaJQ[FLUEJTHLVINWMS\eio~|~vvxvux{{}{{}~~|~}uwvorqnpojllgihfggeeeeddtsrwxsvw|z{|zy}x|x|txlp|gkufktdiqcipdjqbip`fonqy^agT[e^hp^hp^hqaiqbiqbkr^hqVahR[bNV]JPX?DL=@I8:C7:B69A6:BRRY|z{zyy|{{rrrihisssuuuuttnmm賓flsfowiszov}szv|w|sx}qv{kqvdkr^emX`iSZdMT^JPZJOXJOWLRZPW_ﳭ}~{}|wyysutmnnjlkhhhfffhhgﯫy}~{tyrvotkoyfktflselrcjq`fo廉Xaj`itku}ht}iu}lu~jr{js|dox^hp[dmX`iTZdMQ\CFP9HVU[ķtss}~}u{qyoxir{X`htv{qqrbbbzvvóƴȴDzƮ묧z~pu|cioww|x~tznsgl}aeuY^lPUb>CNdcgĺzzz}yunw^fnwwxgfgɯŷɷɴDZƴȹ̸̲ƭéuzgms}xtzkpfkz`fsW]iFKV~~ǾΗ¡Ǵ}{r}`irüͦ{{|hghżٲĶȷɹ˻ͼڳȬx~hnuļ͋꧲|u{nsjodjxY`lIOYɷ~痠ťܭudkv橦ܳ|{|nlm鵼ƺ˾ɯ{jou拔ڒx~qvnugo}X_lNS\˵ĜĢȭs}®μ~~~սԶȲĭ§zﺸ̡|v{qxir[dp磭ƩĦ{粮Ӿϻ̸ʴǯũ痠|w~qzisjpyܥɪƨ¥zٳѾϻθ̵ʰƩؓ}xq{fp~Ͽ۪ũëƫŦմ߿омϹδʯƩӒ|u~lv߬ũçڸпѾнμλθͳȮŧؚ~zw}θſϢǵڼϹ˹ʷʴȰī缻Ƒwho}ͭ~ü͵żӸûʤqviovlmrῷhfhZZ]ZY\gegĻvssljjkiitrqlihb`_c``nkjûļ}zzwuuvttnkkb__b__njj៙BDH;>BAE@BF?BF?BEEFI⥟[[[WXWXXXXXXXXXWWWSUSLPPIMQNQVᨤW\INREOSFNREKNEGHDGHFHHGLNI^dN㬦hhgdddgggkkkhhhbcbeeelmlrrruuu⤝POOLLLNNNNNNMMMLLLKKKJJJJJJONNQQS7:>7:?59=6:?8<@9=A:=BBFADGDFHDEGVVVabaTUVUUUSSSVVVXXXXXXXXXSUSLPOJNQJNQJNR\^bhmUNRFMPELPCMQCHKACE?BC?CCBDDDFFFOPMY_LkpZwvuhihghgjjjmmmmmmhhhbcbcccjkjnnnnnnmmmxwv`^^KKKJJJLLLOOOPPPQQQPPPMMMKKKJJJJJJJJJ^\\ú=AE;@D:>B9C>BG<@E8<@9=A=@D?BECEGDFGEFGDEFûŽQTRWZW___bbbbbbaaa^]]]]][[[VWVPSQMQOORQNQQKOOMQOŽYaDSXITXKKMGHIDEGBCCBBBBAAACCCEEEFFFIIIKLHW]J[cJqrqvvv|||}}}|||vvvqqqijieeebcbgggkkklllkkkjkjqrqżPPPRRRRRRTTTXXXVVVUUURRRNNNLLLLLLKKKJJJJJJJJJKKKż?BFEJOLQVJOTFJNFJNHMQFLQCIN>CH=AEAC?ACCDEEFGCEFTZVaf`jmisusxxxwwwuuuqqqlllfff___TVTQTQTVTSUSORQSTTNRRZ`KchVglZ]aUPQPOPNOPNTTTRRRNNNGGGEFEDECDECCCCJKGX^J[cI΀{|{stsghghihmmmmmmllllllpqptttVVV___ccciiijjjllliiibbb\\\UUUNNNLLLIIIJJJJJJJJJJJJKKKZ[`KPTRX\V]bV\aQV[NRWOSXTZ_SY]OUYKPTGKN@DF?ABCEFFHIWVXejpgojw{w}}}wwwqqqhhh\][VVVRSRSUSSUSPSP`acpwZnu_sxfhkbYYXYYYWWW___aaa\\[YYXUVTKKKFGE@A@FFFHHHNQGX^IjnY喖xyxvvvstsnonmnmpqprsrsss~}|nlllllsssvvvyyyyyyzzzwwwsssnnneee\\\SSSLLLHHHGGGJJJJJJJJJ^\\爛V[_Y^a\bf^ej_fk\bg]aebfigkohloeil_ceW[^NQTFIK=@A=@ABDEGHIDFG﨤irs||~~~yyyoonddcYYYUVUUVUQSRKOQשׂt}_{svyojkhjjjhhh```hhhjkirtntyjrwfdf_VWTOQK@@@NNNMOJTYIY`G}}}tuttttssssssrsr﫥sss{{{~~~}}}uuummmeee[[[MMMGGGJJJJJJJJJJJJ]cgejlbgjdjnckqfnshnrlqtqtww{}ux{ruxmpsgjl^acSVXGJLACEADEDFGEGHFHJls|}~swtmpnjji\\\XXXQSRFLMLPWwZx}yqro|||kkkmnkz{v|xrsqrmfgb^`ZLLKNNNMMMPSIW\J\cJ寯¾yyystssssrsruutvvv{{{qqqdddYYYRRRLLLIIIJJJJJJONNļkrutx{otwkrzgp}oxtzx|~}z~vz|ptvmopaceSVXLOQEHJCEGEFHCEHžzz|zvvvjjj\\\UVUGMLGLQ÷r}yzv{{{xxxyz|xyvsuocda]]]]]]RRRMOJSWJW^Füͽ¼yyytutrsrrrrǾvvvkkkbbb[[[QQQKKKHHHJJJJJJ{ylulwx{uy|ruxmpraegY\_QTVGIJEFHDFIwwwiiiXYXHNMGLQ}~|{{yy{vijijjjcccQQQMNKQVGW^F¾Ⱦwxwrsrrrr~~~uuulllccc[[[SSSIIIIIIJJJr|t~z~vy~uwzmptbfiZ]`PRTGHJCEHedgvuufffIOMEKPmlrq|}|{{{~~~sssfffXXWRTOSYGV]EtvfǻtttqrquuummmdddYYYOOOIIIJJJnjj{~y}x{ux|korcgjX[^LMPBDHWV[|}|jliKRSFLR`aho}uwrnpkde``dYW^FV]DjnYǻ{|{sss~~zzzpppiii```XXXKKKIIIb__|z}x|quyjmr`chTVZDFKVU[{szthohOW]KPXaaiyw|js{`jp^^fMW_EjoWttt~}uuunnnggg___SSSJJJb__~z~y}vy~ru{hkq\^cEHPcbg¿}s|{islX`eMS[lls}p}fwdlqadkRZbGtwcǿyzy{{{qqqllldddYYYLLLnjj~z~x|x{wynpwacjBFP¿x~jtvZbmOU]vpm}qsyeipXZbDĻ~~~~~vvvooohhh]]]OOOƓ豴|{~wxacl7;@;7<82858<<᠚CEBA=@C?BEADFCEGEEHHKNO⠛DLT?GO@HPAIP@GN=DN=FO>GP>GPDKT⠚DHO>CKAEKDGLDGLDFKCEHCEHBCHFGL⟗<9L42F41E41D30C3/A2/?2.@2.B:6INOO;>>@CCFHHIJJBDC;>=<@=@E>;A8394054/54OOOVVS>@==@<;>:;>:<>:=@BDACFCDGEDHGEII[\\UZ`?HOAIQAIQAIPCIP@GO=FO=GP>GP>GO>GO>FOVY`VW]<@J9?H<@I@DKCFLBELADLBDJDFKDEICDGBCHVU[XU[>=I97I41G31G63H52G41E40B3/@2.@2.C2.EOJZº6;;@CCLNNFJJDHHDIHGKIDGF>B@EGEDIA8=8/53064054266úĻDGCFIEGJFGJFEIDCFAAD@@C?@C?@C?BDACFCDGFDHHDIIGJJżļBMUGQYKT\KU^JT^MT\KRXDMV?JS>HP>GO>GO>GO?GO?GOBHPļļBGPCISDJTDJUEKUDISEJTBHRGO?GO@GO@GOBIQKQ\PVaSYdRYeU\gSZfQXdNUaIP^FMZFJTFIPEGLCDGBCEDEIACIADN@=TTR^YWcYXdZYcPMcEAaD@^=9W85P30I40E2/A3/A3/C40F51J73L\__NUUcffOVULSSOWWNWWKSSOXUQ[WKSQBIGOSOBI>4;4172283165/44LLLeie^e_bhbcicchbbf`_c^\`[X]WUYSQUPNRMKOJIKGEHECFECGHDHHDGGZZZbks[itbozer|cr~cp|js|ir{_iuR`qO`nO]hKWaEOXAJR?GO?GO?GO?GOWZ`bfqX`n[cp_fr_frahtbitags_eq[anY^iX[aQRVGHJ@ACAACEEHEFKADLVW^`]kURja`nfepfesfdt`^tQMoMHjJFfGCbA=[;7Q51H/+?0,?52F51H3/IOJ[賓diikppgmmW``T]]U^^U^^R[YR\YU^[QZWFMMIPJPWO@H@7?75<5173.33.33梨bhchoiltnmunmtmlqkinhfkdbga^b\Y^XVZTRVQPTOLPLGKHDHGCGHCGHCGF捻^p|fvl{l|k{t~s~nybmXi}ZlzZiuWdoR]gJT^CLU>HP>GO?GO?GO說`hzgpen|iq~kr~mt~qwsw~pt|lovegl]^aVWYKKLIJKFGJFGJGHKBDJ=AK易^]ddckihqonxqo|po~mk~gd|WSwSNsPLoKFiFBa@;W72I0+A3/D30F2/G2/Hquuw||mttcmm`kk]gg\ffZccV`]U_ZV`[R[YKSSNVQZbVMUNDM@8@9184-22.33699dhcinimsmpxrt|vvxu}vsyrquomrlimgdib_c]Z^XW[UUYTQTQJNLEIJCHICGHHKKbr~j|ntrz|wq}ivcwdvbr_my[hsU`kLXbCMV@HQ?GO?GOEKSdixjtoxs{t|y||z}wyoqtefgefhefi]^_[\^UVZKLPGHLACI=@IDGP__```addeggiiilontts{ut~sqeaZU}XSzUPvSNrJEfABL055.33`_^z|{v}vouniohdic`d_[^ZRVSHKJDHHjjj~x}vxwtoizfsalxYcnNWaDKT?FOhhn}}sxy~}~y{vw|stxmotehoTYdDHT9R4/I.*D1.Gb]isttr~~p||myygrrbmm`jjbmkbmi_je]gd\eemrrdiidgg^d\ELG499/44RRQ}}v}vovoipidjd_d^X\WMPMEIG^__|}~|ytomzhs`kvV`kIR[AHQZ]dx|x~|~wx}qtzglwW\jLP\ADO;>GYX]trsxw|tnwqwsjefac]\V~VQtPKhE?Y:5O1-H1-FSN]wutq}}lwwjvveppdpneqlcnj^if_iggonx{{nrp\fWZ_Yr&q'shapes.inc'.txteeʙPʙEs(q'shapes2.inc'.txteeʙPʙt$q'skies.inc'.txteeʙPʙ5u&q'stones.inc'.bmpeeʙPʙ v &q'stones.inc'.txteeʙPʙN(q'strings.inc'.txteeʙPʙU.q'transforms.inc'.txteeʙPʙL$q'woods.inc'.bmpeeʙPʙ  $q'woods.inc'.txteeʙPʙX f D $ hH,// macros for generating and manipulating text strings // #include "strings.inc" // various geometric transformation macros // #include "transforms.inc" BM6(xxὶ\`eLSYLTY\aeή^Y`NJRNKT_\d⿸fhlX]aY]aghlὴ\Z^LKQLLQ][`ᾶ``iPR\PR\``i᜘,@H 8B 7A5@6A7B6A 6@ 7@,@H᜕11A();'(:'&8&&8');)*<();''911@⠛CKQNFNU 4@ 5A 5B6B5A5A7B7B 7A 8A 7@ 7@FNUIGQ&$6&%7();)+='(:&&7&&9&&9&&8%$7%#5&%6IEOUY^=GM>IN>IN=HMHM>HM>HM=GMUY^EDI$/ &1!'3"(3#)5$+7&.:(0=%-9#)5"(3!'2FFLMP\1;L5@P8DR8CQ3>L0;I5@N8CR5@O4>N5?O3>NMQ]&;G$:H$;J%;K%L#>J";G!9E 7B 8B 9B 8B 6A4@$6A¹02D//D,+@+*?-.B./E+,A)(<)&9&$7&%8&&9&$7&$6&$5*)9¸ļCMSFRWHTZHU[GSZEQXBNU@LS>JP=HN=HM>HM>IN>IN=HM>GNļ$(2#)5%+8&-;'.<'.;)1>*3@*2@(0=$+7"(4!(3!'2 &1%)3º9DTN6AP7CQ6AP5@O7CQ8CR6AP2;Lº)BQ)GW+FY,I\,J\,J[+JZ*IX(FT&AO#;I!8E 7C7C6B5A4A$6B57N57P56P34N34N56P57Q33M1.F/+A+'<)(<((<%&9&&8&&8&'8,,=KW^R`gUdkUdlTckSajQ_hN\eKZaGT\CNUAKR>HN=GM>HM>IN=GM>GN(,8(/=+2B-5E.7G/8H.7G09I2HN=HNN8CQ8CR2=Y>@^?@_BBbEGgEFfEFfEFeCDc@Ba=>\98T44N11J-.D*,A))<'&8((;((;北_pxfxgxgwgxfxfwevbt}^qy]nvZjrUdlO\dHS[AKR>IO>IN=HMP6@T6AU7AV8BV8CVO/8I+4C&-;")6!'3 %1$0$/Sd{_r[nQbK[zKZzN^|Rc~N_xHYqO_vO_uANgP6AP9DR6BP0:K9Wj6Xm8`s9iz:ex:dx9`w8[t8[s7[s5\r4Yo2Wk0Se-L`*K['ES"=J 9D7C5A,9EFGbDCaDCdCFhHKlMPrMNqJIlHHjHJlFIkDGh@@_99V67S36P02J-.C)*>)*=();0/=apzi|nnnnonmi}fydwbt|_pwZiqS`hKV_CNU?JP=HNO0:K+3D&.=#*7 &2$0$/+-6N[u]oez^qSdQb[matbwZmQc|Yl]pM]vJYqBOf8DZ7BT9DS9DR5?O7>NᾺ7]t:fzJ 8D4B2@CEfEDfGEiHHmJInLLqOOsLLpKNrKNqHLnHLnDFf>=Z<J`7@S9DY;G\J^:EX7AT4>P/9J+4D(/>#*6 %1$.#-Uff{katWiZlknj\qSfWj[nQa}Te}N^uBOg;F]9EW:FT7BQ1;L:_y=l?o@q@p@m?j>j>k=h[8:T13I+,A)*=*+=rxyz{{{xvspnl~k}i{ct}\jtTbkLX`CNT>IN=FM>I`:DYJbANeBNfBNeDPfHUlGTj?J_=G\:DX7AU3Nev=f@mAqBtBvBtBrAq@n?l?n>m?_:IbBNfDQiDQiEQhFSjP`yLZrBMc?J_k~=h|;fz8cw6_r3Yk/Pb*IY$>L 4ALRY^\sMMrNNvOPyUXW[X[UYW[Z[VV~ST{NNtMLqIFjFFiDDf@@a=<[76S22K,+@'%7OLU{~~|zwutsoizap{YhrQ_hGSZ?JOY]a]ew?Kb>I`>IbAMfDQjERkFSkGSkKXqQ`{O_xFRiBMd?J`Ha?KdDQjFSlGSlHTmIUmLYrSc~O^xGSjDPhAMd>Ja9D[5@U4>R1:L,4D&,: %0KINrt{sf{ptzh}cwg}bx_sZlYk_rezauRbGVsHWnGVh!&2\Y\v~xi~pstncwez_u]rdyeycwh}`tRcM]zPaxN^q=JZabkEGIIIIIIHHGEDvBs@r?oMTUSQzVX]^_`Y[XY^``c_c[\UWTU{UYOPuKHkGFgFGgCCb<:W64N--C~ysnizbt|WgoGS[COgBNhCOjGToJXrKYsLYsLYsN\vVgUeL[tIVoDQjAMf>JbQ09J*1@"(4u}mjnkvg|ez`vcyrrezg|\nTeUfXjQbvl;h{8`r4Wh.L^&=M¹TQ{UTWW]^]_Z\Z\]]Y[]_XYXZWYVYQQwMMpKKoLOqDDc?=Y:9T22HΆ{wrmewYhrIU^AMdERkDQlFToKYtL[vM[vM[vN\vRb}ZmO^yIWqFSmCPiANf>J`:EZ6?S1:K,3B#)5puilnwsrihz|dxcwYkXj^q_rO_u9DZKIJKKKKKJIHHGyExCuAq?nG\HJKLLLLKJJIH~F~D{Bu@n=h9_v5Wl/N_烈WW[^bfac\^ZZ`c[]ZYXYXXTTzSRyRQxPOtMLqKHlFCcA=Z;8S︼ċ{xrgxZitERkIWrHUrIWtN]yO^zP_{Q`|Td]oP`{M\vJXrGUmDQh@Lbg}:^u5WlM]kfdZ\cfbc^aae^`[[ZYZ[\^[_UWSS}RPvQLoOHhJBaC=YSM^璥~zrgwis{ZauIWrIWsIWuN]yP_|Q`|P_|Ue]oWhN\vKYrHUnEQiALc=G\8AU2:LKLUu|wmljosrf}d{cxaubuh}kh~WhX_uLKLMMMKJJIHGEC|Ar>j}:`t7XkWW\\addh_]]Z\WZXY[[^]a\`UVTPuSKmPGgIB`C?YَzqetJWqJXtIWuKYwN]zP`|Q`|Wi_rZkN]wKYrHUnEQiALbQº}Āztz{njvyg|mg|Zlſ]K}LLLKJIGF}E{Bu?nRn{idZX[X\Z\^_a]\XXUT~UPwTOtSKoNHkYTlڗ{x^g}M\wO^zQ`|Ra}Ue\oYjO]wJWpGSkCOf>H_PSbڃ|ƈ|mu|mcwht棯OKKKJIF~Dy>o>bp婤^_Y[]`ad_bXZTPxSNsMGiHA^ɐxk|㣡R^xN]xP^yUe\nUeLYrHUmALb>EV箱susyiim^oőe~TjuShs_ksljZXkXUfb]i̥r}ozqx~hkx\brX]ja`hĿɘu}fpcmhlz⿹fkqY`gY`ggkq⿸`ekOW_OW__cjή]]aLOSLNR]]a⿸egmW[bV[cegmὴ\YbLIULIT\Ya⠜AOY:JV:JV:KV:KV:KV;KV;KUI)=I)=I3CN᜗-6⟛>HR7CN8CN8DO8CN8DO8DO8DN8CN?GQ᜕,-B"=":";";"9!8 3 4,,>S\e:KW;LX;MY;MX:LX:MX:MX:LW:LW:LW;LV;KUU]dKU]*?J)?K)?K%J(=I'=I(=HJS[GJP!.9%2>'4A&4B&3B&3B&3A&3A'4A&2>%2=%1LVļº-CN*CQ+ET-GU+ES(BQ&@N)AN*AM(>J&=I&NY$&@$(E$)H$(I#'D"$< "7!8"<#@$A#@"<$%:GZhMcsQjySm|Rl|QjzOgwMdsI_nF[iBUb>Q];NY:MX:LW:LW;KU?MU/GU0M\2Qa2Rc0Pa/N`-L^*IZ+HX,GU+DQ'?M%J,;F)7A%1<$1=%2?&3A'4A%1<&08ES`IWfM]lObpPbpPcqNbpManK^kGZeBT_>NXJ)?J'=H$:F(=ILV^MT_9L_J&J-AL:M`BWmAVm=Rc:O]>Tg=Sh=Rg?Sh>Qg=Pf:La3FY.@P*9E#1;$1>&4B%2?#/:濫Wiz]qaxd}edd}ax`x[uZrWo}NfuJ]jFXd>OY;IS9EP8DN7BM02S35V47\59`5t5=p4:g37^14U03T.3X+1V)-P%(F"$> #<";!6 2_wchjlmmlkif~bz]uXpSj}OevH^l@T`J*?J/CM9IR;KW@VlF]xAXo>UfCZpC[sD[sE[rF\qDYqBWn?Sk=Qe7J[2CU+;G$2>'4B'4B%1=-6=]m~awd{illjhigb|`x_vZsTl{M`oI]i@Q\;IT8EP7BM>FQ9:X59_7:`8l9Av9C{8@s7i;?j;@miJuAoQ|pwrneqnml`Im;^q6Xk0Pb-IY+CP,AL4HQAXlLeKeAZkF`uKeMgNhKdHb{C[pBZnAYoAWnDYm@Tg8K_0BP+:E*8F'4C"/;iptvurvtrokiieb~]sZrQguHZg=LX8EP7CN:>iBn>Ew?G~?H>F|>Cq=Amg:=d8J*:I)7F$1>]\`{qvywxyxwtqonmlie`zVoPdrFWd;JV7DOdflcaz=@h?Ag@DrAHAJAHAEu@Cl@Bl?Co>Bpo5=p28c/3V+.M&(D!#<"=\X`}x~||||{zxtpjb|\vWqOhwCWc=LWY`fYtQ}epeSGxM}P~NzLwOyV~]iOr7[o5Vi5Rb3KX:MUZdiZerOhPlLfF`rPlVqUpPkIdzGavOiIbz?XiD\sG_yH^vBXn;Pe1CQ,>M,;K(5BMOTvw|yz~}|zvtrsrqmhf_xWm|N`nBQ\9FQV\dWVp?AfAFuBHzCKCLCKCI}BGxBH{AFy@Et?Ex=EzNYY`ff`i~fNK~HzN~PM|IwIwR|`l\Bfy8\o8Wh7P^;OX[ej]k{QkRoOjLg}TpYuUrPmHdxLgOjE_rF^nE_vJc~Kb{F\t>Tj3GW0CR0AR+8FMOT|{}}~|zxvtvspkjc~]uSgvHYg=KVV\dYWqAEsCJDJELEOENEKDKDLCGwBGxAFv?Ew>F}n59`13S-.I'(@!"6LIQ~}|xske`}YvOgvBT_gkpzpu\H}G|OV]YRM{VP{Z^OtGj|=^p:Ud;Q[fmrlxRmUrSoJg}Rp[xZvRoOkIcvHbtHbtHc{NhMgKd}F^x>Ui6JX7K^5G[*8H]\`~}~}|}}xwromh`zYn~N`n@NZehnge~CGvEJ|FLFMFNFMFMFNELDKCHyBFsAFx@F{>H[k@WbQlYwWsLgzOmXvZwTqRoPlMjPlQmRmPjLeE^w>Ud:O`>Rh8K`)8E~ÆÄ|vwtoic|[qRdsCR_DHvFJyGMHLHL~HLHOGQGMFLEIxDHvCGwAFw?G~=F};Aq9;b57V12O,-E%%8ՅĊƈdžȅȅȅǃƂÁ~yqkh`VoH[h\cfbaa\dlosdPb\T~PzEnVzBexC`pG^hKg~Xv[yQnOk}TrZxYvRpTqTqWtVrTpRlLeE_tAXiAXn@Vn6J^)8C~Ƈć}yxvqle~]sTfuDTaDJ}GMHNILzILzIOIUHUHNGNFK|EIxDHxCGxAH~?G~=Cs:=e78W34R./I&&9膦ÎǍɋʉʇʇʆɅDŽă|tnjbXpN^j]nimgcbbkmllUL}PR~MyKtNtEh|NkyNclNgvRo]|WvOl~RpZy^{\y\y]y[wXtRnMhMhC\nBYlF]vAWo4GV2=E胡ƈɌNjʼnĉƇ}{vrlf~^qUfvIWdJNGNIMJKwJM}JSJVJVIPHOGLFJxEJ|DKBL@J>Ex;?h8:[46U/0K10@ΌȐˏ̍̋̉ˉɈLJņ}vqlcYo鱗mfjf_^YVVWSLFzM}_ePyIqSuVs拉Lh{Yx]|QnPmXw]{`}]{[y[wSqQmPlGbxC\nH`yH`|?Uk5GVﶿˇljNjƎˎʌɉÉň~yurmf|^pTevGNIM~JLzKOKVKWJWJRIPHMGKzFKEMCNAL?F{<@k9;_56U//I钰ÐȒ˒͑͐͏̎ʍȌŋ‰|xskb}hxnowvmge[YUMUnzs^JuY~cZo|]q~Vt\|SsSpPn^|TsVtVuSqTqQnKg~IbwJc|LeIa}DtQPiՊʈ̈̈ˇɅƂ}qe鮽]ZlrxĂscWw䤦UpRoWtYvWuUrVrSoLeEXmщ~xndw䣞NRJOISIRHNGL~FMDO>I=BmҢol~pzǛ|opp~fnyU_jT]g`dk΢}jtjwovedTSkSSm_]nή\\cKNVKNV[\cὴ[YeJKZKKZ[Zf⿸delUYaVZbdhnή\Z^KJPLKQ]Z_⾸`hmS_dR]cainᛖ*4A,;,;,;+:+:+:+:+:*4Aᛕ(-D#>#>%A&C'D&C%A'D*1J⟛@NX9GR4CO2BN3CO4DP4EQ6GR:JT?MW᜕,09"(3 '2%1%0!'2"'2%1$0-09❚.EO*EO)DN+EN1HP-DM+DM0IP.DM4FPEIR,<-<-<,;,:,:,:+9+9+9+9+:EIRDET"=$@$A$?%A&C'D&B&C)G)G(FEGZR[c8IT7JU9IT8FQ6EP5DP5EQ6GR9IS9JT5GR7GRR\cFFL%1 &2!'3&1%1%1!'2"'2%1$0 &1!'2FFLKW]&@K%BM+FP)DN+EN1HP,CM*DM0IO.DM+BL&@KGS\$1A!2D!4E!4E 3D2B1A0@.>,;+9+9+9*9+:".= (B'F)I*K*K(H(F'E&C%A'D)G)G*I*J#,IûUbBVcAR_R&=Q&,;*9*8*9+:"/>#,J!-Q#/U$1W$1X$0V#0T#/S".S!,O*J(G'E(F*J+J)H#-I@P^J_mJdsPfuNetLapK]lGYhDWfATb=P\9LX9JU9IT7IT7IT7FQ8EP-3?)1@)2B,3E06H06H-3E.3E+1B).>',;#'6!&4"'3"'3$0&1',6>X`B`i9Yg7[j8_l;am1Wh:\h>\f9T^1MW4NU0GO+BL&@K&BM)DN)CNHQ^(?T)BX+E[+E[,D[,D\,C[*AX(>T&S_:MX8IT7HS7GR4COPT]LNW09I/8J09L3;O6=Q5gw>jyBlz9cuAhvGitDcn?_i=\c1KU+CN(BM)DN(CN'CMKY`*CY,G^-Ia/Jc0Kd1Ke0Jd.G`*D[(CX'AV'?T'Q3>R6@T8BV5@S5?R6@R2U':P"4G/?,:+:,;*4@2=d,n->m-=k,P[8GR6FQ4CO;CO9AR9CW8CX7BW6BW;FZ;FZ7CX:EY:EX6AU5@S3=O.8J.7H-5D'/l+;g&4Z!.P+J*I*I¼[maijjjmjgd~^v]u\wZwYtRk{McrE\j=MY6EQ7DO6AL9DX?I_;G^:G];H^@K`>J_;G]?J_=H\9DY9DX6AT2=P3=N2;K*4C%.<#*7#)4#)4"(3YT~bbN{PH}PORYU}NxR|Lp|@aq6Yi,O_.LW)FP+EN0HP1Oi4Sn6Vs9Xv9Xv5Vr4Vq4Vq2Sl/Og/Of1Qj0Oh-Jb/Hb.F_*AW%Jb@LcBOe?Lb@LbDNc?J`+;[[b_a|4G}6J6J7K9M9N8L8M:O;Q;Q:P9N8L3F{3F{2Ex/@o+:e%3Y!.P*I\[it|hmotvqrthmigib}b_~VlTpMds@Q`9IU1ANcelcepBMeEQiANgANgEQhEQh@MeDPgGQhALdALc@Ka;E];E[=F[9BU1;N-7H*3C)0>&,7#(4][_s^]liTVNUTYa_T\[Dk~Cl}8bs8^l0R_+GR0HPbjnTf{7Xu;\|=]~;\{8\y9]z7[w5Yt6Zu5Xs4Wq6Yt5Wr3Rm5Qm3Nj.Jb+F\(AV%:N 2C,I_@J_:DY3>R0:M.8I-5D)/<$)5MMRleeohZWRYR[ddU``KsBm4bw:cs6[i-LY1JRT_dVi:[z>^>_9^|:_}:_|7\w8\x8\y7\w8^y:_|8\x7Wt8Tr5Qm0Mg-Ia*E[(?T#7I.?KMVSZ7J;Q;PUAYR1;N09J+3A%+7MMRpihrg]YV[Q^gjSbdPyDq9h~?jz8ap2Ta3NVS_det<^}@a?a:`~;a;`~8^y9^{9_{:`};c;b:_};[{:Wv5Tp2Pk/Me-H`*CY&;P!1C\\cch8L;OU@W>U=T=SJ`8DZ5AU3>Q1;M-5E&-:][_|mguhaYV^P^inWcgUFuDtDqc?b=_:Zx6Vr3Sn1Oi/Kd-F^*?U"4G9NT?V@W@W@WBZ?V>U>T=S>V;Q;Q:P7L3Fz0Bs,=j#1Tvx~|z~psppuomica{Wl~Lbr?LZDRkGToFToGVqLZtLZtN[uP\wKYtJXsKXsIVpERlHTlGRi>Kb:F\7CX6@T4=P/7H(/e=d=d>e@fBeAd=a:\z6Xt4Up4Qm3Ni1Jd,BZ#6I:N=R>U?V@WAXAXBZD^F`C\B[C\AY>Tl$2Wry‚ƄĂÁz}zzvtuqnfb|WoOfx?L[ESmIUrKUtJVtMZvM[uN[vS_zO\wLZvMZuIWrHUpJVoERj>Kb;G^;E]d@eBeAf?e=b:^|9Zx7Wt7Tq5Qn2Lg+E[-?NAS@W?V@W@WAXAYAYD]F`F`E_C\BZ@W@W;Q8M6I2Ew,=j/9Zs}ĉȀŇǂz}{wvtvknb~\vQfwEQ_OZrKVtOWyPXzS]{N[wLZvQ_yO\wN\wN[vHVrKXqJWoCPi?Kd@JdBJdBIafuA\e?cDfDh@g>g=e?eBgCgAf?d>c>b=`<\|;Yy9Vu6Sp0Mg)DY>U@WAXAXAXBYBZBZC[D^E^C\B[AZ?Vd?c?b?`>];Zz8Wu4To/MeIWfUb?V@XAYAYBZC[C\C\C\C\D]C\AY?VH]8BTuzchUf[apxdjqXUH~L~AoFjGmGmFkCiAh@e@dBdBdAb>_9[y4Vr1Rk1Nf¼ľAWBZC[C[C\C\E^F_F`E^B[AZ@X>V9N6H|»ʁɉ͈Ƃ|yz{uroa{žHWqO]xT_{OZzPZ{U^~T]}OYyPYyNWvJSsKTqKUnIRiALa;EYúzcgQf[apxdmp`UAwK{YuCjBiAh@fAdBdCcAb>_:\{5Xt2SnM]pWfAYC[C\D\E^F`F`D^BZB[?V;QPZތƃʉǃ~}{~yxppajP]wJYuLYwQ]zO[yMYwMXvITrGSoIUnKUkEPeRWfo\Re^^qxenmXNZ}塥Eh?e@dAdCdBb>_9[y2Rl4J_桠H^BZD]E^E_E^C\BZU7F\➚7E[,=S*:P*:P+;P*:P*:P,U7F\ᛗ(9I4G4F4F4F4F4F5H4G';Kᛕ(1;*8+:,;,;,<-<-<-<+4Aᛖ)4?+:+9*8*8*8+9+9+:+5BMUf-=T*:O)8M'6J&4H(7K(7K'6J'6J)8M+UMUgMUf-=T*:O)8M'6J&4H(7K(7K'6J'6J)8M+UMUgDLX4G4G4G5H2E0B0B/A1D4G5H6IDMZDGO+9,;!.>"/?!/? .> .> /? /? /> .> -=FIRDHP+:,;,<+;*9*9+9+9+:+:,:,:EHQ»2CZ.?W,=T+U*:P*:O,U*:P*:O,#/=!0>1B!3D!2D 2C2B1A/?-<,:+:+:+:+:*8 -:8Je4Ga4Gb8MjU->U.?W/@X+;Q'6J+;R1AX8Je4Ga4Gb8MjU->U.?W/@X+;Q'6J+;R1AX%AW#D] @Y ?Z&A\&D^"D^B]AY=U9O3H/B/B1D2E4F!5F+9K,=R.AW.CY,BX,AW,@V+>S*;O'7J$4F"2B!0@ /? 0@ /? .>!-:%6F$9L&;O&=Q&U,=T(7L)8M.?VKRcUc}:Om;QoE_IdHcD^?Vv:Pn;Qo9Nk6Je0BZ.@X->U,=T(7L)8M.?VKRcFXj'Kf$MkFf)He)Pn!Pp#Om#Li$Ie#Fa C\>V9O3G/B0C4G4GDLXKRa0D[1Ha2Jc2Kd2Ib2Ha1F^.BY+>S(;O&9L%7J$3E"1A!/? 0@!/? -+9*8+:+9+9EIRE^@XyGbMjKgB[}AYzC\HcJeF`E_@Xy7Kg.?W/@X->U)9N,U)9N,Q$-;+:+:+:OhJeD^OmTtGaLhNkSqPnF`BZ|F`F_D]8Mi3F`2E^-=T*:O->V6DYOhJeD^OmTtGaLhNkSqPnF`BZ|F`F_D]8Mi3F`2E^-=T*:O->V6DY,Wt,Xy Ty-Oq/\(]/Z}2Xy,Vw&Ux(Uw)Rr$Oo$Lj'Hc$E^@X5J0C3F5I(:J;Lc7Ok7Rn9Tq;Ur:So6Pk2Ng0Md1Mc2Mb1K_/H\,DX(?S';O&7J#3E 0A!0@ -=*2=4J^/Jc1Nh0Oh/Nf/Me/Mf/Me/Mf0Lf/Jc-G_+E\)BW&>R#:L!6G1A,;+:+9*4APnHbPnY{SrLhWxYzSqIdJeKfB[}D^Hb@Xx7Kg6Kf3F`*:P+R(:N%5G"1B"/?+91Oh3Pk2Qk2Qk1Qk2Rl3Sn4Sn4Rm3Pk2Oi0Mf.Ib-F^*D['@T$VNlKgZ{Y{QpUu^YzMiWxXyWwMiE^NkE_:Pn;Qo;Pn/AY+;P->V3`/]2Z5g2f8b6c+e.f4a2[0Y}/Z}.Xz Qs)Mk*Kg!Hc?W2H1D3F\{@^}@]|=Zx8Wr8Xq;[t:[v8Xs6Up3Rk1Oe3Oe4Ne/H_+CY+?U*;O%5G#1A!.<3Rm6Uq3To4To4Tn4To6Vs7Vs6Vr5Tp4Rn3Ql1Mg0Jd.Ia*E['AU$Tt=Ts>Ut8Mi+Tt=Ts>Ut8Mi+\{B`EaA]};Zx:\w=_y>_{;\y;ZwUtB[}>Ut-=T*:ORYih~[|`aQo_eWwZ{cVvYzZ|JfPmWwRpFa>UtB[}>Ut-=T*:ORYiSn8j,]8i.m/i\z:\x?a}@c>`~=^}A_C`@\y4Sl5Sl8To5Qk0Ld0H`1E]-@V&8K"1BMOWSbu6Xt6Zv7[w7Zw8[y<^~;]}:\z:\z7Zv7Zv8Yv6Ur4Rm3Pk1Mg-H_)CX&>R#9K2C,;JMUnWw_bUuch[}Y{dd^YzVv[}Z{RqE^B[}GbC\1D],=SRYjlWw_bUuch[}Y{dd^YzVv[}Z{RqE^B[}GbC\1D],=SRYjUr9k+_;l5o1l>m2q.raBaEdEeB_}5Uo8Wr;Xt7To3Oi1Kd2Ha0D\*=Q$4EMOXTey9\z9^{8]z9]{;^}=b=b<_~9]{8\x8]z;]|9Yw5Vq6Sp4Pl.Ld+G](AV%=P"7I.>JMTy\~^gYz\hbTt``TsbbVvVvJfIdPmNkD]4Ga0B[aetx\~^gYz\hbTt``TsbbVvVvJfIdPmNkD]4Ga0B[aetc};m/go:s(w;pc=c=a;_~9^{;_}<`:\{8Yw9Xv5Uq1Pi-Ja*DZ'@T$:N0A[[a]]keXydfUt`[}bf]SrLhJeSrUuLh?Ww9Nk6Jf]]keXydfUt`[}bf]SrLhJeSrUuLh?Ww9Nk6Jf=q3i4gc?c@c>b<_<_~<^}<]|:]{6Xt2Rk/Me,H_+D['>S 2Cabind]k_bfi_OlNkTtY{\~SrHc=Ts@Wx:Olabind]k_bfi_OlNkTtY{\~SrHc=Ts@Wx:Ol=w=r)]>t7x-sAs@r7s2t1s1r/n8j;f8e)b*`1Wx"Hh(Kg@WGiKmMk@aUs>Tq9Qk2H`*9L;^}<`;^};`=dAfAf@gAf?c=`=_<^~:]{9\y5Wr2Rl0Oh/Le.Ha*BW!5FhZ{aok]lnmlaTsTsZ{baVvLhC\E^F`>OihZ{aok]lnmlaTsTsZ{baVvLhC\E^F`>Oi:z@w8i4gAx8y2v@sArm:j3j*g,e3`0Su*Ss)Ol)EZLiJmNnGf=cBiGlDkAgEhEhCfAd>`=]|?[{B[zC[y?Yv;Sm3H_0>NAb?b>a=c>eAgDiCjAf@c@b>b:_}8Zw7Xt5Uq3Ql1Oh1Mg/Ib)BX.e=e@gBiBg@dAd?d=c:`~9\y7Xu5Up3Rm3Pk2Mh.Ia)AVpZ{lmdac`_`hkg_PnMjQoRqPmUd}pZ{lmdac`_`hkg_PnMjQoRqPmUd}MA{>z0nAnBv<|0~=z;x9v3t5s:n:f3`,`-c/WuF[q^uOpRoAd@iBjGkGlEkChCeEcJeLgJgFeBa>Zv7OhKVeWtAh>e>d>f?f=cg;e2g)i3i3^*SrOqQqIh@fAfDiDiDiGiJiOkNlKlGjDeA_|;Vq3LcDg@e>c>e>f=c=c=e=d/-y0u8s6q5o2m0o.s6t9m6c,TuQsRpJkIkJlIkKlOnPoOpLpJmJhFb=Zv6Qj¼Cd?d?hAj@h?g>g=e=d;`~:]{;\|;\|9Yw4So4Oh¼o\~Z|[}^faWxaeeb\bwo\~Z|[}^faWxaeeb\bwUB|D|C@x@8|1x7{q=i6Z~4Sq壨PqLpMpNpOpPoQlLhD]{>Rj䡤FgAd@c>c>b>`>`;_~5Vr7Oeјrcvashrјrcvashr潽Ǎ^tMd|Mbx[gxÒgqWauV^pado侺al|P\lOYh]blὴ[[`JMTJMS[[_ὴ[YeKL\KK[[Yd⿸ehoU]eV^ffioὴ][`MKRMLR][`⽷^flPZ`NX`]ekᛖ'1:(3)6*8*8)6(4)7*8(1<ᛕ(-C%B'E(G)H'F%B$@#?(-C⟜ANW;IS9GQ7FQ5EQ8GR:IS8IT4HT-;,8,:-;-;-<,;!.;"+G!-O#/S#0U#0U"/S".Q"/Q +L(G(G(G(G(F&C '@ü?MW;O\=Q^BO\BP\AO[R%>Q#;L!8I!7G"7H!5G1@.;-;,:,9,<-<+: -:&0P'5])8a)8b'6_&3[$1X%2Y%2X!-P(H'E&C&C'E(E%B&>DS`IZhF_pKbrQdrQesPdqI]lCYgEWdAR]9LW4IU5GR8EP7CN6DO6GR+0>-4C.5E,4E/6H18I18G-4D*1@)0>%,:#(6"'4#(3#(3!&2 %2%)5;V_>`iBenCcn:`m7]l5Zi6Vd6T`-M[/LW0IS/HP-IP.HO,EN-FN.ENHP]*AX+DZ*E[(BW%>P$+8+:-<-<+9DHOHKd+:e->k,=j*9f(6b'5_'5_)9d*:e&4]#/U*L'E%A%A'D'D$?DDRZgtQaqShzOoXs\t[qZqSk{MgwPesMboCZg9Q^8KW9HR7CN3@L3DPPYbJLV08I4R8>R5bq@co9\k1Uc6R^3PX-IQ,EN.GO0IP/GNKW^*DZ0Jd.Jb,I`+F\(BV'CV(DX+E[+F\(CX&AT%=P"6H0?.>-=-<,:+9+;f0Br0Bs.>n+:i+:i,Qfy[l~[uW{_}d}d~axYpRh|TgyTgwLetC^nAWd>OZ9FQ3>K0?L5CO29M8@S:CV7AV8@W9BX9BWm=mCpLsQwCjyBhtCcn:Ze*LX0KT1IQ.FO.FN,DM3G\/Kd4Pl1Nh/Ld.Kc+I_-Nd.Ne/Me/Me-Kb,J_+G\'?S#8J"4G0A.=-;,:*3@2=c0Ar4G{2Ex/?q/?q2Dx4G}7L9N7L5I1Dw.?n*9d$1W*K(F(E'D%A(-BYsZqcwd^dihdx[nUjYj~Zl}Rk|IfxIcrH[g?OZ4AN/;I4BN@MV;@T5?T=F[@I^G]?H\>FZ:CX;CW7?R09L/8J17H-2B%+9 &2%1 %2-/:Mo{R{UOL{NyOI{HxR|VIsEo}Lq{Dhs;`j/P\2MV0IQ/GO,EN3HQ⾸.Jb4Ql7Tr5Qn3Pl2Rk1Tl2Wo2Tm1Qj0Nh.Kc,J`-Ja+G]'@U&;P#6I1@.<,;+:.>m4H}7K4F|1Bu3E{9N;Q:P:P8M5I2Ey1Cu/@p*:e$1W +M)H(E'C#?_{cyjmekmkgzby[wc|byYsOoOj{QguI[h:JW0=K3@L9HR8AX:E[AKaFOfCKe>Ib@KaBLbCMa@J_=G]@G^;CX4=R3U:O8M8L4G~0Bv1Bu2Dw/Aq)8b#0U!,N*I(E%Afezptloppolbij`~UwTqVn}QguCXg3BQ4?L9FQ>G`>IaBMdGRiEOgBMfEOgEPfHQhENe@JbCKc?H^9CY6@T6?R6=P/6I)/@")6 &2!&3Y\]TQ]STNWRHwFwVRzGsEmx9[i9Wa3NV2JQ.FNcm8Wt:\z<\|:Xw8Yw8^z7_y5Ys2Rl3Sm4To1Pi-I`.Lc0Oh.Md.G`+AX%;N!5F/?,<[\b`b}7J:P9N5H7J=T@X=T8L7K^R#8J0@KMVT]G^>H[:CW4;Q06J(/?"(5LKQobfjUdo_WU]d]HX\XPNwDjxGjs?\e/JSQ\bet?`AdBc?`F\6>T19L+2C$*8]Z_~ifsY`pmaMXbZQ^e\SKwHpHmyDdm4OX_fl?`BeCeBc=`U=T9N3Ey.>n->l-=k)8a +L|}|w}wtxuldgjb{MbwCUi@Q_KWqJVrKYsQ]xQ\yLXuJVsLWuQZxS\xLWtIUoKVoDPi@Kd@KcCMcBJa9BX2;N-5F&,;diu_ZrseONajT\eYPGwR{Ms~Fhr:U^?_BfDhDf=`>dAjT8L2Cx0As1Cu/@p)8a*KԀy|wnvwogjmd{RdyG^qAVdºLXqJWrMZvT_{T^}NZxIWsKXuQ]yT_zMYtIVpKWpFRkAMgALeDNfCLc;DZ4>R08K(->ljqnUotj^]li]`fcJI|URyFkv9U_DaBeEiFh?b=cAjAl;f;e=e>eS/8K26D[kvtZguua^mtbXjYHUVNvDjv;U`BcEhGjBf=dAhAjd;a5Ys6Xt6Ws3Sn6Tq6Sp0Ke(@V;PD\D^>T=SBYE^F`HbJeIeD^e@i9_{9`|;`~S>T?U@WC\E_@W:N8L9M9N9N6J.>nHLf鎫{ʀʋȌŅx}oijg~bydubiS^zUa}WcU`MZyIXuM\xT`}T`}M[wOZvQZwHRoDOjEPiEOeAK`:CYMO]lkmg\d{c]elaL^k][VRzVnzFfFjCi=c;c?h;`}8[w:^|TAXD]C\?V=S=SiAk>g:ce>e;c9a}:`}8\y3Uo2Le»ýD[GaF`F_F_D\C[E^HcIdE_AY@W=T8M3Ctºۆ}|ʆƋĈ|s||qgcdƿUa{Vb}Ta|M\xJYvO[zU_~W`~Q]yLYtO[uKVpCOi@Ld@KbBJ^Ļmqru{sb`osZVihRRXr?h>iAmAm?m@m@j?g=e:d9`|7ZvM`sWgD]GaGaGbHbIdJfKgIdD^@X:POYߍÁ|yƀzjtxrgnfmS_zP^zO[yO[yP]zT_zR]yMXtNYrKVoBNh>JbTYkvqkvvcclvj_gak䠢BcnN.~^> n N . ~^>nN.// set a color of the background (sky) background { color rgb <0.1, 0.3, 0.8> } // place all settings of globally influenced features here global_settings { // [GLOBAL ITEM(S)] } // used in global_settings, sets cutoff point of ray computation (1/255 default) adc_bailout 0.0039 // used in global_settings, sets an overall brightness/ambient light level in the scene ambient_light color rgb <1,1,1> // used in global_settings, sets image gamma in relation to display gamma assumed_gamma 1.0 // used in global_settings, specify the assumed character set of all text strings charset ascii // standard ascii (only 0 to 127 are valid) //charset utf8 // unicode //charset sys // system specific charset // used in global_settings, sets image output to use grayscale only (TGA, PNG) hf_gray_16 // [on/off]   rq'arrays.inc'.txtsq'colors.inc'.bmptq'colors.inc'.txtuq'consts.inc'.txtvq'finish.inc'.bmpwq'finish.inc'.txtxq'functions.inc'.txtyq'glass.inc'.bmpzq'glass.inc'.txt{q'math.inc'.txt|q'metals.inc'.bmp}q'metals.inc'.txt~q'rand.inc'.txtq'shapes.inc'.txtq'shapes2.inc'.txtq'skies.inc'.txtq'stones.inc'.bmpq'stones.inc'.txtq'strings.inc'.txtq'transforms.inc'.txtq'woods.inc'.bmpq'woods.inc'.txt]30 - Statements,10 - background.txteeʙPʙR620 - global_settings.txteeʙPʙi 25 - -.txteeʙPʙ.30 - adc_bailout.txteeʙPʙh240 - ambient_light.txteeʙPʙ|250 - assumed_gamma.txteeʙPʙ`&60 - charset.txteeʙPʙ,70 - hf_gray_16.txteeʙPʙj680 - irid_wavelength.txteeʙPʙs t H Z*Z(d2r:r@// used in global_settings, sets the color shifts for iridescence (irid {}) irid_wavelength <0.25, 0.18, 0.14> // used in global_settings, sets the maximum ray tracing intersection depth (1 or more) [64] max_intersections 64 // used in global_settings, sets the maximum ray tracing bounce depth (1 or more) [5] max_trace_level 5 // used in global_settings, sets the type of noise computation // there are 3 available noise generators // they can be used for single pigments, etc. too by adding // noise_generator x to the definition //noise_generator 1 // old 3.1g plateaud noise //noise_generator 2 // fixed version of 3.1 noise noise_generator 3 // New 3.5 perlin noise // used in global_settings, sets how many instances of waves/ripples to use number_of_waves 10 // Bounds extents functions // give the extent of the object's bounding box #declare Obj = sphere { 0, 1 } #declare Min = min_extent (Obj); #declare Max = max_extent (Obj); // These identifiers are built in to POV-Ray, ready to use // #declare pi = 3.1415926535897932384626 // #declare true = 1 // #declare yes = 1 // #declare on = 1 // #declare false = 0 // #declare no = 0 // #declare off = 0 // #declare u = <1,0> // #declare v = <0,1> // #declare x = <1,0,0> // #declare y = <0,1,0> // #declare z = <0,0,1> // #declare t = <0,0,0,1> // Other built in identifiers with no fixed values are /* clock // current clock value in animations (0..1) clock_delta // clock step between frames version // version (default 3.6, can be changed with #version) initial_clock // start clock value (+KIn.n) final_clock // end clock value (+KFn.n) initial_frame // start frame number (+KFIn.n) final_frame // end frame number (+KFFn.n) frame_number // current frame number clock_on // 1(true) if animation image_width // width of current render image_height // height of current render */ // The conditional expression returns a value depending // on whether an expression is true or false. // In this case: if X is larger than Y, A is returned, otherwise B #declare Value=((X>Y)?A:B); // Various float functions /* // (---general---) #declare X=div(A,B); // A/B (integer) #declare X=mod(A,B); // A modulo B #declare X=sqrt(A); // square root of A #declare X=exp(A); // e^A #declare X=log(A); // Natural logarithm of A #declare X=pow(A,B); // A^B #declare X=max(A,B,C, ...); // Maximum of A, B, C, ... #declare X=min(A,B,C, ...); // Minimum of A, B, C, ... #declare X=int(A); // truncate A to integer part #declare X=abs(A); // Absolute value of A #declare X=ceil(A); // ceiling of A (smallest larger integer) #declare X=floor(A); // floor of A (largest smaller integer) #declare X=defined(A); // true if A is a defined identifier // (---trigonometric---) #declare X=cos(A); // cosine of A #declare X=cosh(A); // hyperbolic cosine of A #declare X=sin(A); // sine of A #declare X=sinh(A); // hyperbolic sine of A #declare X=tan(A); // tangent of A #declare X=tanh(A); // hyperbolic tangent of A #declare X=acos(A); // arc-cosine of A #declare X=acosh(A); // hyperbolic Arc-cosine of A #declare X=asin(A); // arc-sine of A #declare X=asinh(A); // hyperbolic Arc-sines of A #declare X=atan(A); // arc-tangent of A #declare X=atanh(A); // hyperbolic Arc-tangent of A #declare X=atan2(A,B); // arc-tangent of (A/B) #declare X=degrees(A); // convert radians to degrees #declare X=radians(A); // convert degrees to radians // (---arrays---) #declare X=dimensions(A); // Number of dimensions of Array A #declare X=dimension_size(A,B); // Size of Array A in dimension B */ // inside function tests if a certain point // is inside a specified object #declare Obj = sphere { 0, 1 } #declare Point = <0.6, 0.5, 0.6>; // if point is inside the object: #if ( inside(Obj, Point) ) //... #end  :90 - max_intersections.txteeʙPʙu6A0 - max_trace_level.txteeʙPʙl6B0 - noise_generator.txteeʙPʙf6C0 - number_of_waves.txteeʙPʙc10 - background.txt20 - global_settings.txt 25 - -.txt30 - adc_bailout.txt40 - ambient_light.txt50 - assumed_gamma.txt60 - charset.txt70 - hf_gray_16.txt80 - irid_wavelength.txt90 - max_intersections.txtA0 - max_trace_level.txtB0 - noise_generator.txtC0 - number_of_waves.txt]40 - Expressions*Bounds extents.txteeʙPʙ&Built-in Ids.txteeʙPʙ:Conditional Expression.txteeʙPʙ,Float Functions.txteeʙPʙ$ inside.txteeʙPʙ0Logical Operators.txteeʙPʙR V 6\Z(rL rB// As logical operators there are '&' and '|' standing for // logical AND and OR. // They return arithmetic value 0 for false or 1 for true. // Note that A and B are not handled bitwise but logical. #if (A & B) ... // do this only if both A and B are true #end #if (A | B) ... // do this if either A or B is true #end // ( ) ! * / + - #declare MyResult = -2*B + (A*A - 4) // the rand() function creates a reproducible sequence // of pseudo-random numbers between 0.0 and 1.0 #declare R1 = seed(0); // initialize random number streams #declare R2 = seed(12345); // place sphere with random radius at random position // use different random number streams for position and radius sphere { , rand(R2) } // Relationals must be within parentheses // Return arithmetic value 0 for false or 1 for true // < <= = != >= > #declare BallColor = pigment { red (clock > 0.5) } // black or red /* various string operations asc(S1) // Convert 1st character of S1 to ASCII value chr(A) // Convert extended ASCII value A to a 1 character string concat(S1,S2) // combine S1 and S2 into one long string file_exists(S1) // Search current and include directories for existence of file S1 (0 or 1) str(A,L,P) // Convert float A to string, at least L characters long, // with P digits after the decimal point (if P is -1, make max) strcmp(S1,S2) // compare S1 to S2, return -1, 0, or +1 if S2 is <, =, > than S1 strlen(S1) // Returns # of characters in string S1 strlwr(S1) // Lower case of S1 substr(S1,P,L) // Sub-string from S1, start at position P for length L strupr(S1) // Upper case of S1 val(S1) // Convert string S1 to float file_exists(S1) // returns 1 if file S1 is found in library path */ /* // some special control characters that can be used within strings "\a" Bell or alarm, 0x07 "\b" Backspace, 0x08 "\f" Form feed, 0x0C "\n" New line (line feed) 0x0A "\r" Carriage return 0x0D "\t" Horizontal tab 0x09 "\v" Vertical tab 0x0B "\0" Null 0x00 "\\" Backslash 0x5C "\'" Single quote 0x27 */ // trace function tests for intersection with a specified object #declare Obj = sphere { 0, 1 } #declare Norm = <0, 0, 0>; #declare Start = <0.5, 0.5, 1>; #declare Pos = trace ( Obj, // object to test Start, // starting point -z, // direction Norm ); // normal // if intersection is found, normal differs from 0 #if (Norm.x != 0 | Norm.y != 0 | Norm.z != 0) //... #end // extract each component of a vector: // for 3D vectors: // #if (MyVector.x > 5) ... // #if (MyVector.y > 5) ... // #if (MyVector.z > 5) ... // in addition for 4D vectors: // #if (MyVector.t > 5) ... // for 2D (UV) vectors: // #if (MyVector.u > 5) ... // #if (MyVector.v > 5) ... // vector functions /* #declare X=vaxis_rotate(A,B,F); // rotate A about B by F #declare X=vcross(A,B); // cross product of A and B #declare X=vdot(A,B); // dot product of A and B #declare X=vrotate(A,B); // rotate A about origin by B #declare X=vnormalize(A); // normalize vector A #declare X=vturbulence(Lambda,Omega,Octaves, A); // X+A gives a turbulated version of A */ (D# crystal.ttf$ cyrvetic.ttf% debug.inc& finish.inc' fract003.png( functions.inc) glass.inc* glass_old.inc+ golds.inc,Icon -logo.inc. marbteal.map/math.inc0 mechsim.inc1 metals.inc2 mp_consts.inc3mp_functions.inc4 mp_types.inc5 mtmand.pot6 mtmandj.png7 orngwood.map8 physics.inc9 pinkmarb.map: plasma2.png; plasma3.png< povlogo.ttf= povmap.png> pprocess.inc? rad_def.inc@rand.incA rdgranit.mapB screen.incC shapes.incD shapes2.incEshapes_old.incF shapesq.incG skies.incH spiral.df3I stage1.incJ stars.incK stdcam.incL stdinc.incM stoneold.incN stones.incO stones1.incP stones2.incQ strings.incR sunpos.incSteak.mapTtest.pngU textures.incV timrom.ttfWtone_mapping.incXtransforms.incY ttffonts.catZ whiteash.map[ woodmaps.inc\ woods.inc] Insert Menu.]00 - Scene templates^||ʙPʙKA] 10 - Headersm||ʙPʙKA*]20 - Include filesq~~ʙPʙKA$]30 - Statements ~~ʙPʙKA&]40 - Expressions ~~ʙPʙKA0]50 - Misc. DirectivesʙQʙKA"]60 - AnimationʙQʙKA] 70 - Colors ʙQʙKA.]80 - Special effectsþʙQʙKA . < 2 0 0 f8rL$^8|N&f<tL"xL&tP$`6// note that #declare of float, vector and color require semicolon at the end #declare MyColor = color rgb<0.7, 0.5, 0.3>; // sets the default texture that objects get when they have no texture specified #default { texture { pigment {color red 1} finish{ambient 0.2} } } #if (High_Quality) // This section is parsed if High_Quality is true #end // End of conditional part // or you can use the else clause too #if (clock > 2) // This section is parsed if clock is > 2 #else // This section is parsed if clock is <= 2 #end // End of conditional part #if (expr) // true stuff happens here #else // false stuff happens here #end #ifdef (SphereFlake_Shape) // This section is parsed if SphereFlake_Shape is declared #else // This section is parsed if SphereFlake_Shape is NOT declared #declare SphereFlake_Shape = sphere {0,1} // make a default shape #end // End of conditional part #ifdef (ident) // true stuff happens here #else // false stuff happens here #end // similar to #declare, but limited to the current scene file/macro // note that #local of float, vector and color require semicolon at the end #local MyColor = color rgb<0.7, 0.5, 0.3>; // macros can have parameters and are useful for 'programming' scenes #macro Spheres(A, B, C) sphere { A, C } sphere { B, C } #end // this macro can be called for example with union { Spheres(x, 2*x, 0.5) } // display user defined messages in the Povray output #debug "During scene parsing, general info message" #warning "During scene parsing" // Let's make some constant names #declare CS_Medium = 1; #declare CS_Hard = 3; #declare CS_Easy = 5; // Let the user choose the method to use #declare Complexity_Switch = CS_Medium; // or CS_Easy or CS_Hard // Do something dependent on the user's choice #switch (Complexity_Switch) #case (CS_Easy) // This statement is done if Complexity_Switch is CS_Easy #declare MyShape = box { -<1, 1, 1>, <1, 1, 1> } #break // End of this case section #range (CS_Medium, CS_Hard) // This statement is done if Complexity_Switch is CS_Medium // or CS_Hard or anything in between #declare MyShape = torus { 1, 0.5 } #break // End of this range section #else // This statement is done if none of the above match #declare MyShape = sphere { <0, 0, 0>, 1 } #end // End of switch statement #switch (expr) #case (expr) #break #range (expr,expr) #break #else #end // identifiers can be destroyed with #undef MyColor #declare Temp_Vers = version // Save original value of #version #version 3.0; // Change to 3.0 mode // Version 3.0 stuff goes here ... #version Temp_Vers // Restore original #version value // Create 10 balls along X axis, from 0 to 9 #declare BallCount = 0; #while (BallCount < 10) sphere { , // NOTE: <0,0,0>, <1,0,0>, <2,0,0>, etc. 0.5 } #declare BallCount = BallCount+1; // increment our counter #end // spin the torus around the X axis, as "clock" goes from 0 to 1 // the torus will rotate one complete 360 degree revolution. // Note that the texture is put on BEFORE we rotate so it rotates too. torus { 1,0.2 pigment {color red 1} rotate clock*x*360} // additional animation variables #declare X=clock_delta; // clock step between frames #declare X=initial_clock; // clock value of first rendered frame (+KIn.n) #declare X=final_clock; // clock value of last rendered frame (+KFn.n) #declare X=initial_frame; // initial frame number (+KFIn). #declare X=final_frame; // final frame number (+KFIn). #declare X=clock_on; // true if scene is rendered as an animation // rgb - Red Green Blue color shortcut color rgb <0.2, 0.3, 0.4> // rgbf - Red Green Blue Filter color shortcut color rgbf <0.2, 0.3, 0.4, 0.9> // rgbt - Red Green Blue Transmit color shortcut color rgbt <0.2, 0.3, 0.4, 0.9> // rgbft - Red Green Blue Filter Transmit color shortcut // NOTE: filter + transmit should always equal 1.0 color rgbft <0.5, 0.5, 0.5, 0.4, 0.6> color red 1 color green 1 color blue 1 color red 1 filter 1 84com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.Safari4com.apple.quarantineJ0000;4e741bd7;Safari;AD20E64D-F98E-4838-B932-935AF48D433F|com.apple.SafarinN.~^>nN.~^> n N . ~^>nN.color green 1 transmit 1 10 - clock.txt'20 - additional animation variables.txt] 70 - Colors 10 - rgb.txteeʙQʙC 20 - rgbf.txteeʙQʙQ 30 - rgbt.txteeʙQʙS"40 - rgbft.txteeʙQʙ 45 - -.txteeʙQʙ 50 - red.txteeʙQʙ "60 - green.txteeʙQʙ 70 - blue.txteeʙQʙ$80 - filter.txteeʙQʙ(90 - transmit.txteeʙQʙ 95 - -.txteeʙQʙ8A0 - color components.txt¾eeʙQʙ 10 - rgb.txt 20 - rgbf.txt 30 - rgbt.txt40 - rgbft.txt 45 - -.txt 50 - red.txt60 - green.txt 70 - blue.txt80 - filter.txtnBj> tX@,<(ifdef example.txteeʙPʙ ifdef.txteeʙPʙZ local.txteeʙPʙ macro.txteeʙQʙ messages.txteeʙQʙ*switch example.txteeʙQʙK switch.txteeʙQʙY undef.txteeʙQʙ6 version.txteeʙQʙ while.txteeʙQʙ declare.txt default.txtif example.txtif.txtifdef example.txt ifdef.txt local.txt macro.txt messages.txtswitch example.txt switch.txt undef.txt version.txt while.txt]60 - Animation"10 - clock.txteeʙQʙ T'20 - additional animation variables.txteeʙQʙl P " V ,  n @  ~fTB0*Math Operators.txteeʙPʙ9rand.txteeʙPʙw6Relational Operators.txteeʙPʙ Strings.txteeʙPʙ trace.txteeʙPʙ0Vector components.txteeʙPʙ).Vector Functions.txteeʙPʙBounds extents.txtBuilt-in Ids.txtConditional Expression.txtFloat Functions.txt inside.txtLogical Operators.txtMath Operators.txtrand.txtRelational Operators.txt Strings.txt trace.txtVector components.txtVector Functions.txt]50 - Misc. Directives declare.txteeʙPʙ} default.txteeʙPʙ"if example.txteeʙPʙ5if.txteeʙPʙV  V  j 4T"rB2// extract each component of a color: // #if (MyColor.red < 0.5) ... // #if (MyColor.green < 0.5) ... // #if (MyColor.blue < 0.5) ... // #if (MyColor.filter < 0.5) ... // #if (MyColor.transmit < 0.5) ... // set global atmospheric fog effect in the scene. // at the fog distance, there will be 63% visibility fog { fog_type 1 // 1=constant, 2=ground_fog distance 10 color Gray // can also have 'filter' and 'transmit' // (---turbulence---) //turbulence <0.5, 0.5, 1.0> //turb_depth 0.5 //omega 0.5 //lambda 2.0 //octaves 6 // (---ground fog---) //fog_offset 0.5 // height of constant fog //fog_alt 0.5 // at fog_offset+fog_alt: density=25% } BMC6(x0CzzzzzzzzzzzzzzzzzzzؤҭߤԞz֝ˤzizޜОΛ֍эԹzzzjtzzzzנӡjiXtzzzzzztj~cyVrۤ掻ĎĎĎĎĎĎĎĎĎĎěϱ{{{{{{{{{{ݲݛǫݢӞ{ם̤{jȷΛmmϭ{{{{xjt{{֬ަjiXt٦٭{{{{{{{{{tj~cy[vη{{{{{{{{{{{{{ڱ㎼ŎŎŎŎŎŎŎŎŌ·Ѥώŗʣ͎ś͒šȎŞ}וmnyj{{~jiXt{{wj~cyZuŏŏŏşŏŏŏŏŏŏŏŞӿҏŏŏŏŏŏŏŏŏŏŵͧ֗ʣϏŗʣ͏śΒÚɏŧ۪ٙÿ飷Ӑ{{{ߔms}j~{{{{{{{jiXtϴ{{tj~cyXt{ԷؤؚККККККККУ׷||||||ٱўΙ͔|˓|ϒÚʩܮ՗ĚϘ|mn|jϚϚϚϚϘΏƄjiXtᏽƏƏƏƏxj~cy[v|ؿККККККККЮۚККЋ|||ÚЙϢ׶ЫޣӟϞѣϚМϫ֚ХؚʞΩݨܫێrhКЊmtККЕ|vjv֛jiXtЏǏDž||yj~cyYtǏǏǏǏǏǁ||ۿښњњњњњњњњѲ}}}}}}}}˒ú잸ж垺䝹䘮ʏ}k}}}timm}~jКЗ}ֶjiXtߚКККККИ}}sj~cyXsяǏǏǏǏǎƾӏȏȏȵяȏȏȏȏȏȏȏȝڧۊϜϟОҢКќТγࡷѨضᪿۘŶ}rjњњњъmuzjtՔ}}}}}jiXtј}}}wj~cyYtĻ̙}}}}}}}}}}}}}}}}}}ʬލЧٕȓʧ}Ѡͽڱ탡ىƴ}tj}}}}zmpzj}}}}}}͔jiXt֝}}}}ƚwj~cyYuҏɏɏɖ~~~~~~~~~~~~~~~~סn̞яĎƝ̔ͥٝݵm͂ċ~~tj~~ǚҕmp{jx~~~~ǙѶjiXt~~~Ե~Ζwj~cyZu~ɝաؽ~~~~~~~~~~~~~~~ȷ͔nȔɊœܷ̾m|~~~tjȚӳmo۝~zjx~Ɛ˱jiXtҝ~~~~~јuj~cyZu~„„„‘ք„”ϽՅÅÅÅÅÅÅÐՅíԗϕʒțхˑȍîoϩӏḿãۣۣtjԬ㔼moۣۣyjwӬjiXtǞלոvj~dyZu˝֞׶օąąąąąąĜɅąąąąČȑɫݳߙΆ†ĈÞͣܔoϙӬm{tiܣܣܣ܏mnxj}ܣܣܣܝ΢jiXtͬݬܰuj~dyZụܣܣܬ‷ံЅŅŅŅŅŎ˘Ѭ䈧’ɑːĐ͌وoχŐ͔mrtjmkŅńĀ}jˁӅŅŅŊjiXt녻ŕޣwj~dyYuܫߣܯݣݪး€€€€€῭‹ʚ֚֚֚֫逸€€€¢ܟ؞Ԡ֝Ӣڠ՝ӣڕ˦ߜӠ֡ٚ̀†woϛmx€€tjۆƤmo޼€€zjrơݻjiXtݣ҆Ɲث‸vj~dyZvݣݧΆƝث䀸€¸܁ÁÁÁÁÁë⁹ÁÁÁÁÁâݮݢݢݠۚәѝԢ؝ӢۦګߧޏǛ֑ʕ͈yǁÆxųoϡmw֚֋tiךךך׌mr偹zjsךסjiXt̠ܣޣުށÁuj~dyZvϐϔɁŁŁŁŁŜぺŁŁŁŌ͐Ш於ύɔ͆ÖΡۙИѣܝӨ❾ߡُxȚׁvĚ׏oϙղmwtj遺ŁłmpީxjrŁŜ٢ދ̎jiXt遺ŁŁŅLJɊuj~dyYu͑М؂ƂƂƂƂƌ䂼ƂƂƂƤهʇʇʇʔѡ٦ݧߠحۧҌȒ΅ËxաݕyxŪ挽oρÂƉm̓tiЂƂ|mp{jkƅȎϠݳjiXtɂƌΓӣݒ҉}˅ԏ֔ϮݓӌΉˊ̝ۨˇˇˇˇːѾχˇˇˇˋθҌɕЖҜՏ̗ѨݣܡrϘwՒҋ{ʗ׃wžoϟۂȈmqˏtiႽ|mpzjuȈٚ̚٢jiXt؃Ȭߗ׃ȃȃȃȃȭჽȃȃȃȃȧɃɃɧރɃɃɃɃɥ郿ɃɃɃɤθӥߛՠݞׂלrϷx֦wȈ̀vđԖoϟܷm}ÃɎёsjmlڤՈ͝vjw߈͌НjiXt͈͝ݩݩ݈͈͑Ԣ˄˄˄˛ݿ҄˄˄ˇּͨƒŔҷݦܚy֟rϣx֤ኹxȨ灮vń˓oϚٿmwڄsjmpۑՍҠzjrޙە؛ݜݔrq`؟ߡښ۵ݕخ՟߼ٰϗٿձڙܙܙܟܙܙܪ͖݅ͅͅڭ{Ôyzğ۠ݠܠއيڈxՕrϗwՌЍxɾvŴoϕջmxݑsjͫmmօ͝ͅͅߵyjp݅ͩͦͅͅͅͅͅͅԅͧͅͅۅͪͅͅ׋ҮؒؒؒؤՊҊҊҔٹҊҊ҈Ш{{|{ʇz՞{וrυvԄ́{˭툵}ʼoπDžϘm}ļthυυϡ㑿msυυϏwj́üυυυϔڼυυωқ߼υψѐפψя֖ۢχкццњޘޞޘޕە٦׎ч|z՘承xՉrώwդ|̞}tĔۋoϖخmz ߭ujԒډmsߊԔۅՈأѱߊԛߵډӆђٮډӆѡߒڊԒ٩ԇԨ֋֋֮ߋ֋֊֧ۃΔٓ~ʏԠ}}|yՊ݂x՘rΡx֑كwɳxǤoωХm~ƦӇtjmn۫ޤՇӇәڌיڱڋ֗ߙ݋֓ܛދ֐ڠڋ؋ء؋؏۱؋ؕߞۋԇֆ~}}|zՇۈy֞rΜxքфvɮsĘoϋҖߕm}Űsiݡ׍و֟ܓަےݢڣݛݶݝىٚډى٩ىٌگ߃Ӂϖީ솿߁~}}|xԇ܊y֜rΒuՍ؅ẓ냳tŐݑoϒتmuߜߓ߉ْߕىٕىِ޳ىّޒٟ߳٥ݡߐݓߟۊۢۊۨۊۣނҜ惿߀߁~}}|yՇ݊y֜rΓv՘㊾wʟꀱtƜoωԗ㋽݊ۊۗۊۘۊ۟ےێޞے܊ۣ܊ۨݕݓۊۘߐှ݀߄~}}|yՃ܄x֛rΛw֐߆wˡtƭߝߋߑߘߋߟߜߞߗߋߘߒߜߖ߃ှ݀߂~}}|yՍ䀽w֗rΖw֓焿ؗှ݀߂~}}|yՉ‾zؘ肾ېှ݀߁~}}ۆߖ݀ވfog { fog_type 1 distance 100 color SkyBlue } BMC6(x0Cڼ̝Ӵ֭ե̝pϝp˝ָȡҞҎӔԝg~ϻ˼escqO`˝xdl]fQ]ӿެ۝ܢիԥ͝pϝp߿Ҟoxם}f{~ercpN^םxdl]eVaܵٝ۬ЪӬ̛Ŭ˄Ǭ́ڦnw~eyȄ❭eqcoN]Νzdl]eU`諽˫裿кӥ˜ƫ̛ū̅ȫԪޣ᤽֓פmzewdžלepcnM\ܵ޻Ϝxdk]eS^ҽټѴʴʴʴʴʴʴʴʴʻϜֱͦ͛ǜ͛ƜqھטȴɲȜکkt䀐dudžɴɴɴɴɲȫdobmM[ګ{dk]dU`۴˴˴˴˴˴˴˴˴Դʴʴʧʳɻڪ؜бΪҠ̳ʦҤϳʶՍŰ־֪ޙwnܳʳʚjxʳʳʰǜzdt~гdobmMZɪª£|dk]dS^ªªªªªŸԳ˳˳˳˳˳˳˳˳ǔȣœq̜wmip޷Ϝcrƅ˳˰ɜdnblLZس˳˳˳˳˳˱ʜudj\dQ\̪êêêêéΪĪĪ̪ĪĪĪĪĪĪĪĵں׍ư˖̰ЪӠͳ̥ӟݡ׸۩ޡڜtl̳̳̳̘h}w|cqzϮȜdmblLY̱˜ydj\cS]Dz˛更мېȰ̓˧ȡ̖ƛӥ޿愨ۓ͛tih{q|bpƄěɫdmbkLXѵЛ²ydj\cR]ΩũũٲבuƫɎȢƜɑìɬۢqԌåÛshıΡgyp|bo}İdlbkLWٛʮydj\cS^ųзԛʛЊvæƊŝ×ƚo҅rfŰfwoֳћ{bn|ĩclajKWͳћίݿݿwci\cR]џџџڤѡ͌ȬчĨɌȟƶrҷܯЦmш׷׷qf~п޿޿ޟfvn޷׷׷ybm{п޿޿޿޿clajKVÚųӱwci\bR]ȲҳӞžžžžžž°Ǟžžžž ȝͭДƊ‘ǝζؤpЧϾ޸lЁpczضضضؚetl޾޾޾޾xamŀضضضرӚ˴ckaiKVɽ޸پvci\bR]ʷططؽ޽ޚܚΞĞĞĞĞĢˤӱǢ˜ΒǦ˔ڎmΗ¦˨jwpcyesi~ĞĝÚ}alĂўĞĞĠckaiKU枾Īڶxci\bR]ؼ߷۵ؿٶٻܸݙ™™™™™¸˙¡ɭӭӭӭӻ䙼™™™±٩٢צڟ٫ܩٟڱڙնܞٯبڝљŽ}ķi{™™obw؝ƶerl뙼™™yaktƳܵcjaiKUٵНưջޙwci\bR]ٴٷ͝ưջߙ™ٙęęęęęĺޙęęęęęijڼڳڳگ٤؟פڨܡܫܯ߫ݎͬՓѥГ؀ʙČ{iʪh}yԬԡnauԬԬԬԕdqnᙽyaktԬԲcjahJTʱٳ۳۹ۙęuci\bR]ΥΧʘƘƘƘƘƭƘƘƘƠ̤ϷѕЕϐ˘ժݟӝٯܛصߝܗ}ǫՆw՛hɢοg{xnat嘿ƘƌdplܸwajsƘƭײܠ̢cjahJT㘿ƘƘƛȜɟuch\aQ]ͤЭݮ֘ȘȘȘȘȟȘȘȘȳ޻כ˛˛˛˞գ߮ԐРтǝ{׫ۛ{v◺g~ȍțgŷm~_rߡИȘȆdoky`jlȚɡϯۿcjahJSȘȟΥұݻۤҝ̊ɎҖҚȻۤҠΝ̞ͬٶ͛͛͛͛͡Лِ͛͛͛͝ҋϜٛחӝܮuҧwԜϑzçׅsf{ǥӗʙfwq͠m}^qߗʅdoj޶x`iuʛͩةذciagJS՗ʷݧ֗ʗʗʗʗʹߗʗʗʗʗʳ̖̖̲ݖ̖̖̖̖̱̖̖̖̫׵ګ{¢څڥqξuҫܗtρqԝeyƣԿfuz̞ҡl|_qힼdnf|ٰ՚Ϫt`iv߰ޚϝѩciagJS߮߯ߚϚϪܴ߫ܳߴߴܚϚϡԮ߮߿ΖΖΖΨԖΖΖΘвڅφΊДشzէmʭrЧڍs借pΙdvƞettۖk{^pcmi۠֝Ԭw`hqݦۣبܩݠlwjuVc߽ߣت߬ڦ۽ݣض֪ڹѤֹۤܤܤܩܤܤܲݕѕѕѢ۴ނς́͂ϗۣቻܑۍuќjƢoΓ̎qncuŘestݞkz^pгcmf}ؕЕЕШ߻u`hnݕЕЕЕбЕЕЕЯ֕ѕѕѯܕѕѕѲؚԴڞڞڞڬؘ՘՘՟۽՘՘Փ֦낾тЅЃьzԟuКgĒm̎̃s녤tcsņ”ӡdrxk{\nӔӔө㒷clkӔӔӛs`h|ӔӔӔӠۿӔӔӗեӔӖԜ٫ӖԛءݪӖԼ֣֔֔ߗޑڋ؄؆؊uϘስȍe˜m˦ᏳrzkݐbqėѲdqtl{]n؝܋cli؞݋Պգ޻ֵأݖה֜ܲܖה֨ܗ؜ܮؓجږږڱږڕګٗ֗څڂӅqˊـm˙d}l˕ւmm苻bpċʩdpwؓkz\n퉳ckeޮړؓؠݗ۠ݳݖڟߖڜߢڙݦޕݕݥݕݗ߱ݕݗ܊݊{Ӏ~}nɆ׃lʝbykˊтkhaoċ͜dotjy[mٖݒۣߛߙަޒޞߒޒީޒޔ߮݉ܗ}ۀyxrqzkƄ؂kəaviɏׂn}ganÏҪcnl呿ؙޘޒޚޒޗޒޘޢަޚ|uysspoziŃ؁jȗ`thɖ߅jygamÇϛ慯ڎב䀻yvoxponmzh{iȕ_rh~ɏ܁i{fޚ}xrqmtnmllzgÅwgǐ_ph}ɏߎ}Иꂾ{vrlnlrmlkkwfÁvjɐyӑztqniljpkkj~s{|ג|xtlokfjh|ۇzvsqpx}܆{z}fog { fog_type 2 distance 10 color rgb 0.6 // gray fog_offset 0.1 fog_alt 0.2 turbulence 0.8 } BMC6(x0C3 WSSyyyyyyxxx{{{{{{~>//<,,;++;**;**:)):)):))<++>-->--?..OEEYQQfaaroojffSIIF88A00A00A00A00A00A00A00A00A//A//A//A//@//iee|}}}}}~{~~<00;--:,,9++9,,;//://9..9..://://:00:00:00<22?66~{ryyfjjZ[[IEE>66?66A88A99A;;D@@s{{ʱֹogxxhzzhzz1\XX{{{yyyyyy{{{yyy}}}}~}wR3/R3/J32J53H53>22?22?33?22>22>11A33C55C44C44MBBwuuollgbb[TTMBBB22A00A00@00@00@//B22||||||~~~~~~~~~~~~zzz|||SLL4 5""5""4 6##8&&7%%5$$4""4##4$$5$$5$$5%%7((b``|swwhllcggekkkg{{f||f}}g~~2 `]]yyywwwyyyyyyyyy}}}}~nfb5.c7/c81d:3]:5U;7V<9V=:W=:N>>H>>G==moo~~~srrommc^^VNNfaazzz{{{|||}}}~~~zzzzzz|||nll3 5""5""3 25""5""5""7$$4 4 4 4 4 2KBB|{{{{{}}}}~~~|LPPNTT\ddjuuung}}f}}e||e||e||8++geexxxxxxvvvvvvyyy}}}}[Tb6.c70c92d:3d;5e=6e>8f?9f@:fA11vuu||||||}}}}}}~~~}}}}}}~~UZZJQQMUUOYYQ\\TaaUddXggZjjdvvrzjdzzcyycyydzzczzczzwwwNGGH@@SMM[WWdaaonn}}}}j@9c6/c81c92d:4d<5e=7e>8f?9fA;gB>F>>G??I@@B::=44D==OLL^__hjjossv||ikk7++8,,9,,8**6((5'':''?((=%%>%%?&&7e?9f@:fA;gB>D==B<8f?9f@:fA>I22XTTϰկԮӬѧȡr||Q]]S``UddVggXiiZll\pp^ss`uuawwbxxbxxbxxawwczzrqq100019))A11J1/Z0*`0'`0&`0&a0(a2*b4+um}vqkgasxwMGGKDDXUUªëìwqkLGkMHlQMsSQQQNNLJJHGGKIIMIIOHHNGGMFFPFFr~~ܫyͤĝ~TaaTccWggYjjYmm[oo^ssavvavvawwbxxaxxaxxawwczzlkk000009))A11S1,a0'a0'a0'a0'a1(a3*b4,yӒuzzsyy~ªëmOJkLHkMIlRNsSQQSNNQJJNGGNGGQHHTIITIITKKWQQӽ╴JDDJDDIBBIBBIFFORR]ccgoor}}|]mmZkkZmm[oo_rr`ttcvvcxxfyydxx`wwawwaxxaxxcyyigg000009))A11S1-a0'a0'a0'a1(a2)b3+h<5Ԕ^^^JCCZB@gBhE?hF@hGAiHBnNIe_qmx]Zz]TT^VVXTTZWW\ZZ]]]_``_aagppުϡZbbHMMGKKHLLJNNKPPMTTOXXQ[[S__UccYff]ii`llfssҞrjzzk{{jzzĽۤĔYUUZWWTOOKDD=228))@11A22S1-a1(a1(a1(a2)a3+b5-me̔w}}JCCJCCZC@gB=gB=gB=gC=iD>lE?lF@lFAlGBoHCqJEզȒtfnndkkdllإȜkvvFJJGKKHMMJPPMUUOYYT\\X__Ycc_gg^iibllfppgssՈ̦ʣ›[XXrrrrrrrrrssswwwxvvoie\WOvKCk?7b4,b5-{rɔ^^^JCCJCCZC@iC=kB=kBlA;nBvSMf`rk~wڿ铪RBBUCCUEEkEApIDqLGrOKtTPuXTv\Xx_[yc`zfc~liƥ`tt^qq]nnZiiWeeTaaR^^SZZTVVQQQNMMLJJRLLfnnuhuudooguujyym~~psux߮Ҧşd}}c||d}}ehijjiiihhklkkqqqqqqqqqqqq~~~sqT51T62T63]:5a<6d>8g>8j@:jA;kB>GBBIFFKKKNPPPTTSYYU]]zïʾųųƵǷĺ̪ϳݴmzz_cc^``\]]Z[[XVVWVVWXXY[[Z^^]dd`jjcooguuӽޯթ̢wusqpoopv{jijjjjihhhhhiobbbccceeedddbbbzzz{{{{{{zzz{{{{{{{{{{{{{{{{{{{{{{{{|||}~~{~~y}}syypwwkttepp_kk^kk^ll}˙hqq_cc^aa^aa^bb[__[__^ffalldqqgvvi{{kդȟ¤äã¢vtrpnmljged}}c||e~~rzsliiiiipdddcccbbb```ddd||||||uuurrrxxxzzzzzz}~|||}lmmqt~}v{zzyw}xvjrrjrrcmm|֢Ƙ~pk~~jkmu£äã¢wsqpnljige}}e~~e~~grwddddddbbbdddiii||||||uwwx£ããģĢkih}}g||fzzdxxdwwdwwcvvewwguuguu_qqӴݸޭӦǞãã¢zqpnljhggf~~giirkc}}c{{f}}jqx}^^^ccceeeeeelll||||||qZWuca{vt¥ĤƦȧʨ̩ΫЬҭӮկ֭ԪϥƐzupjf||g{{fzzfzzm{|}~}omljhe~~e}}fhijkqgb||`yyaxx`ww_vv_vv_uu_uu_uudddeeeeeeeeeooo||||||mHDi5,i5,i5,i5,i5,ھٷײװرڲܳݹ搢}}~~~|{ywvusswoie~~ghjkkoayy`yy_ww^uu_uuavv_uu^uu^uu^tt_uueeeeeeeeeeeesss||||||k<6i5-i5-i5-i5-|^Yʽ둣ֲܱͮܳ۰حԩͤğ~~~|{yxvtsqp~v~_vv]uu^uu]tt]tt^uu`vv_uu_uu`vv_vv_uueeeeee```cccuuu|||~||z|^XnB;j5-j5-𝣡瑣ũ˭Ұذذٰذذٰٰٰد׬ҩͥƒ|}Œ~~|{yxvtrqomwxmntzz^uu]uu]tt]uu^uu]tt^uu`vv`vvavvawwavvh}}eeedddbbb___yyy|||Ŀܕ|{yxutq|x߻ܵڰٱ۳ݵ~zxvssqnmkoxklllkkjigfjnzumf{{`ww_vv_uu`vvaww`vvawwavvl___dddaaaccc{{{|||ԋvqj80l>8oHBqPKuZV~kg޹ݑ|yyvvs~ro|mj~{xtqmi{kklkjihfe}}c{{bxxaxx{}vqi}}paaaeeecccccc||||||rKEk91l@:oICqPLsWRv]Yxb^zgd|li~pmur|yАxu|mjzjf|kg~}{yxutsssvy~|mlkjigfe}}czzbxxawwaww}y_ttcwwi{{aaaddddddhhh||||||j7/k:3mB;oJDqQLtWSv]Yxb^zgd|mi~qnurɎΧ~|{ywwtssuuvwxxxxxyxy|~spokhdc||bzzaxxawwaxxaxxq]pp[nnZllXhhdddbbbdddmmm||||||ծj7/k:3mB8k80k80k80zYT⩩~mi免tVQrSOtYUwa]{jfrozw~}{yxvtttuwwxyxxyyxzzyyyxwvtqqonoooonnnoonnnnnnmkji~~gzzewwcttbrr`pp^ll\hhZeeXbbS[[eeeeeeeeeyyy|||zwvk91k91k91k91lhw_[w_[ـrOI|c^yu}~~}{ywuutsvwwxxyyyyzyy{zyxvutrpoponooonnnoonnnmmmkjh||fyyewwcttapp_mm^kk\hhZeeXbbV]]TZZRVVdddeeeeee{{{|||}ojuPJk91k91sTOtUQtWR~~~rRMtVRsoս~}{yxvtttwxyyxxyzzyyzyyyxwusrqpooonooooonnoonnmlki~~h||fyydvvcssaqq_nn]jj[ggZddW``U]]SXXRVVPRRMMMeeeeeeeee||||||ƠٝpJDpKFqMH}~~~u[Vw^ZՒ||yxuutuvxyyzyyyyzzyzzxxwusqoppoooonoooonnnonmljh}}g{{fxxdvvbssapp_nn^kk[ffXbbW``U[[SXXPSSMMMNOONOOMMMeeeeeeiii||||||uPJl:2l:2l:2l:2l:2l:2oB;d_}x}xz\W߀yd`vr𕛘񖭭yyuutvwxxyyyzyyyyzzzzxvutqppooooooonooonnnnmljh||gzzewwduubrr`oo^ll]ii[ffYccW__TYYSYYPRRNOONOOMMMMMMMMMMMM```eeemmm||||||m=6l:2l:2l:2l:2l:2l:2l:2l:2l:2l:2ݷ򔩩uusuwxyyyyzzzzyzzzyyxusrqpooooooooooooonmlljh}}gzzevvcttaqq_nn^kk\ggZeeXbbW__U[[QSSOQQPRRNOONNNNNNMMMMMMMMMMMMcccdddooo}}}}}}}}}|||||||||||||{{{yyzttxonwjita_s\YqROoLHnC=m=6ņ䐋yv㋈瓧uxxxyzzzzzzzzzzyyxvvtrpppooppooooonoonnlkj~~h||gzzewwcttaqq`nn]jj[ggZddX``V^^TZZRVVPSSOOONNNNNNNNNNNNNNNNNNMMMMMMMMMccc```rrr}}}}}}}}}}}}}}}|||||||||||||||||||||||||||||||||}~~ȐDŽ}z}п敫yzyyyzzzzz{{{zywvtsrqpoppooppooooonnmlki}}g{{fyyduucssapp_ll^jj\hhYccX``U\\SXXRVVPRRNOONNNNNNNNNNNNNNNNNNNNNNNNNNNMMMMMMeeeeeeuuu}}}}}}}}}}}}}}}}}}}}}}}}||||||||||||||||||}ؘz|zyzzzzzz{zywvtrrqqpooppoppooooonmmji}}g{{ewwduucss`oo^ll]iiZeeYccW``U\\SXXPSSPQQOPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMMMMMeeeeeeyyy}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}||||||}}}~{{{zz{z{zzyxvtrqppqqpoppooppooonmkji~~gzzewwduuaqq`oo_ll\hhZeeXaaV^^U[[SWWQSSOPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMMeeeccc|||}}}{{{vvvzzz{{{{{{{{{{{{|||}}}}}}}}}}~~Ƙ{|{zz{{zyxvtrqppppqqpoppooppoomljh{{gzzewwcttaqq_mm]jj\hhZeeXaaV]]SXXQTTPSSOPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNeeeddd}}}}}}xxxnppw~~{|{{{zywussrqpppppqqpoppoooomkj~~h{{fxxdvvcttaqq_mm]jj[ffYbbW``V\\SWWQTTOPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNeeekkk}}}}}}ϼ̘ĥƦȧɨ˩ͪϫЫЩ̨˥ŤĒ{|{zyxvsrqqqqppppq