This file is indexed.

/usr/share/axiom-20120501/input/antoine.input is in axiom-test 20120501-8.

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
 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
)set break resume
)spool antoine.output
)set message test on
)set message auto off
)clear all
--S 1 of 11
)set expose add con DenavitHartenbergMatrix
--R 
--I   DenavitHartenbergMatrix is now explicitly exposed in frame frame0 
--E 1
--S 2 of 11
tri2tri(t1: List Point DoubleFloat, t2: List Point DoubleFloat): _
 DHMATRIX(DoubleFloat) ==
  n1 := triangleNormal(t1)
  n2 := triangleNormal(t2)
  tet2tet(concat(t1, n1), concat(t2, n2))
--R 
--R   Function declaration tri2tri : (List(Point(DoubleFloat)),List(Point(
--R      DoubleFloat))) -> DenavitHartenbergMatrix(DoubleFloat) has been 
--R      added to workspace.
--R                                                                   Type: Void
--E 2
--S 3 of 11
tet2tet(t1: List Point DoubleFloat, t2: List Point DoubleFloat): _
 DHMATRIX(DoubleFloat) ==
  m1 := makeColumnMatrix t1
  m2 := makeColumnMatrix t2
  m2 * inverse(m1)
--R 
--R   Function declaration tet2tet : (List(Point(DoubleFloat)),List(Point(
--R      DoubleFloat))) -> DenavitHartenbergMatrix(DoubleFloat) has been 
--R      added to workspace.
--R                                                                   Type: Void
--E 3
--S 4 of 11
makeColumnMatrix(t) ==
  m := new(4,4,0)$DHMATRIX(DoubleFloat)
  for x in t for i in 1..repeat
    for j in 1..3 repeat
      m(j,i) := x.j
    m(4,i) := 1
  m
--R 
--R                                                                   Type: Void
--E 4
--S 5 of 11
triangleNormal(t) ==
  a := triangleArea t
  p1 := t.2 - t.1
  p2 := t.3 - t.2
  c := cross(p1, p2)
  len := length(c)
  len = 0 => error "degenerate triangle!"
  c := (1/len)*c
  t.1 + sqrt(a) * c
--R 
--R                                                                   Type: Void
--E 5
--S 6 of 11
triangleArea t ==
  a := length(t.2 - t.1)
  b := length(t.3 - t.2)
  c := length(t.1 - t.3)
  s := (a+b+c)/2
  sqrt(s*(s-a)*(s-b)*(s-c))
--R 
--R                                                                   Type: Void
--E 6
--S 7 of 11
torusRot: DHMATRIX(DoubleFloat)
--R 
--R                                                                   Type: Void
--E 7
--S 8 of 11
drawRings(n) ==
  s := create3Space()$ThreeSpace DoubleFloat
  -- create an identity transformation
  dh:DHMATRIX(DoubleFloat) := identity()
  drawRingsInner(s, n, dh)
  makeViewport3D(s, "Antoine's Necklace")
--R 
--R                                                                   Type: Void
--E 8
--S 9 of 11
drawRingsInner(s, n, dh) ==
  n = 0 =>
    drawRing(s, dh)
    void()
  t := 0.0@DoubleFloat             -- the current angle around the ring
  p := 0.0@DoubleFloat             -- the angle of the subring from the plane
  tr := 1.0@DoubleFloat            -- the amount to translate the subring
  inc := 0.1@DoubleFloat           -- translation increment
  -- subdivide the ring into 10 linked rings
  for i in 1..10 repeat
    tr := tr + inc
    inc := -inc
    dh' := dh * rotatez(t) * translate(tr, 0.0@DoubleFloat, 0.0@DoubleFloat) *
           rotatey(p) * scale(0.35@DoubleFloat, 0.48@DoubleFloat, 0.4@DoubleFloat)
    drawRingsInner(s, n-1, dh')
    t := t + 36.0@DoubleFloat
    p := p + 90.0@DoubleFloat
  void()
--R 
--R                                                                   Type: Void
--E 9
--S 10 of 11
drawRing(s, dh) ==
  free torusRot
  torusRot := dh
  makeObject(torus, 0..2*%pi, 0..2*%pi, var1Steps == 6, space == s,
             var2Steps == 15)
--R 
--R                                                                   Type: Void
--E 10
--S 11 of 11
torus(u ,v) ==
  cu := cos(u)/6
  torusRot * point [(1+cu)*cos(v), (1+cu)*sin(v), (sin u)/6]
--R 
--R                                                                   Type: Void
--E 11
)spool
)lisp (bye)