>>  <<  Ndx  Usr  Pri  Phr  Dic  Rel  Voc  !:  wd  Help  Phrases

Geometry

We begin with some simple functions (Length, Area, Volume) of various figures (rectangle, box, circle, cone, sphere, pyramid) applied to a length or list of lengths. For example:

m0=: Ar=: */ Area of rectangle
m1=: Ab=: 2: * [:+/ ] *1&|. Area of box
m2=: Vb=: */ Volume of box
m3=: Lci=: 2: * o. Length (circumference) of circle (radius)
m4=: Aci=: [:o. ] ^ 2: Area of circle (r)
d5=: Aco=: o.@* Area of cone, excluding base (h r)
d6=: Vco=: 1r3p1"_ * ] * * Volume of cone (h r)
m7=: As=: 4p1"_ * ] ^ 2: Area of sphere (r)
m8=: Vs=: 4r3p1"_ * ] ^ 3: Volume of sphere (r)
m9=: L=: +/&.(*:"_)"1 Length of a vector
d10=: Lp=: [: L [ , [: L [: -: ] Length of edges of pyramid (h w,l)
d11=: Ap=: [:+/ ]* [:L"1 [,"0-:@] Area of pyramid, excluding base (h w,l)
d12=: Vp=: 1r3"_ * */@, Volume of pyramid
m13=: sp=: -:@(+/) Semi-perimeter
m14=: h=: [: %: [: */ sp - 0: , ] Heron's formula for area of triangle

For example:

   h 3 4 5
6

   h 51 52 53
1170

   h 2 2 2
1.73205

In treating coordinate geometry we will use a list of n elements to represent a point in n-space, and an m by n table to represent a polygon of m vertices. For example:

   p=: 3 1 [ q=: 4 1 [ r=: 5 9	Three points
   T=: p,q,:r			A triangle
   L=: +/&.(*:"_)"1		Length function
   L p
3.16228

   u=: 1&|.			Rotate up
   D=: u-]			Displacements
 
   ,.&.>(];u;D;L@D)T3		Displacements and lengths (of sides)
+---------------------+
¦3 1¦4 1¦ 1  0¦      1¦
¦4 1¦5 9¦ 1  8¦8.06226¦
¦5 9¦3 1¦_2 _8¦8.24621¦
+---------------------+

   line=: 3 1 4,:1 5 9	A line in 3-space
   (];-/;L@(-/);L) line	Line, disp, length, distances to ends
+------------------------------------+
¦3 1 4¦2 _4 _5¦6.7082¦5.09902 10.3441¦
¦1 5 9¦       ¦      ¦               ¦
+------------------------------------+

   T3=: ?.3 3$10		Random triangle in 3-space
   ,.&.>(];u;D;L@D) T3
+----------------------------+
¦1 7 4¦5 2 0¦ 4 _5 _4¦7.54983¦
¦5 2 0¦6 6 9¦ 1  4  9¦9.89949¦
¦6 6 9¦1 7 4¦_5  1 _5¦7.14143¦
+----------------------------+
m15 =: L=: +/&.(*:"_)"1 Length
m16=: D=: 1&|.-] Displacement
m17=: LS=: L"1@D Lengths of sides
m18=: S=: 1&o.@(*&1r180p1) Sine in degrees
m19=: C=: 2&o.@(*&1r180p1) Cosine in degrees
m20=: r=: (C,S),:(-@S,C) 2-dim rotation matrix in degrees
m21=: b=: <"1@(,"0/~) Table of boxed index pairs: do i 0 2
d22=: R=: (r@])`(b@[)`(=@i.@3:)} 3-dim rm: From axis 0 to 2 is 0 2 R a
d23=: mp=: +/ . * Matrix product
m24=: R3=: (2 0"_ R 0&{)mp(1 2"_ R
      1&{)mp(0 1"_ R 2&{)
R3 p,q,r is p-rotate from axis 2 to 1 on q-r from 1 to 2 on r-r from 0 to 1
m25=: Det=: -/ . * Determinant
m26=: Area=: [:Det ] ,. %@!@{:@$ Area of triangle
m27=: Vol=: Area f. Volume of simplex in n-space (fixed)
d28=: dsplitby=: ~:/@:*@:Vol@:
      (,"1 2)
Are points pairs (2 by n matrix) x separated by n by n simplex y?
m29=: Area2=: [: -: [: +/ 2: Det\ ] Area of polygon

Area yields the area of a triangle expressed as a 3 by 2 list of x-y coordinates:

   TT 
3 3
6 5
2 7

   Area TT
7

Area2 also yields the area of a triangle, expressed by a similar table, but with the top row repeated at the bottom:

   TT2
3 3
6 5
2 7
3 3

   Area2 TT2
7

It is more general, however, and will yield the area of arbitrary polygons:

   Polygon
 7 2
10 5
 6 8
 3 6
 4 3
 7 2

   Area2 Polygon
24.5 

>>  <<  Ndx  Usr  Pri  Phr  Dic  Rel  Voc  !:  wd  Help  Phrases