Alan,
Do you have Terry's routine?
;|
Here is a TRI function that I wrote last year for calculating the sides and
angles of right and oblique triangles. The function is fairly easy to use. It
has six arguments: Side s1, Side s2, Side s3, Angle a, Angle b, and Angle c.
Angles are in radians. It returns a 1 based list so you can use the ‘nth’
function to retrieve your results. To display the text help information, just
type (tri ? ? ? ? ? ?) on the command line as follows:
Note: This displays better using a courier or mono-spaced font.
Command: (tri ? ? ? ? ? ?)
tri error: (tri nil nil nil nil nil nil)
Only 2 or 3 valid arguments can be passed to tri function.
tri - Calculates the sides and angles of a triangle
Arguments: 6 |\ /\
s1 = Side s1 |a\ /a \
s2 = Side s2 | \ / \
s3 = Side s3 s2 | \ s3 s2 / \ s3
a = Angle a radians | \ / \
b = Angle b radians |c___b\ /c________b\
c = Angle c radians s1 s1
Syntax example: (tri 3 ? ? 0.643501 ? ?);where ? = nil
Returns: (list nil 3.0 4.0 5.0 0.643501 0.927295 1.5708)
Note: For right triangles only supply the argument values for 2 sides,
or 1 side and 1 angle. Use ? or nil for the Angle c argument value.
For oblique triangles only supply argument values for 3 sides,
or 2 sides and 1 angle, or 1 side and 2 angles.
|;
;-------------------------------------------------------------------------------
; tri - Calculates the sides and angles of a triangle
; Arguments: 6 | /\
; s1 = Side s1 |\ /a \
; s2 = Side s2 |a\ / \
; s3 = Side s3 s2 | \ s3 s2 / \ s3
; a = Angle a radians | \ / \
; b = Angle b radians |c__b\ /c________b\
; c = Angle c radians s1 s1
; Syntax example: (tri 3 ? ? 0.643501 ? ?);where ? = nil
; Returns: (list nil 3.0 4.0 5.0 0.643501 0.927295 1.5708);nth 1 based list
; Note: For right triangles only supply the argument values for 2 sides, or
; 1 side and 1 angle. Use ? or nil for the Angle c argument value. For oblique
; triangles only supply argument values for 3 sides, or 2 sides and 1 angle,
; or 1 side and 2 angles.
; Programming example usages:
; (setq Side2 (nth 2 (tri 3 ? ? 0.643501 ? ?))) = 4.0
; (setq AngleB (nth 5 (tri 3 ? ? 0.643501 ? ?))) = 0.927295