It looks like you're new here. If you want to get involved, click one of these buttons!

- All Categories 139.8K
- Programming Languages 104K
- Assembler Developer 6.2K
- Basic 1.8K
- C and C++ 39.7K
- C# 4.2K
- Delphi and Kylix 7.9K
- Haskell 3
- Java 9.5K
- Pascal 4.1K
- Perl 1.3K
- PHP 1.9K
- Python 500
- Ruby 47
- VB.NET 4.3K
- VBA 1.6K
- Visual Basic 20.8K
- Game programming 2.6K
- Console programming 308
- DirectX Game dev 87
- Minecraft 1
- Newbie Game Programmers 107
- Oculus Rift 2
- Applications 8.8K
- Computer Graphics 1.8K
- Computer Hardware 720
- Database & SQL 3.4K
- Electronics development 517
- Matlab 1.6K
- Sound & Music 625
- XML Development 253
- Classifieds 3.2K
- Co-operative Projects 184
- For sale 160
- FreeLance Software City 188
- Jobs Available 1.9K
- Jobs Wanted 597
- Wanted 192
- Microsoft .NET 2.8K
- ASP.NET 1.7K
- .NET General 1.1K
- Miscellaneous 2.8K
- Join the Team 2
- User Profiles 1
- Comments on this site 351
- Computer Emulators 54
- General programming 1.7K
- New programming languages 114
- Off topic board 590
- Mobile & Wireless 146
- Android 20
- Palm Pilot 124
- Multimedia 334
- Demo programming 151
- MP3 programming 183
- Bash scripts 0
- Cloud Computing 10
- FreeBSD 52
- LINUX programming 1.7K
- MS-DOS 361
- Shell scripting 0
- Windows CE & Pocket PC 317
- Windows programming 4.1K
- Software Development 870
- Algorithms 400
- Object Orientation 67
- Project Management 80
- Quality & Testing 87
- Security 230
- WEB-Development 7.3K
- Active Server Pages 1.8K
- AJAX 61
- Bootstrap Themes 1
- CGI Development 55
- ColdFusion 19
- Flash development 221
- HTML & WEB-Design 1.4K
- Internet Development 1.3K
- JavaScript 2.2K
- JQuery 33
- WEB Servers 275
- WEB-Services / SOAP 100

We have migrated to a new platform! Please note that you will need to reset your password to log in (your credentials are still in-tact though). Please contact lee@programmersheaven.com if you have questions.

Tweets by @pheaven
Welcome to the new platform of Programmer's Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use its exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

Whiteout
Posts: **1**Member

in 3D Graphics

Hi,

I am trying to project a point x in 3D Space onto a point x' on the surface of a cone. x' should be the point on the cone's surface closest to the original point x such that the normalized vector x-x' is the cone's surface normal in the point x'.

The Cone is parameterize in two distinct ways...

(1) - the cone's apex a e R

I am trying to project a point x in 3D Space onto a point x' on the surface of a cone. x' should be the point on the cone's surface closest to the original point x such that the normalized vector x-x' is the cone's surface normal in the point x'.

The Cone is parameterize in two distinct ways...

(1) - the cone's apex a e R

About & Contact / Terms of use / Privacy statement / Publisher: Lars Hagelin

Programmers Heaven articles / Programmers Heaven files / Programmers Heaven uploaded content / Programmers Heaven C Sharp ebook / Operated by CommunityHeaven LLC

© 1997-2013 Programmersheaven.com - All rights reserved.

## Comments

675MemberSimplify the problem. For example, you could rotate the whole space around such that the axis of the cone is the y axis. You could also transform so that the point x is on a plane like z=0. Don't forget this transformation because it will have to be reversed after you solve this simpler problem.

Look at that plane z=0. The cone's axis is on it along with the point x. The cone intersects the plane along 2 lines. Also, the closest point between x and the cone is on this plane too. In fact, the closest point between x and the cone is the same as the closest point between x and those lines.

Solve for the closest point on the plane. You can use basic linear algebra for this. The coordinates would be of the form (X,Y,0).

Now, perform the reverse of the earlier transformations on (X,Y,0) to get your point x prime.

I'm working on a ray tracer that uses a similar technique to make it easier to implement the scaling, translation, rotation... of shapes while each shape's ray tracing functions are implemented assuming it is centred on the origin, unscaled, and not rotated.

: Hi,

:

: I am trying to project a point x in 3D Space onto a point x' on the

: surface of a cone. x' should be the point on the cone's surface

: closest to the original point x such that the normalized vector x-x'

: is the cone's surface normal in the point x'.

:

: The Cone is parameterize in two distinct ways...

:

: (1) - the cone's apex a e R?

: - the cone's normal n e R?

: - the cone's opening semi-angle alpha

:

: (2) - a point p e R? on the cone's axis but not the apex

: - a normal n e R? pointing from p towards the axis

: - the ortohgonal distance s from from p to the cone's surface

: - the opening semi-angle alpha

:

: I have thought quite a lot about this problem but have not come up

: with a satisfying result. Does anybody know a solution and is

: willing to help out?

:

: Thanks a lot...

:

- Spam

0 · Vote Down Vote Up ·