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

# Content
1 /* RCSid: $Id$ */
2 /*
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 /* ====================================================================
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 typedef struct cone {
71 FLOAT *ca; /* cone arguments (o->oargs.farg) */
72 char p0, p1; /* indices for endpoints */
73 char r0, r1; /* indices for radii */
74 FVECT ad; /* axis direction vector */
75 FLOAT al; /* axis length */
76 FLOAT sl; /* side length */
77 FLOAT (*tm)[4]; /* pointer to transformation matrix */
78 } 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 #ifdef NOPROTO
86
87 extern CONE *getcone();
88 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