This file is indexed.

/usr/share/doc/ctsim-doc/html/ctsim115.html is in ctsim-doc 5.2.0-1.1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 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
<HTML>
<head><title>Phantom Processing</title></head>

<BODY BGCOLOR=#FFFFFF>
<A NAME="phantomprocessing"></A><CENTER>
<A HREF="ctsim_contents.html">Contents</A> <A HREF="ctsim114.html#algorihms">Up</A> <A HREF="ctsim114.html#algorihms">&lt;&lt;</A> <A HREF="ctsim116.html#backgroundprocessing">&gt;&gt;</A> </CENTER><HR>

<H2>Phantom Processing</H2>

<B>Key Concepts</B><BR>

<TT>Geometric transformations</TT><BR>

<TT>Matrix algebra</TT><BR>
<P>
Phantom objects are processed in two different ways: rasterization
and projections. <TT>CTSim</TT> uses optimized techniques to perform
those procedures.<P>
The primary tool used to optimize these processes is
<EM>Geometric transformations</EM>. For every primitive
<A HREF="ctsim8.html#phantomelements">phantom element</A>, a standardized
configuration is defined. This standard configuration is used to
speed the process of collecting projections.<P>
In general, to transform an object into the standard
configuration, the following sequence of transformations occur.
When this sequence is performed, the coordinates are termed the
<EM>normalized phantom element</EM> coordinates.<P>
<UL>

<LI> Scaling by the inverse of its size, that is usually
scaling by <TT>(1/dx,1/dy)</TT>.
<LI> Translating the object to the origin, that is usually translation by
<TT>(-cx,-cy)</TT>.
<LI> Rotating the object by <TT>-r</TT>.
</UL>
<P>
These steps can by combined into a single matrix multiplication
which involves only 4 multiplications and 6 additions to transform
both <TT>x</TT> and <TT>y</TT> coordinates. This matrix is
precalculated and stored when the phantom is created. Similarly,
the inverse of the matrix is precalculated and store to perform
the inverse of this transformation.<P>
As an example of this technique, consider the problem of finding
the length of an arbitrary line that may intersect an arbitary
ellipse. Define the endpoints of the line by <TT>(x1,y1)</TT> and
<TT>(x2,y2)</TT>.<P>
<OL>

<LI> First, transform the coordinates into the normalized
phantom element coordinates. At this point, the ellipse will have
been transformed into a unit circle centered at <TT>(0,0)</TT>.
<LI> Translate the
coordinates by <TT>(-x1,-y2)</TT>. The line now has the endpoint
centered at the origin. The ellipse will now have its center at
<TT>(-x1,-y1)</TT>.
<LI> Rotate the coordinates by the negative of angle of the line
with respect to the x-axis.
</OL>
<P>
At this point the line will now lie along the positive x-axis with
one end at <TT>(0,0)</TT>. The circle will be rotated around the
origin as well. At this point, it is fairly trivial to calculate
the length of the intersection of the line with the unit circle.
For example, if the <TT>y</TT> coordinate for the center of the
circle is greater than <TT>1</TT> or less than <TT>-1</TT>, then
we know that the unit circle doesn't intersect the line at all and
stop further processing. Otherwise, the endpoints of the
intersection of the line with the unit circle is a simple
calculation.<P>
Those new, intersected endpoints are then inverse transformed by
reverse of the above transformation sequence. After the inverse
translation, the transformed endpoints will be the endpoints of
the line that intersect the actual ellipse prior to any
transformations.<P>
Though this sequence of events is somewhat complex, it is quite
fast since the multiple transformations can be combined into a
single matrix multiplication. Further, this technique is amendable
to rapidly calculating the intersection of a line with any of the
phantom elements that <TT>CTSim</TT> supports.<P>

</FONT></BODY></HTML>