How to Draw a Circle Perpendicular to a Vector in 3D Space?

In summary, the conversation discusses the process of drawing a circle with a specified radius around a 3D vector for computer programming. One approach suggested is using the equation of a sphere centered at x,y,z and finding the relation between u and v to form a circle normal to a specified vector. Another approach involves finding two orthogonal vectors, u and v, using the cross-product and using parametric equations to create the circle. However, there may be some errors in the equations provided.
  • #1
DivergentSpectrum
149
15
i have a 3d vector, and i want to draw a circle with a specified radius around the vector (for computer programming)
so i have the location of the center of the circle(first point of the vector)
but i also want the circle to be at a right angle to the vector

my approach:
gif.gif

the equation of a sphere centered at x,y,z.
but i need to find the relation between u and v so that it forms a circle normal to some specified vector

please help thanks
 
Mathematics news on Phys.org
  • #2
That might be possible, but it looks complicated.

I would find two vectors u,v orthogonal to the specified vector (let's call it "n") and orthogonal to each other. This can be done with the cross-product. Afterwards you can combine them with sin and cos as in the 2-dimensional case.
 
  • #3
if a plane normal to a vector xn,yn,zn is given by
gif.gif

then i think i could replace the parametric sphere coordinates with the coordinates to the plane and solve
gif.gif

what i want out of this is the relation between u and v, but i can't figure out how to solve it
then once i have u and v in terms of a single t parameter i can center it at the correct point.

do you mean the u,v vectors as in the parameters? or something else?
 
  • #4
DivergentSpectrum said:
do you mean the u,v vectors as in the parameters?
Probably a bad choice of variable names in my post. I mean two vectors.
I don't like the sphere approach. It might be possible, but I don't see the solution there while I am sure the other method works.
 
  • #5
To "draw a circle normal to a vector" the first thing you need to do is find a plane normal to the vector. That's easy- if the plane is given by [tex]A\vec{i}+ B\vec{j}+ C\vec{k}[/tex] then any plane normal to it is of the form [tex]Ax+ By+ Cz= D[/tex] for some constant D. Finding D is another matter. A vector does not have a specified position in space.
 
  • #6
The center of the circle seems to be given as (x,y,z).
 
  • #8
We don't know either because you did not show what you did.
 
  • #9
Code:
            double theta = Math.Atan2(curly[i, j, k], curlx[i, j, k]);
            double phi = Math.Acos(curlz[i, j, k] / Math.Sqrt(curlx[i, j, k] * curlx[i, j, k] + curly[i, j, k] * curly[i, j, k] + curlz[i, j, k] * curlz[i, j, k]));
            double costheta = Math.Cos(theta);
            double sintheta = Math.Sin(theta);
            double cosphi = Math.Cos(phi);
            double sinphi = Math.Sin(phi);

            int l = 0;
            double t ;
            int nitert = 20;
            double dt = 2 * Math.PI / nitert;
            double[] xcircle = new double[nitert+1];
            double[] ycircle = new double[nitert+1];
            double[] zcircle = new double[nitert+1];
            circlepoints.Add(new Point3D(-size * sinphi / 25 + xcurrent, size * cosphi / 25+ ycurrent, zcurrent));
        
  while (l <= nitert)
            {
                t = l * dt;
                xcircle[l] = -size * Math.Cos(t) * sinphi / 25 + size * Math.Sin(t) * costheta * cosphi / 25 + xcurrent;
                ycircle[l] = size * Math.Cos(t) * cosphi / 25 + size * Math.Sin(t) * costheta * sinphi / 25 + ycurrent;
                zcircle[l] = -size * Math.Sin(t) * sintheta / 25+ zcurrent;
                circlepoints.Add(new Point3D(xcircle[l], ycircle[l], zcircle[l]));
                circlepoints.Add(new Point3D(xcircle[l], ycircle[l], zcircle[l]));

                l++;
            }

I always feel bad asking people to look over my code lol.

anyway curlx,curly,curlz is the normal vector(yes I am doing a stokes theorem program :D)
and xcurrent,ycurrent,zcurrent is the position vector.

size/25 is the radius of the circle.
 
  • #10
Hey, don't know if I understand completely but here is what I think (btw I am still getting used to using the latex math symbols here so I won't use them in this response)

Use the cross product (copied&pasted this one):
eq0006MP.gif


Here the vector is normal to the circle's surface in the positive Z direction. That is the crossproduct of r's x component and y component.
Vector = rx cross ry
 
  • #11
Continuation of my last post:

syms u v
>>R = [u 0 0; 0 u*cos(v) 0; 0 0 u*sin(v)]

R =

[ u, 0, 0]
[ 0, u*cos(v), 0]
[ 0, 0, u*sin(v)]

>> vector = cross(R(1,: ),R(2,: ) )

vector =

[ 0, 0, u^2*cos(v)]

*had to edit away the simily faces
 
Last edited:
  • #12
the wolfram site says:
While a 2D circle is parameterized by only three numbers (two for the center and one for the radius), in 3D six are needed. One set of parametric equations for the circle in 2D is given by
2.gif

for a circle of radius
3.gif
and center
4.gif
.
In 3D, a parametric equation is
5.gif
,
for a circle of radius
6.gif
, center
7.gif
, and normal vector
8.gif
(
9.gif
is the cross product). Here,
10.gif
is any unit vector perpendicular to
11.gif
. Since there are an infinite number of vectors perpendicular to
12.gif
, using a parametrized
13.gif
is helpful. If the orientation is specified by a zenith angle
14.gif
and azimuth
15.gif
, then
16.gif
,
17.gif
, and
18.gif
can have simple forms:
19.gif
,
20.gif
,
21.gif
.

but actually they made a mistake. here phi is the azimuth and theta is the zenith.
someone should probably tell them :rolleyes:
 

Related to How to Draw a Circle Perpendicular to a Vector in 3D Space?

1. What does it mean for a circle to be normal to a vector?

When a circle is said to be "normal" to a vector, it means that the circle is perpendicular to the vector at their point of intersection. In other words, the circle's tangent line at that point is perpendicular to the vector.

2. How can I determine if a circle is normal to a vector?

To determine if a circle is normal to a vector, you can use the dot product of the vector and the circle's radius vector (a vector that starts at the center of the circle and ends at a point on the circle's circumference). If the dot product is equal to zero, then the circle is normal to the vector.

3. Can a circle be normal to more than one vector?

Yes, a circle can be normal to multiple vectors. This occurs when the center of the circle lies on the line that is perpendicular to the vector and passes through the point of intersection.

4. What is the equation for a circle normal to a vector?

The general equation for a circle normal to a vector is (x-a)^2 + (y-b)^2 = r^2, where (a,b) is the center of the circle and r is the radius. However, the specific equation will vary depending on the given vector and its point of intersection with the circle.

5. What is the significance of a circle being normal to a vector?

A circle being normal to a vector has several applications in mathematics and physics. It is used in geometry to determine the intersection points of a line and a circle, and in physics to calculate the normal force acting on an object in circular motion. Additionally, the concept of a circle being normal to a vector is important in understanding curvature and tangential velocity in calculus.

Similar threads

  • General Math
Replies
3
Views
2K
Replies
3
Views
1K
Replies
1
Views
792
  • General Math
Replies
11
Views
1K
  • General Math
Replies
3
Views
2K
  • General Math
Replies
1
Views
2K
  • General Math
Replies
2
Views
8K
Replies
2
Views
1K
  • Linear and Abstract Algebra
Replies
3
Views
341
Back
Top