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

- All Categories 139.7K
- 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 159
- 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 145
- Android 19
- 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 865
- 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.

Shkaboinka
Posts: **79**Member

in 3D Graphics

I need to know how to find the line perendicular to a plane in 3D space. More specifically, I need to do this: I need find point D, where line AD is perpendiculer to plane ABC, and the distance from A to D is 1 (A,B,C, and D are all 3D {x,y,z} points).

The point of this is that when D is further away than A, the plane will not be drawn because it is not facing the "camera". I am using MY OWN 3D graphics routines through 2D graphics provided in Java; don't tell me how I should be using something to do this for me like OpenGL; I KNOW it's all much better...I just want to do this on my own.

The point of this is that when D is further away than A, the plane will not be drawn because it is not facing the "camera". I am using MY OWN 3D graphics routines through 2D graphics provided in Java; don't tell me how I should be using something to do this for me like OpenGL; I KNOW it's all much better...I just want to do this on my own.

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

22Member: I need to know how to find the line perendicular to a plane in 3D space. More specifically, I need to do this: I need find point D, where line AD is perpendiculer to plane ABC, and the distance from A to D is 1 (A,B,C, and D are all 3D {x,y,z} points).

:

: The point of this is that when D is further away than A, the plane will not be drawn because it is not facing the "camera". I am using MY OWN 3D graphics routines through 2D graphics provided in Java; don't tell me how I should be using something to do this for me like OpenGL; I KNOW it's all much better...I just want to do this on my own.

:

Well, you can always find a vector normal (perpendicular) to a plane by taking the cross product of two vectors lying within the plane...

Let me explain...

You can always create two vectors lying within a plane if you know three points on the plane. Taking A as our base point, the vector from point A to point B would be

, and the vector from point A to point C would be (just subtract the points). Then take the cross product of those two vectors (I'll call them P and Q respectively), which can be defined as the determinant of the matrix

[code]

|- -|

| i j k |

| Px Py Pz |

| Qx Qy Qz |

|_ _|

[/code]

where i = <1,0,0>, j = <0,1,0>, and k = <0,0,1>. The result will be a new vector that is perpendicular to the plane. Then all you have to do is normalize the new vector (divide each component by the vector's magnitude), and add it to your base point, A. This will give you a new point D a distance 1 from your plane along a line normal to the plane.

Q.E.D. (well, not really, but you know what I mean)

Now test the distance of point D to see if is further away than point A.

You could also use the dot product to find the angle between a vector from the camera to the base point and your normal vector. If the angle is < 90, the plane is facing away from the camera.

Note: you do have to be careful about which vector is placed in what row in the matrix, because reversing the order will still give you a vector normal to the plane, but it will be facing in the opposite direction. So you still have to figure out which vector to place in the second row to give you a vector. The vectors should be arranged in counter-clockwise order to get a normal facing you, and clockwise order to get a normal facing away.

Hope this helps!

Zaffire

P.S. Hey, how much math have you had? You should really take a linear algebra class or a course in vector mechanics.

- Spam

0 · Vote Down Vote Up ·