File: box.html

package info (click to toggle)
python-visual 1%3A5.12-1.6
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, stretch
  • size: 7,708 kB
  • ctags: 7,635
  • sloc: cpp: 15,593; sh: 9,615; ansic: 6,631; python: 4,737; makefile: 384
file content (167 lines) | stat: -rw-r--r-- 10,874 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/visual/Templates/template.dwt" codeOutsideHTMLIsLocked="false" -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- InstanceBeginEditable name="doctitle" -->
<title>box</title>
<!-- InstanceEndEditable -->
<!-- InstanceBeginEditable name="head" -->
<link href="VisualRef.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.style1 {font-size: x-large}
.style2 {font-size: xx-large}
-->
</style>
<!-- InstanceEndEditable -->
<script type="text/javascript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}
//-->
</script>
<link href="VisualRef.css" rel="stylesheet" type="text/css" />
</head>

<body>
<table width="800" border="0" cellpadding="0" cellspacing="0">
  <!--DWLayoutDefaultTable-->
  <tr>
    <td width="10" valign="top" bgcolor="#FFFFFF"><!--DWLayoutEmptyCell-->&nbsp;</td>
    <td width="10" height="272" valign="top" bgcolor="#DDDDDD"><p>&nbsp;</p>    </td>
    <td width="173" valign="top" bgcolor="#DDDDDD"><p class="Normal"><a href="index.html">Home</a></p>
      <p class="Normal">If you're new to Python <br />
      and VPython: <a href="VisualIntro.html">Introduction</a></p>
      <p class="Normal">A VPython <a href="VPython_Intro.pdf" target="_blank">tutorial</a></p>
      <p class="Normal"><a href="primitives.html">Pictures</a> of 3D objects</p>
      <p class="Normal">Choose a 3D object:</p>
        <select name="jumpMenu4" id="jumpMenu4" onchange="MM_jumpMenu('parent',this,0)">
          <option>Choose an object</option>
          <option value="cylinder.html">Overview</option>
          <option value="arrow.html">arrow</option>
          <option value="box.html">box</option>
          <option value="cone.html">cone</option>
          <option value="convex.html">convex</option>
          <option value="curve.html">curve</option>
          <option value="cylinder.html">cylinder</option>
          <option value="ellipsoid.html">ellipsoid</option>
          <option value="faces.html">faces</option>
          <option value="frame.html">frame</option>
          <option value="helix.html">helix</option>
          <option value="label.html">label</option>
          <option value="lights.html">lights</option>
          <option value="points.html">points</option>
          <option value="pyramid.html">pyramid</option>
          <option value="ring.html">ring</option>
          <option value="sphere.html">sphere</option>
        </select>
        
      <p class="Normal">Work with 3D objects:</p>
        <select name="jumpMenu4" id="jumpMenu5" onchange="MM_jumpMenu('parent',this,0)">
          <option>Choose an option</option>
          <option value="color.html">Color &amp; Opacity</option>
          <option value="lights.html">Lighting</option>
          <option value="materials.html">Materials &amp; Textures</option>
          <option value="defaults.html">Defaults</option>
          <option value="rate.html">Animation Speed</option>
          <option value="rotation.html">Rotations</option>
          <option value="options.html">Additional Options</option>
          <option value="delete.html">Delete an Object</option>
          <option value="float.html">3/4 = 0?</option>
        </select>
        
      <p class="Normal">Windows, Events, &amp; Files:</p>
        <select name="jumpMenu4" id="jumpMenu6" onchange="MM_jumpMenu('parent',this,0)">
          <option>Choose a topic</option>
          <option value="display.html">Windows</option>
          <option value="lights.html">Lighting</option>
          <option value="mouse.html">Mouse Events</option>
          <option value="mouse_click.html">&nbsp;&nbsp;&nbsp;Mouse Click</option>
          <option value="mouse_drag.html">&nbsp;&nbsp;&nbsp;Mouse Drag</option>
          <option value="keyboard.html">Keyboard Events</option>
          <option value="controls.html">Buttons and Sliders</option>
          <option value="files.html">Reading/Writing Files</option>
        </select>
        
      <p class="Normal"><a href="vector.html">Vector operations </a></p>
      <p class="Normal"><a href="graph.html">Graphs</a></p>
    <p class="Normal"><a href="factorial.html">factorial/combin</a></p>
    <p class="Normal">What's new in <a href="new_features.html">Visual 5</a></p>
    <p class="Normal"><a href="http://vpython.org" target="_blank">VPython web site</a><br />
      <a href="license.txt" target="_blank">Visual license</a><br />
      <a href="http://www.python.org" target="_blank">Python web site</a> <br />
      <a href="http://www.python.org/doc/2.5.2/lib/module-math.html" target="_blank">Math module</a> (sqrt etc.)<br />
    <a href="http://www.scipy.org/Documentation" target="_blank">Numpy module</a> (arrays)    </p></td>
    <td width="21" valign="top" bgcolor="#FFFFFF"><!--DWLayoutEmptyCell-->&nbsp;</td>
    <td width="586" rowspan="2" valign="top"><!-- InstanceBeginEditable name="content" -->
      <div>
        <table width="100%" border="1">
          <tr>
            <td width="76%"><div align="center"><span class="style1 style2"><font color="#0000A0">box</font></span></div></td>
            <td width="24%"><img src="images/box.jpg" alt="box" width="131" height="127" /><a href="arrow.html"></a></td>
          </tr>
        </table>
        </div>
      <div>
        <p class="Normal"> In the first diagram we show a simple example of a box object:<img src="VisualRef-6.gif" alt="box" align="right" /> </p>
        <div>
          <p class="program"> mybox = box(pos=(x0,y0,z0), length=L, height=H, width=W) </p>
          <p class="Normal"> The given position is in the center of the box, at (x0, 
            y0, z0). This is different from cylinder, whose pos attribute is at one 
            end of the cylinder. Just as with a cylinder, we can refer to the individual 
            vector components of the box as<span class="attribute"> mybox.x</span>, <span class="attribute">mybox.y</span>, and <span class="attribute">mybox.z</span>. 
            The length (along the x axis) is L , the height (along the y axis) is H 
            , and the width is W (along the z axis). For this box, we have <span class="attribute">mybox.axis 
              = (L, 0, 0)</span> . Note that the axis of a box is just like the axis of 
            a cylinder. </p>
          <p class="Normal"> For a box that isn't aligned with the coordinate axes, additional issues come into play. The orientation of the length of the box is given by the axis (see second diagram):</p>
        </div>
        <div>
          <p class="program"> mybox = box(pos=(x0,y0,z0), &nbsp;&nbsp;&nbsp;&nbsp;axis=(a,b,c), length=L,<br />
            &nbsp;&nbsp;&nbsp;&nbsp;height=H, width=W) </p>
          <p class="Normal"> The axis attribute gives a direction for the length of the box, and the length, height, and width of the box are given as before (if a length attribute is not given, the length is set to the magnitude of the axis vector). </p>
          <p class="Normal"> There remains the issue of how to orient the box rotationally 
            around the specified axis. The rule that Visual uses is to orient the width 
            to lie in a plane perpendicular to the display &quot;up&quot; direction, 
            which by default is the y axis. Therefore in the diagram you see that the 
            width lies parallel to the x-z plane. The height of the box is oriented 
            perpendicular to the width, and to the specified axis of the box. It helps 
            to think of length initially as going along the x axis, height along the 
            y axis, and width along the z axis, and when the axis is tipped the width 
            stays in the x-z plane.</p>
          <p class="Normal"> You can rotate the box around its own axis by changing which way is &quot;up&quot; for the box, by specifying an up attribute for the box that is different from the up vector of the coordinate system:</p>
        </div>
        <div>
          <p class="program"> mybox = box(pos=(x0,y0,z0), axis=(a,b,c), length=L,<br />
            &nbsp;&nbsp;&nbsp;&nbsp;height=H, width=W, up=(q,r,s))</p>
          <p class="Normal"> With this statement, the width of the box will lie in a plane perpendicular to the (q,r,s) vector, and the height of the box will be perpendicular to the width and to the (a,b,c) vector.</p>
          <p class="Normal"> The box object has the following attributes and
            default  values, like those for cylinders: <span class="attribute">pos<font color="#000000"> (0,0,0)</font></span>, <span class="attribute">x</span><span class="attribute"><font color="#000000"> (0)</font></span>, <span class="attribute">y<font color="#000000">(0)</font></span>, <span class="attribute">z<font color="#000000">(0)</font></span>, <span class="attribute">axis<font color="#000000"> (1,0,0)</font></span>, <span class="attribute">length<font color="#000000"> (1)</font></span>, <span class="attribute">color<font color="#000000"> (1,1,1)
             which is color.white</font></span>, <span class="attribute">red<font color="#000000"> (1)</font></span>, <span class="attribute">green<font color="#000000"> (1)</font></span>, <span class="attribute">blue<font color="#000000"> (1)</font></span>,
             <span class="attribute">opacity</span> (1), <a href="materials.html">material</a>, and <span class="attribute">up<font color="#000000"> (0,1,0)</font></span>.
              Additional box attributes:</p>
          <p class="attributes"> <span class="attribute">height</span> In the y direction 
            in the simple case, default is 1</p>
          <p class="attributes"> <span class="attribute">width</span> In the z direction 
            in the simple case, default is 1</p>
          <p class="attributes"> <span class="attribute">size</span> (length, height, 
            width), default is (1,1,1)<br />
            <span class="attribute"> mybox.size=(20,10,12) </span>sets length=20, height=10, 
            width=12</p>
          <p class="Normal"> Note that the <span class="attribute">pos</span> attribute 
            for cylinder, arrow, cone, and pyramid corresponds to one end of the object, 
            whereas for a box, sphere, or ring it corresponds to the center of the object. </p>
          <p class="Normal">See description of <a href="options.html">Additional
              Attributes</a> available for all 3D display objects.</p>
        </div>
      </div>
    <!-- InstanceEndEditable --></td>
  </tr>
  <tr>
    <td height="16" colspan="4"></td>
  </tr>
</table>
</body>
<!-- InstanceEnd --></html>