ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/cone.h
Revision: 2.2
Committed: Sat Feb 22 02:07:22 2003 UTC (21 years, 2 months ago) by greg
Content type: text/plain
Branch: MAIN
Changes since 2.1: +70 -4 lines
Log Message:
Changes and check-in for 3.5 release
Includes new source files and modifications not recorded for many years
See ray/doc/notes/ReleaseNotes for notes between 3.1 and 3.5 release

File Contents

# User Rev Content
1 greg 2.2 /* RCSid: $Id$ */
2 greg 1.1 /*
3     * cone.h - header file for cones (cones, cylinders, rings, cups, tubes).
4     *
5     * Storage of arguments in the cone structure is a little strange.
6     * To save space, we use an index into the real arguments of the
7     * object structure through ca. The indices are for the axis
8     * endpoints and radii: p0, p1, r0 and r1.
9     *
10     * 2/12/86
11     */
12    
13 greg 2.2 /* ====================================================================
14     * The Radiance Software License, Version 1.0
15     *
16     * Copyright (c) 1990 - 2002 The Regents of the University of California,
17     * through Lawrence Berkeley National Laboratory. All rights reserved.
18     *
19     * Redistribution and use in source and binary forms, with or without
20     * modification, are permitted provided that the following conditions
21     * are met:
22     *
23     * 1. Redistributions of source code must retain the above copyright
24     * notice, this list of conditions and the following disclaimer.
25     *
26     * 2. Redistributions in binary form must reproduce the above copyright
27     * notice, this list of conditions and the following disclaimer in
28     * the documentation and/or other materials provided with the
29     * distribution.
30     *
31     * 3. The end-user documentation included with the redistribution,
32     * if any, must include the following acknowledgment:
33     * "This product includes Radiance software
34     * (http://radsite.lbl.gov/)
35     * developed by the Lawrence Berkeley National Laboratory
36     * (http://www.lbl.gov/)."
37     * Alternately, this acknowledgment may appear in the software itself,
38     * if and wherever such third-party acknowledgments normally appear.
39     *
40     * 4. The names "Radiance," "Lawrence Berkeley National Laboratory"
41     * and "The Regents of the University of California" must
42     * not be used to endorse or promote products derived from this
43     * software without prior written permission. For written
44     * permission, please contact [email protected].
45     *
46     * 5. Products derived from this software may not be called "Radiance",
47     * nor may "Radiance" appear in their name, without prior written
48     * permission of Lawrence Berkeley National Laboratory.
49     *
50     * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
51     * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
52     * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
53     * DISCLAIMED. IN NO EVENT SHALL Lawrence Berkeley National Laboratory OR
54     * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
55     * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
56     * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
57     * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
58     * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
59     * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
60     * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
61     * SUCH DAMAGE.
62     * ====================================================================
63     *
64     * This software consists of voluntary contributions made by many
65     * individuals on behalf of Lawrence Berkeley National Laboratory. For more
66     * information on Lawrence Berkeley National Laboratory, please see
67     * <http://www.lbl.gov/>.
68     */
69    
70 greg 1.1 typedef struct cone {
71 greg 1.2 FLOAT *ca; /* cone arguments (o->oargs.farg) */
72 greg 1.1 char p0, p1; /* indices for endpoints */
73     char r0, r1; /* indices for radii */
74     FVECT ad; /* axis direction vector */
75 greg 1.2 FLOAT al; /* axis length */
76     FLOAT sl; /* side length */
77     FLOAT (*tm)[4]; /* pointer to transformation matrix */
78 greg 1.1 } CONE;
79    
80     #define CO_R0(co) ((co)->ca[(co)->r0])
81     #define CO_R1(co) ((co)->ca[(co)->r1])
82     #define CO_P0(co) ((co)->ca+(co)->p0)
83     #define CO_P1(co) ((co)->ca+(co)->p1)
84    
85 greg 2.2 #ifdef NOPROTO
86    
87 greg 1.1 extern CONE *getcone();
88 greg 2.2 extern void freecone();
89     extern void conexform();
90    
91     #else
92    
93     extern CONE *getcone(OBJREC *o, int getxf);
94     extern void freecone(OBJREC *o);
95     extern void conexform(CONE *co);
96    
97     #endif