Hi,

I've asked this question a few times but still can't understand the answers. I need a really dumbed down answer.

I have two points in 3D space:

Point1: (x,y,z)
Point2: (x,y,z)

I want to draw an arrow from point1 to point2. At point2 I'd like to draw a pyramid cap to mimic an arrow head. So I need to know how to generate an additional 4 points that are equally distributed around point 2 - if I connect them all to point 2 it will look like a pyramid whose tip is point2.

Can someone please tell me how to fill this in then (the four generated base points of the pyramid arrow head):

base_pt_0 = (x,y,z);
base_pt_1 = (x,y,z);
base_pt_2 = (x,y,z);
base_pt_3 = (x,y,z);

If it is any easier - I could also draw a cone shape for the arrow head - i guess just like 16 points or so evenely distributed around point 2.

Thanks
###### Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Commented:
Did you not get the answer from the previous question?
It looks like you also want to move the points around point2 a little bit back toward point1, so add (point2-point1)*(1-(arrowhead length)/(line length)) to each of those points.
to add intermediate points, you can use
(Point1-Point2) × (Point0-Point2)  * sin(45º)
+
(Point1-Point2) × (PointA-Point2) * cos(45º)
for every 22.5º
0
Author Commented:
What is point0 again?
0
Commented:
point0 can be any point not along the line through point1 and point2
perpendicular0 = (Point1-Point2) × (Point0-Point2)
perpendicular2 = perpendicular0 × (Point1-Point2) / |Point1-Point2|
pontx = point2+(point1-point2)*(length of cone)/|Point1-Point2| + sin(x)*perpendicular1+cos(x)*perpendicular2
0
Author Commented:
Ok so I get these 3 perpendiculars -

then you show me that I will get this 'pointx' -

do you mean that pointx is just any point that can be generated that will be at the base of the head (I just substitute in for 'x' a number between 0 - 360, depending on how many points I want in the base)?

Thanks
0
Commented:
yes
0
Author Commented:
Hi ozo,

I finally got a chance to give it a try. A few questions:

1)   perpendicular1 = perpendicular0*(radius of cone)/|perpendicular0|
what do I do here when a component of perpendicular0 is zero?

2) perpendicular2 = perpendicular0 × (Point1-Point2) / |Point1-Point2|
here if I put parenthesis in the equation it should be:

perpendicular2 = (perpendicular0 × (Point1-Point2)) / |Point1-Point2|

I don't know if cross product has a higher precedence than division.

Thanks
0
Commented:
|perpendicular0| will be 0 only if Point0, Point1, and Point2 are all on the same line
which is why Point0 can't be on that line.
individual components of perpendicular0 can be 0, in which case the corresponding component of perpendicular1 will be 0

It doesn't matter where you put the parenthesis, the result will be the same.
0
Author Commented:
ok dumb question, but is there some guaranteed way of picking a point not coliear to point 1 and 2?
0
Commented:
At least one of Point1 + (1,0,0) and Point1+(0,1,0)
will not be colinear to point 1 and 2.
0
Commented:
If you take any three non-colinear points, at least one will not be not colinear to point 1 and 2
0
Author Commented:
Hi ozo,

I just picked two points in a real stuation for my arrow tail and head, they are:

Point1(0, 159, 83);
Point2(0, -0.3, 83);

Now I'm just manually choosing a non collinear point for poin0 of:

Point0(10, 10, 0);

but still it gives me zero in the components with this formula:

perpendicular0 = (Point1-Point2) × (Point0-Point2)

perpendicular0 will turn out to be:

perpendicular0 = (13320, 0, 1600)

am I doing something wrong?

Thanks
0
Commented:
I get (13221.9, 0, 1593)
but that's close enough
A zero component is not a problem as long as they are not all zero
0

Experts Exchange Solution brought to you by

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

###### It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Game Programming

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.