Re: cross product
- To: mathgroup at smc.vnet.net
- Subject: [mg35378] Re: [mg35367] cross product
- From: Garry Helzer <gah at math.umd.edu>
- Date: Wed, 10 Jul 2002 02:19:47 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
On Tuesday, July 9, 2002, at 06:50 AM, Umby wrote:
> Hi group,
>
> how can I achieve the CrossProduct of two 4*1 vectors (in homogeneous
> coordinate)?
> For instance: CrossProduct[{a,b,c,1},{d,e,f,1}]
> Thanks in advance
>
> Umby
You don't want to do that. Homogeneous coordinates represent points
(little dots) not vectors (little arrows). Homogeneous coordinates do
not obey the algebraic/geometric laws that vectors do. So what is it
that you really want to do?
The cross product is usually used to find a direction perpendicular to a
piece of a plane. In the homogeneous context directions are handled by
ideal points--points of the form {a,b,c,0}. Suppose that you have a
piece of a surface and you want a perpendicular direction. To have a
piece of a surface you must have at least 3 points: a triangle say.
Now, to keep from confusing myself, I am going to change notation. When
writing homogeneous coordinates I will put the "extra" coordinate
first--{1,a,b,c} instead of {a,b,c,1}. Directions are given by
coordinates of the form {0,a,b,c}.
Let the 3-by-4 matrix M have the homogeneous coordinate vectors of the
three points of your triangle for rows. Suppose that Minors[M,3] is
{{a,b,c,d}}. A direction perpendicular to your triangle is {0,c,-b,a}.
Given the directions of some light sources you could now use this
direction to compute a color for your triangle.
Remarks:
1. The homogeneous coordinates of the points need not begin with 1.
2. The list {a,b,c,d} gives the coordinates of the trivector
representing the plane.
3. The computation uses only integer arithmetic.
Garry Helzer
Department of Mathematics
University of Maryland
1303 Math Bldg
College Park, MD 20742-4015