Saturday, September 22, 2007

HP-35s Euclid Implementation - IV : Normalizing a line definition

The following program adjust second point (in register B) so that the line segment defining the line entered using the program L is of unit length (problem 4 of the requirements).

It then becomes easy to produce coordinates of a given distance from the defining segments first point (in register A) using program E since the distance then is the given parameter.

Stack Input/Output:

This program does not take any stack register input, stack register and LASTX register is left unchanged by this program.


A: First point defining the line, populated by the L program.
B: Second point defining the line, populated by the L program.
B: Adjust so line segment becomes of unit length.
N001 LBL N
N002 XEQ U001
N003 RCL A
N004 eq 1/ABS(B-A)
N005 STOx A
N006 STOx B
N007 RDN
N008 RCL A
N009 -
N010 STO+ A
N011 STO+ B
N012 XEQ U029
N013 RTN

Terms of use.

Mnemonic: N for Normal since normalize the vector B-A.

Since this program does not take any input from the stack registers but messes up the stack and LASTX registers it uses the U program to hide this from the end user; line 2 saves stack and LASTX registers and line 14 restores the working registers.

Change history:

20070929:2035UTC : Change because of fix in U program.
20071001:2040UTC : Do no longer recompute implicit equation of 2D line (used to check flag 2) since program L now stores the normalized implicit equation.

No comments: