ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/virtuals.c
(Generate patch)

Comparing ray/src/rt/virtuals.c (file contents):
Revision 2.7 by greg, Sat Feb 22 02:07:29 2003 UTC vs.
Revision 2.13 by greg, Tue Mar 2 01:13:45 2004 UTC

# Line 8 | Line 8 | static const char      RCSid[] = "$Id$";
8   *  External symbols declared in source.h
9   */
10  
11 < /* ====================================================================
12 < * The Radiance Software License, Version 1.0
13 < *
14 < * Copyright (c) 1990 - 2002 The Regents of the University of California,
15 < * through Lawrence Berkeley National Laboratory.   All rights reserved.
16 < *
17 < * Redistribution and use in source and binary forms, with or without
18 < * modification, are permitted provided that the following conditions
19 < * are met:
20 < *
21 < * 1. Redistributions of source code must retain the above copyright
22 < *         notice, this list of conditions and the following disclaimer.
23 < *
24 < * 2. Redistributions in binary form must reproduce the above copyright
25 < *       notice, this list of conditions and the following disclaimer in
26 < *       the documentation and/or other materials provided with the
27 < *       distribution.
28 < *
29 < * 3. The end-user documentation included with the redistribution,
30 < *           if any, must include the following acknowledgment:
31 < *             "This product includes Radiance software
32 < *                 (http://radsite.lbl.gov/)
33 < *                 developed by the Lawrence Berkeley National Laboratory
34 < *               (http://www.lbl.gov/)."
35 < *       Alternately, this acknowledgment may appear in the software itself,
36 < *       if and wherever such third-party acknowledgments normally appear.
37 < *
38 < * 4. The names "Radiance," "Lawrence Berkeley National Laboratory"
39 < *       and "The Regents of the University of California" must
40 < *       not be used to endorse or promote products derived from this
41 < *       software without prior written permission. For written
42 < *       permission, please contact [email protected].
43 < *
44 < * 5. Products derived from this software may not be called "Radiance",
45 < *       nor may "Radiance" appear in their name, without prior written
46 < *       permission of Lawrence Berkeley National Laboratory.
47 < *
48 < * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
49 < * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
50 < * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
51 < * DISCLAIMED.   IN NO EVENT SHALL Lawrence Berkeley National Laboratory OR
52 < * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
53 < * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
54 < * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
55 < * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
56 < * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
57 < * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
58 < * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
59 < * SUCH DAMAGE.
60 < * ====================================================================
61 < *
62 < * This software consists of voluntary contributions made by many
63 < * individuals on behalf of Lawrence Berkeley National Laboratory.   For more
64 < * information on Lawrence Berkeley National Laboratory, please see
65 < * <http://www.lbl.gov/>.
66 < */
11 > #include "copyright.h"
12  
13   #include  "ray.h"
14  
# Line 90 | Line 35 | markvirtuals()                 /* find and mark virtual sources */
35          if (directrelay <= 0)
36                  return;
37                                          /* find virtual source objects */
38 <        for (i = 0; i < nobjects; i++) {
38 >        for (i = 0; i < nsceneobjs; i++) {
39                  o = objptr(i);
40                  if (!issurface(o->otype) || o->omod == OVOID)
41                          continue;
# Line 104 | Line 49 | markvirtuals()                 /* find and mark virtual sources */
49                  if (nvobjects == 0)
50                          vobject = (OBJECT *)malloc(sizeof(OBJECT));
51                  else
52 <                        vobject = (OBJECT *)realloc((char *)vobject,
52 >                        vobject = (OBJECT *)realloc((void *)vobject,
53                                  (unsigned)(nvobjects+1)*sizeof(OBJECT));
54                  if (vobject == NULL)
55                          error(SYSTEM, "out of memory in addvirtuals");
# Line 178 | Line 123 | OBJREC  *o;
123          register OBJREC  *m;
124  
125          i = o->omod;
126 <        m = objptr(i);
126 >        m = findmaterial(objptr(i));
127 >        if (m == NULL)
128 >                return(objptr(i));
129          if (m->otype != MAT_ILLUM || m->oargs.nsargs < 1 ||
130                          !strcmp(m->oargs.sarg[0], VOIDID) ||
131                          (i = lastmod(objndx(m), m->oargs.sarg[0])) == OVOID)
# Line 249 | Line 196 | MAT4  pm;
196                  else
197                          nsflags &= ~SSPOT;
198                  if (source[sn].sflags & SSPOT) {
199 <                        copystruct(&theirspot, source[sn].sl.s);
199 >                        theirspot = *(source[sn].sl.s);
200                          multv3(theirspot.aim, source[sn].sl.s->aim, pm);
201                          normalize(theirspot.aim);
202                          if (nsflags & SSPOT) {
# Line 259 | Line 206 | MAT4  pm;
206                                          return(-1);     /* no overlap */
207                          } else {
208                                  nsflags |= SSPOT;
209 <                                copystruct(&ourspot, &theirspot);
209 >                                ourspot = theirspot;
210                                  d = 2.*ourspot.siz;
211                          }
212                          if (ourspot.siz < d-FTINY) {    /* it shrunk */
# Line 299 | Line 246 | MAT4  pm;
246          if (nsflags & SSPOT) {
247                  if ((source[i].sl.s = (SPOT *)malloc(sizeof(SPOT))) == NULL)
248                          goto memerr;
249 <                copystruct(source[i].sl.s, &ourspot);
249 >                *(source[i].sl.s) = ourspot;
250          }
251          if (nsflags & SPROX)
252                  source[i].sl.prox = source[sn].sl.prox;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines