\% *********************** \% * 3D Graphic window * \% *********************** \% ********** 3D Graphic window ********** \topic kh_3DWin {3D graphic window} {\bf 3D graphic windows} are used to represent \jump kh_Curve {curves} by their projections to 3-dimensional spaces endowed with right-handed rectangular Cartesian coordinate systems.\par 3D space is specified by three variables or expressions whose values are plotted along axes. The \jump kh_3DWinCurrentAttr {current graphic attributes} dialog box which is opened by the {\bf Attributes|Current} command allows you to choose the variables.\par Visible part of the space is given by minimum and maximum values for each axis. You can set them directly in the window (see {\bf Limits of visibility} below) or in the \jump kh_3DWinLayout {layout dialog box} which is opened by the {\bf Window|Layout} command.\par CONTENT maps the visible part of the space to the window's {\bf Graphic area} using the following two transformations.\par \qc{$ \system 2 l 0 0 {u=-x\,sin\,\varphi+y\,cos\,\varphi} {v=-(x\,cos\,\varphi+y\,sin\,\varphi)\,cos\,\vartheta+z\,sin\,\vartheta} $}\par This transformation maps 3D-points $(x,y,z)$ to a mathematical plane $(u,v)$. Two angles, colatitude $\vartheta$ and longitude $\varphi,$ are parameters of this transformations. They define a vector to which the plane is orthogonal. You can set the angles directly in the window (see {\bf Angles} below) or in the \jump kh_3DWinLayout {layout dialog box} which is opened by the {\bf Window|Layout} command. The following figure illustrates relations between two coordinate systems.\par \qc{\picture 0.4 contw3d.fig }\par Mathematical coordinates $(u,v)$ are transformed then to {\bf window coordinates} $(U,V)$:\par \qc{$ \system 2 l 0 0 {U=left+\frac{right-left}{u_{max}-u_{min}}\,(u-u_{min})} {V=bottom+\frac{top-bottom}{v_{max}-v_{min}}\,(v-v_{min})} $}\par where $left,\:top,\:right$ and $bottom$ are screen coordinates of the window's Graphic area. \par You open the graphic windows with the \jump kh_menuWindow {Window|Open|3D Graphic} command from the \jump kh_MainWin {Main window.}\par There are the following components in the graphics window.\par {\desc 27 {\bf Component\>What it does or is used for}\par {\bf Compute}\>\include kh_ComputeSubmenu \par {\sb 0 \li 1 \bf Forward}\>\include kh_ForwardItem \par {\sb 0 \li 1 \bf Backward}\>\include kh_BackwardItem \par {\sb 0 \li 1 \bf Extend}\>\include kh_ExtendItem \par {\bf Window}\>this menu contains commands which manipulate the window.\par {\sb 0 \li 1 \bf Redraw\+diagram}\>\include kh_RedrawDiagramItem \par {\sb 0 \li 1 \bf Redraw\+curve}\>\include kh_RedrawCurveItem \par {\sb 0 \li 1 \bf Clear}\>\include kh_ClearItem \par {\sb 0 \li 1 \bf Fit\+diagram}\>changes the {\bf limits of visibility} in such a way that all curves from the current diagram become totally visible. The command doesn't affect other windows.\par {\sb 0 \li 1 \bf Fit\+curve}\>changes the {\bf limits of visibility} in such a way that the current curve becomes totally visible. The command doesn't affect other windows.\par {\sb 0 \li 1 \bf Undo\+scale}\>restores the limits of visibility (six numbers defining the visible part of 3D space) for this window to their previous values. {CONTENT} remembers as much as last ten limits so you can go back more than one step (after ten steps the current limits are restored). {CONTENT} records the limits when you press the {\bf Enter} key or clear the window after editing them. \par {\sb 0 \li 1 \bf Undo\+rotate}\>restores colatitude $\vartheta$ and longitude $\varphi$ (two angles defining rotation of the visible part of 3D space) for this window to their previous values. {CONTENT} remembers as much as last ten pairs of angles so you can go back more than one step (after ten steps the current angles are restored). {CONTENT} records the angles when you press the {\bf Enter} key or clear the window after editing them. \par {\sb 0 \li 1 \bf Layout}\>displays the \jump kh_3DWinLayout {layout dialog box} where you change various settings which control the layout of the window.\par {\sb 0 \li 1 \bf Hardcopy}\>displays the \jump kh_3DWinHardcopy {hardcopy dialog box} where you specify various option for the hardcopy of this window.\par {\sb 0 \li 1 \bf Duplicate}\>opens another window which has exactly the same attributes as the current window. This may be useful if you want to do some minor changes of attributes without restoring them back.\par {\sb 0 \li 1 \bf Hide}\>\include kh_HideItem \par {\bf Attributes}\>this menu allows you to change attributes used to draw and redraw curves.\par {\sb 0 \li 1 \bf Current}\>displays the \jump kh_3DWinCurrentAttr {current graphic attributes} dialog box where you specify attributes which will be used to draw the curves to be computed next. \par {\sb 0 \li 1 \bf Curve}\>displays the \jump kh_3DWinCurveAttr {curves graphic attributes} dialog box where you change attributes which are used to redraw the \jump kh_CurCurve {current curve.}\par {\bf Help}\>\include kh_HelpSubmenu \par {\sb 0 \li 1 \bf This\+window}\>displays the description of 3D graphic windows.\par \% {\sb 0 \li 1 \bf Index}\>displays \% the contents of Help information.\par {\sb 0 \li 1 \bf Search}\>\include kh_HelpSearchItem \par {\bf Limits\+of\+visibility}\>is the area where you specify minimum and maximum values for each axis as well as tick sizes. To change any value in the area click it with the mouse and then edit it. {CONTENT} will update the {\bf Graphics area} when you press the {\bf Enter} key or perform the {Clear} command from the {Window} menu. Any value may be given by an expression constructed from numbers, parentheses, operators (+, -, *, /, and ^), and standard function calls (abs, acos, asin, atan, ceil, cos, exp, floor, log, log10, sin, sqrt, tan), for example sqrt(2)/2. As you type CONTENT tries to parse the expression and compute its value. If it succeeds the value is used. Otherwise, the prompt which is left to the input field is grayed to indicate that the text does not form correct expression. Use the \jump kh_3DWinLayout {layout dialog box} to specify whether to show the limits in the window.\par {\bf Angles}\>is the area where you specify the values of colatitude $\vartheta$ and longitude $\varphi$ which define rotation of the visible part of the 3D space. The angles are measured in degrees. Each input field has a scroll bar attached to it. The scroll bar allows to increase or decrease the current value by one degree. Text values may be edited in the same way as the limits of visibility. Use the {\bf layout dialog box} to specify whether to show the angles in the window.\par {\bf Palette}\>is a horizontal bar which shows all colors available for drawing curves. To choose a color click on it with the mouse. If you specified more than one set of functions along the axes (see the \jump kh_3DWinLayout {layout dialog box}) there is a switch at the left of the bar which allows you to choose the set of functions you want to set the color for. A small square at the right of the bar displays the currently chosen color. The {\bf layout dialog box} allows you to show or hide the palette.\par {\bf Graphic area}\>is the part of the window where {CONTENT} draws computed curves. In addition you can ask {CONTENT} to draw enclosed box, axes, scales, and labels in the area. Use the \jump kh_3DWinLayout {layout dialog box} to make appropriate settings.\par } You can do \jump kh_CurveSwitch {curve switching} in the graphics window. To choose a \jump kh_SpecialPoint {special point} on some curve as an \jump kh_InitialPoint {initial point} for the next curve click the point (you may need to redraw the \jump kh_CurDiagram {current diagram} before this). {CONTENT} will unload current starter and generator and load appropriate one. To make this operation possible a {\bf marker} must be chosen for the type of special point which can by done using the \jump kh_SpecPointWin {special points} dialog box. There is default marker for each type of special point. You can also switch curves using the \jump kh_InitPointWin {initial points} dialog box. \par In addition to the traditional way of changing the angles (by typing them in) you can do it with the mouse. Place the pointer at a point in the Graphic area and press the left mouse button. Holding the button drag the pointer. Horizontal movement changes the longitude $\varphi$ and vertical movement changes the colatitude $\vartheta$. To cancel the operation release the button elsewhere outside the area. You can restore previous angles later by the {\bf Undo\+rotate} command from the {\bf Window} menu. \par To destroy the window use the {\bf Close} command from the {\bf System} menu of the window.\par \end \% kh_3DWin \% ********** 3D hardcopy dialog box ********** \topic kh_3DWinHardcopy {hardcopy dialog box for 3D graphic window} The {\bf hardcopy dialog box} is where you specify various options for a hardcopy of a 3D graphic window.\par You display the dialog box with the \jump kh_3DWin {Window|Hardcopy} command from a graphic window. A hardcopy is a {\bf PostScript} program which produces a copy of the window's Graphic area with all the \jump kh_Curve {curves} from the \jump kh_CurDiagram {current diagram} drawn. The hardcopy is always written into a file and may optionally be sent to a printer.\par There are following components in the dialog box.\par #ifdef _UNIX {\desc 19 #else _UNIX {\desc 17 #endif _UNIX {\bf Component\>What it does or is used for}\par {\bf File}\>is where you specify the name of a file to which {CONTENT} will write the hardcopy. The file may be sent to a printer later (by means of appropriate {\bf copy} command.\par {\bf Browse}\>displays the list of available files which allows you to choose a file without typing its name. The name of the file you choose is put into the input field.\par {\bf Picture}\>is where you specify dimensions of a picture.\par {\li 1 \sb 0 \bf Width}\>specifies the width in current units.\par {\li 1 \sb 0 \bf Height}\>specifies the height in current units.\par {\li 1 \sb 0 \bf Unit}\>specifies the units for width and height.\par {\bf Font}\>contains two lists which you use to choose font name and its size. The font is used for all characters in the picture.\par {\bf Options}\>allows you to specify some characteristics of the picture and where to send it. The values of three scale factors depend on the resolution of your printer. You may need to experiment to choose appropriate values for them. \par {\li 1 \sb 0 \bf Curve\+width}\>specifies the value of the curve width factor. It is used for all curves.\par {\li 1 \sb 0 \bf Line\+width}\>specifies the value of the line width factor. It is used for axes, grid, and frame of the picture.\par {\li 1 \sb 0 \bf Marker\+scale}\>specifies the value of the marker width factor. It is used to draw markers.\par {\li 1 \sb 0 \bf Preserve\+colors}\>when this box is checked {CONTENT} tries to produce a color picture by preserving colors set for Graphic area and curves.\par #ifdef _UNIX {\li 1 \sb 0 \bf Show\+on\+screen}\>when this box is checked {CONTENT} shows the picture on the screen. The command for this is given by the value of the {\bf HCVIEWER} key which is in the {\bf [Visual]} section of the {\bf settings file.}\par {\li 1 \sb 0 \bf Send\+to\+printer}\>when this box is checked {CONTENT} sends the picture to a printer. The command for this is given by the value of the {\bf HCPRINTER} key which is in the {\bf [Visual]} section of the {\bf settings file.}\par #endif _UNIX {\bf Buttons}\>\par {\li 1 \sb 0 \bf Ok}\>closes the dialog box and produces the hardcopy in accordance with the settings you have made.\par {\li 1 \sb 0 \bf Cancel}\>closes the dialog box without changing anything and producing the hardcopy.\par {\li 1 \sb 0 \bf Help}\>opens the \jump kh_HelpWin {help window} which displays the description of this dialog box.\par } \end \% kh_3DWinHardcopy \% ********** 3D Graphic layout dialog box ********** \topic kh_3DWinLayout {layout dialog box for 3D graphic window} The {\bf layout dialog box} is where you specify various settings which affects the layout of 3D graphic window. You display the dialog box by the \jump kh_3DWin {Window|Layout} command in 3D graphic window. Note that the settings affect only the window from which you perform the command.\par The following components are in the dialog box.\par {\desc 27 {\bf Component\>What is does or is used for}\par {\bf Window\+title}\>allows you to modify the title of the window.\par {\bf Show\+in\+window}\>contains check boxes which you use to specify which components will be shown in the graphic window. Check appropriate boxes for the components you want to see in or to be able to change directly from the graphic window.\par {\sb 0 \li 1 \bf Min..Max}\>shows limits of visibility.\par {\sb 0 \li 1 \bf Tick}\>shows tick values.\par {\sb 0 \li 1 \bf Scale}\>draws scales for enclosed box using tick values.\par {\sb 0 \li 1 \bf Label}\>prints variables or expressions whose values are plotted along axes. The labels are placed near corresponding edges of the enclosed box or near axes.\par {\sb 0 \li 1 \bf Box}\>draws the enclosed box, i.e. all visible edges of the parallelepiped enclosed the visible part of 3D space.\par {\sb 0 \li 1 \bf Axis}\>draws lines corresponding to mathematical axes. Note that an axis is drawn only if zero belongs to visibility intervals of two other axes.\par {\sb 0 \li 1 \bf Projections}\>projects each point on three invisible surfaces of the enclosed box.\par {\sb 0 \li 1 \bf Angles}\>shows colatitude and longitude.\par {\bf Limits\+of\+visibility}\>is where you specify limits of visibility for each axis.\par {\sb 0 \li 1 \bf Min}\>specifies the minimum value. Points with the value of corresponding coordinate less than this value will not be drawn.\par {\sb 0 \li 1 \bf Max}\>specifies the maximum value. Points with the value of corresponding coordinate greater than this value will not be drawn .\par {\sb 0 \li 1 \bf Tick}\>specifies the step used for drawing scale. 0 means you want {CONTENT} to calculate the value by itself using given minimum and maximum values.\par {\bf Colors}\>is where you set options related to colors.\par {\sb 0 \li 1 \bf Foreground}\>opens the {\bf Standard Color dialog box} which you use to select the foreground color. The color will be used to draw box, axes, labels, and scale.\par {\sb 0 \li 1 \bf Background}\>opens the {\bf Standard Color dialog box} which you use to select the background color for the window.\par {\sb 0 \li 1 \bf Show\+palette}\>sets the mode in which a palette will be placed in the 3D graphic window to facilitate selection of colors for drawing curves.\par {\bf Angles}\>is where you specify angles.\par {\sb 0 \li 1 \bf $\vartheta$}\>specifies the value of colatitude $\vartheta$.\par {\sb 0 \li 1 \bf $\varphi$}\>specifies the value of longitude $\varphi$.\par {\bf Sample\+of\+window}\>displays a sample of the window in accordance with the current settings.\par {\bf Buttons}\>\par {\sb 0 \li 1 \bf Ok}\>closes the dialog box and redraws the 3D graphic window using the settings you have made.\par {\sb 0 \li 1 \bf Cancel}\>closes the dialog box without changing the settings.\par {\sb 0 \li 1 \bf Help}\>opens the \jump kh_HelpWin {help window} which displays the description of this dialog box.\par } \end \% kh_3DWinLayout \% ********** Current graphic attributes dialog box ********** \topic kh_3DWinCurrentAttr {current attributes dialog box for 3D graphic window} The {\bf current attributes dialog box} is where you specify various graphic attributes of \jump kh_Curve {curves} which you will compute next.\par You display the dialog box by the \jump kh_3DWin {Attributes|Current} command in a 3D graphic window. Note that the settings affect only the window from which you perform the command.\par The following components are in the dialog box. They are listed in accordance with their positions in the box, from the left to the right and from the top to the bottom.\par {\desc 20 {\bf Component\>What it does or is used for}\par {\bf Functions\+along\+axes}\>allows you to specify functions whose value will be plotted along axes.\par {\sb 0 \li 1 \bf OX}\>is where you type in a function whose values will be plotted along the abscissa.\par {\sb 0 \li 1 \bf OY}\>is where you type in a function whose values will be plotted along the ordinate.\par {\sb 0 \li 1 \bf OZ}\>is where you type in a function whose values will be plotted along the vertical axis. There may be more than one set of functions defined for the window. Use the scroll bar attached to the fields to choose the set you want to edit. \par {\sb 0 \li 1 \bf New\+functions}\>this button tells {CONTENT} that you want to specify one more set of functions whose values will be plotted along axes. Having pressed the button type in functions in the {\bf OX, OY,} and {\bf OZ} fields.\par {\sb 0 \li 1 \bf Delete\+functions}\>this button tells {CONTENT} to delete the set of functions which are currently in the {\bf OX, OY,} and {\bf OZ} fields. Use the scroll bar attached to the fields to choose the set you want to delete. The current and total numbers of the sets are indicated in the left bottom corner of the group. \par {\sb 0 \li 1 \bf List\+of\+names}\>contains the two-level list of names you can use in functions. The first level contains groups of names. Click the name of a group to see the names from the group. Click a name to insert it into {\bf OX, OY,} or {\bf OZ} field (it will be inserted into those field where the cursor was before you activated the list). To return to the first level of the list click the line which contains two dots.\par {\bf Graphic\+attributes}\>allows you to set various attributes for the set of functions which are currently in the {\bf OX, OY, and} and {\bf OZ} fields. To change attributes of another set first choose it with the scroll bar attached to the fields. The current and total numbers of the sets are indicated in the left bottom corner of the function group. \par {\sb 0 \li 1 \bf Set\+attributes\+of}\>allows you to choose attributes of what graphic element you will set. Choose one of the following: {\bf points}, \jump kh_Path {paths}, \jump kh_Trace {traces}, or \jump kh_Shift {shifts}. \par {\sb 0 \li 2 \bf Join}\>allows you to choose the style of lines which join points. One of the following can be chosen: {\bf No,} {\bf Solid,} or {\bf Dotted.}\par {\sb 0 \li 2 \bf Width}\>allows you to choose the width of points or lines. If this value is zero, the width is one pixel and fast but possibly not accurate device-dependent drawing algorithm will be used. \par {\sb 0 \li 2 \bf Change\+Color}\>opens the {\bf Standard Color Dialog Box} which you use to select the color for points or lines.\par {\bf Options}\>allows you to set additional options.\par {\sb 0 \li 1 \bf Clear\+before\+...}\>tells {CONTENT} to clear window's Graphic area before drawing each point computed by a generator.\par {\bf Sample\+of\+window}\>shows how curves will be drawn with current settings.\par {\bf Buttons}\>\par {\sb 0 \li 1 \bf Ok}\>remembers the graphic attributes you have set and closes the dialog box.\par {\sb 0 \li 1 \bf Cancel}\>closes the dialog box without changing the settings.\par {\sb 0 \li 1 \bf Help}\>opens the \jump kh_HelpWin {help window} which displays the description of this dialog box.\par } \end \% kh_3DWinCurrentAttr \% ********** Curve's graphics attributes dialog box ********** \topic kh_3DWinCurveAttr {curve attributes dialog box for 3D graphic window} The {\bf curve's attributes dialog box} is where you change various graphic attributes of the \jump kh_CurCurve {current curve.}\par You display the dialog box by the \jump kh_3DWin {Attributes|Curve} command in a 3D graphic window. Note that the settings affect only the window from which you perform the command.\par The following are components in the dialog box. They are listed in accordance with their positions in the box, from the left to the right and from the top to the bottom.\par {\desc 16 {\bf Component\>What it does or is used for}\par {\bf Curve\+segment}\>is a switch you use to choose a segment of the current curve whose graphics attributes you want to change A {\bf segment} is defined as a part of a curve between two successive \jump kh_SpecialPoint {special points} (for the purpose of this definition the first and the last points of a curve are considered as special points).\par {\bf From\+point}\>displays the \jump kh_PointType {type} of the first point of the current segment.\par {\bf To\+point}\>displays the type of the last point of the current segment.\par {\bf Attributes\+set}\>is a switch you use to choose which set of attributes of the given segment you want to change. There is one set of attributes for each set of functions you have specified in the \jump kh_3DWinCurrentAttr {current attributes} dialog box. There is the only set of attributes if you have one set of functions. Note that all settings below the switch are for the chosen attributes set of the chosen segment of the curve.\par {\sb 0 \li 1 \bf Add\+attributes}\>this button creates a new set of attributes for the chosen segment. Use it if you have specified new set of functions in the window after the curve was computed. This allows you to set attributes for the new functions.\par {\sb 0 \li 1 \bf Delete\+attributes}\>this button deletes the chosen set of attributes of the chosen segment. Use it if you have deleted a pair of functions in the window after the curve was computed. Be careful to choose those set of attribute which corresponds to the deleted functions.\par {\bf Graphic\+attributes}\>allows you to change graphic attributes. Note that only attributes from the chosen set of the chosen segment are available. \par {\sb 0 \li 1 \bf Set\+attributes\+of}\>allows you to choose attributes of what graphic element you will change. Choose one of the following: {\bf points}, \jump kh_Path {paths}, or \jump kh_Trace {traces}. \par {\sb 0 \li 2 \bf Join}\>allows you to change the style of lines which join points. One of the following can be chosen: {\bf No,} {\bf Solid,} or {\bf Dotted.}\par {\sb 0 \li 2 \bf Width}\>allows you to change the width of points or lines. If this value is zero, the width is one pixel and fast but possibly not accurate device-dependent drawing algorithm will be used. \par {\sb 0 \li 2 \bf Change\+Color}\>opens the {\bf Standard Color Dialog Box} which you use to change the color of points or lines.\par {\bf Buttons}\>\par {\sb 0 \li 1 \bf Ok}\>remembers the changes you have made and closes the dialog box.\par {\sb 0 \li 1 \bf Cancel}\>closes the dialog box without changing the attributes.\par {\sb 0 \li 1 \bf Help}\>opens the \jump kh_HelpWin {help window} which displays the description of this dialog box.\par } \end \% kh_3DWinCurveAttr