# The Pleasures of 'Perp Dot' Products in Sagemath

Francis S. Hill, Jr. has an vector operation he calls a-Perp. It is defined as the vector perpendicular to a that is rotated 90° counterclockwise (Hill 1994:138). Wolfram also has a page on the concept here. Similar to the Normal vector, but not quite.

I wonder if there's a default Sage function, or some handy way, to do this?

Say I have vector a

a = vector(QQ, [3, 4])


and I want to get

a_Perp = vector(QQ, [-4, 3])


Hill, F. S. Jr. "The Pleasures of 'Perp Dot' Products." Ch. II.5 in Graphics Gems IV (Ed. P. S. Heckbert). San Diego: Academic Press, pp. 138-148, 1994.

edit retag close merge delete

Sort by » oldest newest most voted

Alternatively, you can use the rotation matrix.

a = vector(QQ, [3, 4])
m=matrix(QQ,[[0,-1],[1,0]])
a_perp=m*a

more

I prefer this solution as it seems most flexible to me. Please chime in if if you have comments. I'm eager to learn.

( 2016-07-25 18:25:35 +0200 )edit

There is no such function defined in Sage. Yet, you can write it as:

sage: a_perp = vector([-a[1], a[0]])
sage: a_perp
(-4, 3)


If you think this function is useful, I urge you to add it (as well as maybe "perp-dot products") into Sage by creating a ticket on trac.sagemath.org.

more

( 2016-07-25 18:23:10 +0200 )edit